R语言文本挖掘之jieba分词与wordcloud展现

时间:2021-10-18 23:47:39

引言

由于语言的特殊性,中文在进行文本挖掘时需要进行分词,R中对中文分词支持较好的有jiebaR包(快速指南)和李键大哥的RWordseg包,从自己使用情况来看,jiebaR分词的效果要更好一些,本文就使用jiebaR包进行中文分词和去除停止词,再构建词频统计表,最后利用RWordseg进行词云可视化展现。



1.中文分词

1.1包加载与引擎设置

首先我们安装并加载jiebaR包,现在jiebaR直接可以在CRAN里找到并进行安装了。

加载包之后,我们需要设置jiebaR的分词引擎,默认引擎似乎已经把各参数安排的很不错了,在这我们设置默认分词引擎。

接着,我们找一篇习大大的讲话作为我们的分词内容,这是习大大在十八届*纪委五次全会上发表的讲话,当然你可以找一些其他素材,分析习大大讲话可以把握习大大的说话特点和内容中心,如果进一步分析,可以得到很多好玩的东西。

install.packages("jiebaR")#安装
library(jiebaR)#加载包
cutter=worker()#设置分词引擎
content="这是内容,大家自己复制文章就行,这里就不展示了"
segWords<-segment(content,cutter)#对文本进行分词处理

1.2去除停止词、数字和英文

进行分词后,词语中会包括一些咱们生活中常用的停止词,比如“的”,“好”等,还会夹带一些无用的数字和英文字符,我们需要将这些东西给去除。

jiebaR提供了一个去除停止词的函数filter_segment(x,stopwords)参数x传入上面的分词结果就行。根据jiebaR的介绍,stopwords应该传入的是一个字符串向量,比如stopwords<-c(“的“,”得“,”好“),但是实际当中,停止词有好几千个,一个一个输入也不是办法,也不符合我们想要软件提高我们工作学习效率的初衷。在此,我构建了一个函数,构建停止词向量,大家可以参考一下。在构建之前,大家需要下载一个停止词典,百度搜索一下就能找到,要求就是停止词典为txt格式,并且一个词语一行。另外,需要注意一点,filter_segment这个函数对不支持一些符号停止词,如果读入会发生错误提示,所以在下载停止词典以后,需要打开该文档,用ctrl+f寻找下文档中是否存在特殊符号,然后将这些符号都删除。

f<-readLines('stopwords.txt')###读取停止词
stopwords<-c(NULL)
for(i in 1:length(f))
  {
  stopwords[i]<-f[i]
}
segWords<-filter_segment(segWords,stopwords)#去除中文停止词

去除停止词后,我们还需要去除文本中出现的数字和字符串,使用gsub()函数即可实现。

在实现过程中,发现分词以后还会产生一些空格,类如” “的东西。这里用到stringr包,这也是个处理文本的神器,目前才刚开始学。

segWords<-gsub("[0-9a-zA-Z]+?","",segWords)###去除数字和英文
library(stringr)#加载stringr包
segWords<-str_trim(segWords)#去除空格

2.构建词频表

在进行词云展现之前,我们需要对分词结果进行词频统计,可以使用table()函数,我选择使用plyr包count()函数,Hadley大神的包我都要好好学学。

library(plyr)
tableWord<-count(seg_words)##形成词频表,tableWord是数据框格式

3.词云展现

得到词频表之后,就进到我们最好一步,最有意思的环节,词云展现。不多说,直接上代码。

library(wordcloud)
windowsFonts(myFont=windowsFont("华文彩云")) ##使用华文彩云字体
wordcloud(tableWord[,1],tableWord[,2],random.order=F,col= rainbow(length(wordFreq)),family="myFont")##参数应该能看懂吧

R语言文本挖掘之jieba分词与wordcloud展现
看看图片 中心的文字,是不是习大大经常挂在嘴边的?是不是应该牢记心中?