技术贴│R语言分词、词频与词云
点击上方蓝字,关注:
公共管理定量方法学习 微信公众号
最近有个活,做一批文本分析;写完推送还有活干,本期开头就不做啥铺垫了[ 哈哈其实就是懒啦 ],直接上代码吧;对R语言还不是很了解的同学[ 不要问我为啥不写“童鞋”,我都不知道“打call”是啥意思…捂脸 ]可以戳微信号的“历史消息-R语言”菜单,那里我把写过的R语言帖子都做了整理。OK,下面开始我的表演:
“包”治百病
我真的超爱R语言,原因之一就是R有许多已经写好、“开箱即用”的程序包(有关R语言程序包的详细介绍,可以阅读我之前的推送“一起来学R│4-包的安装与调用”)可以直接拿来用;要知道,程序包减少了多少工作量呀。当然,其他语言也有类似的包,但是貌似没那么多、没那么细。这一期咱就要用jiebaR包、sqldf包和wordcloud2包完成中文文本的分词、词频统计与绘制词云图的工作。首先设置工作目录:可以通过R-Gui的“文件-改变工作目录”菜单完成,也可以通过以下代码;设置工作目录的意义是,你的所有数据和结果都在该目录下面,找文件时候就不会慌乱:
# 设置工作目录
setwd("D://text_analysis")
中文分词:jiebaR包
注意1:jiebaR包依赖于jiebaRD包,所以先要安装jiebaRD包;中文分词包还有Rwordseg包、tmcn包等,这里不做介绍,读者可以自行探索:
# 安装jiebaRD包并调用
install.packages("jiebaRD")
library(jiebaRD)
# 安装jiebaR包并调用
install.packages("jiebaR")
library(jiebaR)
# 分词
wk<-worker()
注意2:有些词语,比如“精准扶贫”在分词时可能会被分成“精准”和“扶贫”两个词,这就需要事先写一个txt文件,在里面自定义“精准扶贫”是一个词语;添加用户自定义词库也方便研究自己感兴趣的话题;另外,文本内容包含一些没有实际意义的虚词,比如“呀”、“嘛”等等;或者一些我们不想研究的内容。比如地名、符号、数字等等,这些都可以通过“停用词”表在分词时忽略掉,网上可以下载到许多停词表,比如“百度停词表”、“哈工大停词表”等等,你也可以根据需要自定义,其实就是写一个txt文本文件,和自定义词库一样;但是要注意,这些词库和停词表要保存为“UTF-8”编码格式:
# 添加用户自定义词库
wk<-worker(user="dictionary.txt")
# 删除停用词
wk<-worker(stop_word="ChineseStopWords.txt")
# 读取文本文件
wk[file.choose()]
注意3:这是会弹出一个对话框,让你选择要分析的文本:
词频统计:sqldf包
# 选择分词后的文件
f<-scan(file.choose(),sep="\n",what="",encoding="UTF-8")
df<-freq(wk[f])
df<-df[order(-df$freq),]
# 安装sqldf包
install.packages("sqldf")
library("sqldf")
# 提取前100项
df<-sqldf("select[char],[freq] from df where length([char])>1 limit 100")
df<-df[nchar(df$char)>1,]
# 查看前5行内容
head(df)
# 导出为csv文件
write.csv(df,file="word_freq.csv",row.names=FALSE)
绘制词云:wordcloud2包
注意4:输出一个网页文件,当鼠标移动到某个词时,会显示该词的词频:
# 安装wordcloud2包并调用
install.packages("wordcloud2")
library(wordcloud2)
# 绘制词云
wordcloud2(df)