应用定性数据分析包RQDA(Qualitative Data Analysis)和文挖掘框架包tm结合进行文本挖掘。
在对访谈内容或剧本、小说部分内容进行文本挖掘时,如果用不断的剪粘保存的方法非常繁琐而且容易漏掉一些内容。好在黄荣贵开发的RQDA包可以进行文档管理和内容编码及提取,大大方便了利用tm包进行文本挖掘,既提高了效率又提高了准确性,下面举一个小例子:
1、安装RQDA包、tm包和中文分词软件(分词软件见下面链接);
http://www.pinggu.org/bbs/thread-853290-1-1.html
2、装载RQDA包并建立一个新的工程项目;
3、输入相关文本文件;
4、进行编码和作标记;
5、双击想要提取的编码即可提取相关文本;
6、运行下面下载的程序进行文本提取、转换、分词、文本挖掘工作。
> gg <- RQDA2tm("记者" ,mf = FALSE)<br />
> gg<br />
A corpus with 55 text documents<br />
><br />
------------------------------------------------<br />
> ### 去掉多余空格 ####<br />
> reuters <- tm_map(gg, stripWhitespace)<br />
> reuters[[1]]<br />
这个也是临时改的?这儿应该放一个那样的桌子。<br />
><br />
------------------------------------------------<br />
> ## 全文搜索 ##<br />
> searchFullText(gg[[1]], "是临[时]?改")<br />
[1] TRUE<br />
><br />
------------------------------------------------<br />
> ### 查找以某字开头、结尾等的词条 ###<br />
> stemCompletion(gg, c("财", "政", "部"))<br />
财 政 部<br />
"财政部就是替政府花钱的" "" ""<br />
------------------------------------------------<br />
> ### 元数据管理 ###<br />
> DublinCore(reuters[[2]], "title") <- "建国60周年"<br />
> meta(reuters[[2]])<br />
Available meta data pairs are:<br />
Author :<br />
DateTimeStamp: 2010-07-15 02:06:27<br />
Description :<br />
Heading : 建国60周年<br />
ID : 2<br />
Language : eng<br />
Origin :<br />
><br />
------------------------------------------------<br />
> ### 创建词条-文件矩阵<br />
><br />
> dtm <- DocumentTermMatrix(reuters,control = list(minWordLength=2))##最短词两个字<br />
> inspect(dtm[1:2, 3:6])<br />
A document-term matrix (2 documents, 4 terms)<br />
Non-/sparse entries: 0/8<br />
Sparsity : 100%<br />
Maximal term length: 5<br />
Weighting : term frequency (tf)<br />
Terms<br />
Docs 10000 12 120 1966<br />
1 0 0 0 0<br />
2 0 0 0 0<br />
------------------------------------------------<br />
> ## 操作词条-文件矩阵 ##<br />
> ## 1、找出最少出现过3次的词条 ##<br />
> findFreqTerms(dtm, 3)<br />
[1] "政策"<br />
------------------------------------------------<br />
> ## 2、找出与"应该"相关度到少达0.6的词条 ###<br />
> findAssocs(dtm, "应该", 0.6)<br />
0.11 应该 桌子 临时<br />
1.0 1.0 1.0 0.7<br />
>
其他看上面的链接中的内容,其实生成词条-文件矩阵后还有许多工作可以做,比如用支持向量机进行文件分类、话题分类、根据话题用词频率分析作者所熟悉的行业等等……</p>
民网 >> 时政 >> 时政专题 >> 网友进言
http://politics.people.com.cn/GB/8198/138817/index.html
MetaID fname fid
1 0 公安部答复本网网友关于轻微交通违法处罚等4问题 1
2 0 公安部答复本网网友关于驾龄计算、异地购车上牌、老人驾车等8问题 2
3 0 公安部答复本网网友关于如何转回农业户口等3问题 3
4 0 公安部回复本网网友关于驾驶证年检被注销等3问题 4
5 0 公安部回复人民网网友关于异地缴交通罚款等4问题 5
6 0 公安部回复人民网网友关于身份证重号错号等4问题 6
一、出现5次以上的词条
----------------------------------------------------------------------------
1、根据编码“网友”分析:
gg <- RQDA2tm("网友" ,mf = TRUE)<br />
> findFreqTerms(dtm, 5)<br />
[1] "驾驶" "身份证" "问题"
</p>
----------------------------------------------------------------------------
2、根据编码“公安部回应”分析:
gg <- RQDA2tm("公安部回应" ,mf = TRUE)<br />
> findFreqTerms(dtm, 5)<br />
[1] "办理" "部门" "公安" "管理" "规定" "机动车" "机关" "交通"<br />
[9] "安全" "不得" "车辆" "道路" "驾驶" "驾驶证" "汽车" "实施"<br />
[17] "使用" "小型" "营运" "载货" "载客" "证明" "工作" "法律"<br />
[25] "公民" "居民" "社会" "身份" "身份证" "条件" "相关" "行为"<br />
[33] "证件" "措施" "违法" "应当" "公安部" "信息"
</p>
**************************************************************
二、找出与“驾驶”相关达70%以上的词条
----------------------------------------------------------------------------
1、根据编码“网友”分析:
> findAssocs(dtm, "驾驶", 0.7)<br />
驾驶 公安部 能否 规定 驾照 汽车<br />
1.00 0.87 0.80 0.79 0.78 0.72
----------------------------------------------------------------------------
2、根据编码“公安部回应”分析:</p>
> findAssocs(dtm, "驾驶", 0.7)<br />
驾驶 需要 期限 证明 小型 法律 使用 中型 驾驶证 依法 检查<br />
1.00 0.95 0.90 0.86 0.84 0.83 0.80 0.79 0.77 0.77 0.75<br />
有效 超过<br />
0.75 0.72
**************************************************************
MetaID fname fid
1 0 公安部答复本网网友关于轻微交通违法处罚等4问题 1
2 0 公安部答复本网网友关于驾龄计算、异地购车上牌、老人驾车等8问题 2
3 0 公安部答复本网网友关于如何转回农业户口等3问题 3
4 0 公安部回复本网网友关于驾驶证年检被注销等3问题 4
5 0 公安部回复人民网网友关于异地缴交通罚款等4问题 5
6 0 公安部回复人民网网友关于身份证重号错号等4问题 6</p>
对上面的数据改为将每条回应为研究对象进行文档聚类分析,结果如下:
综合上面两种聚类分析可以判断:公安部负责对人民网网民进行回应的工作人员有两名,因为每个人的写作用词习惯是比较固定的。