发展才是当代中国的第一要务
2017年03月09日 R 词云 教程 政府工作报告 行 添加评论最近政府工作报告很火,最近大数据也很火,最近数据挖掘还是很火,所以不跟跟风刷刷存在感似乎自己已经落伍了。
政府工作报告内容很长,要点很多,很重要,但是从文本数据的角度来看就是一堆字词的集合,所以可以使用常规的文本数据挖掘的方法进行分析。最最最常用的分析方法毫无疑问就是词频统计,所以我们就对最近11年的政府工作报告进行了词频统计。词频统计有效的基本假设是现在特别流行的一句话:“重要的事情要说三遍”,其实重要的事情应该一直说,以表示强调。当然如果你是学文学的,我相信你可以举出一百个例子告诉我很多时候说得最多的不是重要的事情,不过就大多数的情况而言,词频高的内容应该是文字中重要的部分似乎也是正确的(当然这里有一个例外,稍后讨论)。
实现词频统计需要两个功能,第一个功能是中文分词,这个可谓超级复杂。不过也有很多现成可用的分词库了,这里我使用jiebaR
进行分词。如果你问我为什么,那我坦白的告诉你因为jieba
分词的Python库是我知道的最优秀的中文分词库之一,所以在R下作分词第一个想法就是看看有没有jieba
的R版本,很庆幸的确是是有:https://jiebar.qinwf.com。基于对jieba
开发者的信任,我相信在R下jiebaR
也是最优秀的分词库之一:
“结巴”中文分词的 R 语言版本,支持四种分词模式,同时有词性标注,关键词提取,文本 Simhash 相似度比较等功能。项目使用了 Rcpp 和 CppJieba 进行开发。
特性
支持 Windows,Linux,Mac 操作系统。
通过 Rcpp 实现同时加载多个分词系统,可以分别使用不同的分词模式和词库。
支持多种分词模式、中文姓名识别、关键词提取、词性标注以及文本Simhash相似度比较等功能。
支持加载自定义用户词库,设置词频、词性。
同时支持简体中文、繁体中文分词。
支持自动判断编码模式。
较原“结巴”中文分词和其他 R 分词包速度快。
安装简单,无需复杂设置。
可以通过 Rpy2,jvmr 等被其他语言调用。
基于MIT协议。
这样就解决了第一个功能的需求问题。
第二个功能是词频统计,这个功能对于R这种专门做统计的软件就太简单了,table
这个基本属于前十大R的基本命令就能完成这个功能。当然如果你非要显得专业一点的话,tm
库里也确实提供了词频统计的函数termFreq
。本着就简不就繁的基本原则,我就默默的使用table
来统计词频了。
然后剩下的就是显示了,这个大家见多了,R里也有自己的实现,主要是基于base的wordcloud
库,和基于htmlwidge的wordcloud2
。既然我是在网站上展示,那我就默默的选用了wordcloud2
,所以整体的实现就很简单了,下面是除了数据导入之外的所有代码(不要问我为啥不用循环,Rmarkdown捕获循环输出的问题还没解决):
library(stringr)
mixseg <- worker()
out <- list()
wdcloud <- function (i) {
words <- mixseg[zf$X1[i]]
print(paste("WordCloud for", zf$Date[i]))
tbwords <- as.data.frame(table(words))
tbwords_trim <- arrange(
tbwords[!lapply(tbwords$words, str_length) == 1, ],
desc(Freq))
print(head(tbwords_trim,10))
wordcloud2(tbwords_trim[1:100, ],size=1)
}
wdcloud(1)
## [1] "WordCloud for 2007"
## words Freq
## 1 建设 113
## 2 发展 110
## 3 加强 89
## 4 推进 66
## 5 农村 64
## 6 工作 58
## 7 改革 53
## 8 加快 48
## 9 社会 46
## 10 亿元 44
wdcloud(2)
## [1] "WordCloud for 2008"
## words Freq
## 1 发展 134
## 2 建设 126
## 3 加强 107
## 4 经济 70
## 5 制度 69
## 6 改革 68
## 7 推进 62
## 8 完善 55
## 9 社会 54
## 10 坚持 53
wdcloud(3)
## [1] "WordCloud for 2009"
## words Freq
## 1 发展 131
## 2 建设 73
## 3 推进 73
## 4 经济 68
## 5 加强 66
## 6 改革 51
## 7 加快 43
## 8 促进 42
## 9 企业 42
## 10 提高 41
wdcloud(4)
## [1] "WordCloud for 2010"
## words Freq
## 1 发展 134
## 2 建设 84
## 3 经济 71
## 4 推进 68
## 5 加快 58
## 6 加强 56
## 7 改革 51
## 8 促进 47
## 9 农村 43
## 10 继续 41
wdcloud(5)
## [1] "WordCloud for 2011"
## words Freq
## 1 发展 157
## 2 建设 85
## 3 加强 76
## 4 经济 70
## 5 推进 68
## 6 加快 63
## 7 社会 57
## 8 提高 50
## 9 改革 47
## 10 坚持 39
wdcloud(6)
## [1] "WordCloud for 2012"
## words Freq
## 1 发展 146
## 2 加强 81
## 3 经济 70
## 4 建设 69
## 5 推进 61
## 6 改革 56
## 7 提高 52
## 8 社会 43
## 9 促进 41
## 10 实施 41
wdcloud(7)
## [1] "WordCloud for 2013"
## words Freq
## 1 发展 128
## 2 经济 69
## 3 建设 57
## 4 推进 45
## 5 改革 42
## 6 社会 41
## 7 增长 36
## 8 提高 35
## 9 我们 35
## 10 坚持 34
wdcloud(8)
## [1] "WordCloud for 2014"
## words Freq
## 1 发展 109
## 2 建设 62
## 3 推进 61
## 4 改革 59
## 5 经济 54
## 6 加强 47
## 7 政府 45
## 8 社会 44
## 9 制度 40
## 10 增长 35
wdcloud(9)
## [1] "WordCloud for 2015"
## words Freq
## 1 发展 119
## 2 建设 70
## 3 改革 64
## 4 经济 61
## 5 推进 50
## 6 加强 45
## 7 政府 42
## 8 社会 41
## 9 我们 40
## 10 创新 35
wdcloud(10)
## [1] "WordCloud for 2016"
## words Freq
## 1 发展 139
## 2 建设 68
## 3 经济 67
## 4 改革 62
## 5 推进 62
## 6 创新 56
## 7 加快 42
## 8 加强 41
## 9 政府 39
## 10 促进 37
wdcloud(11)
## [1] "WordCloud for 2017"
## words Freq
## 1 发展 115
## 2 改革 66
## 3 推进 63
## 4 建设 51
## 5 经济 51
## 6 加快 41
## 7 加强 40
## 8 推动 40
## 9 创新 35
## 10 企业 35
然后的分析就交给大家了,据我的观察我看到最多的就是发展了,所以就有了本文的题目。