R语言文本挖掘1——词云制作,基于Rwordseg包

折腾好Rwordseg在R语言3.2版本的安装后,马上就来尝鲜了,在参考牛人的意见后,成果如下图,马上有实战的感觉了:

 

首先讲一下词云的步骤:

1.读取文档,这个文档可以是网络数据,也可以是文本文档,对于网络数据,有很多爬虫方法,如RCurl包,Rweibo包等等等等,还可以自己去申请一些开放数据库的API,在此不赘述。文本文档读取也简单,直接用readLines函数读取。

2.识别前的准备,调入词典,开启人名识别,这步很重要,因为不同的文本有不同的关键词特征,没有对应的词典,就容易把关键词再次分词导致无法提取特征,Rwordseg支持搜狗的scel字典,很nice。不过这步跟第一步并没有优先性上的差异,个人喜好把这步放这里而已。

3.进行分词,一般都会调用nosymbol = T的参数

4.制作词语过滤,比如常见的停止词,还有一些自定义的规则,这个就看大家自己选择了。

5.过滤了停止词后,对分词结果进行词频统计并排序

6.将排序结果分别提取为词名和频率

7.绘制词云

具体代码如下,数据来源是随便找的一篇关于如何当猎头的百度知道,保存为txt:

library(Rwordseg)
library(wordcloud)

//读取文件
txt <- readLines("path")

//分词前准备
installDict("../dict/default.dic", "default") //默认的包
installDict("path", "dictname") //你自己下载或制作的字典
segment.options(isNameRecognition = TRUE)

//分词
txtseg <- segmentCN(txt, nosymbol = T)

//制作filter并过滤,这里可以加入自己制作的停止词词典
filter <- function(txt) {
txt <- gsub("[a-z]|\\.", "", txt)
txt <- gsub("\\d+号", "", txt)
txt <- gsub("\\d+", "", txt)
txt <- gsub("\\/", "", txt)
txt <- gsub("单元|对面|附近|路口|旁边|大道|方向|先生|女士|回复|需要|处理|投诉|资料|保密", "", words)
txt[nchar(txt) >= 2]
}

txtsf <- lapply(txtseg, filter)

//词频统计和排序
txtwc <- unlist(lapply(txtsf, length)) //词频计数
txtws <- sort(table(txtwc),decreasing = T) //排序

//提取词名和词频
txtws.name <- names(txtws)
txtws.freq <- txtws

//绘制词云
windows()
par(mar = c(0, 0, 3, 0), bg = "white")
wordcloud(sb.tel.w2.name,
sb.tel.w2.freq,
scale = c(5, 1),
min.freq = 1,
max.words = 100,
colors = c("#BEC0C2", "#049FF1", "#DA891E", "#3F813F", "#712704", "#A2B700"))

看起来简单的词云,其实做起来一点不简单,数据分析还要对业务了解,上边的词云还有很大改进的地方,不过一步步来,等我慢慢掌握了分析方法再继续改进咯。
————————————————
版权声明:本文为CSDN博主「wangzfox」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wangzfox/article/details/45803863

原文地址:https://www.cnblogs.com/purple5252/p/15704896.html