其他

技术贴│R语言分词、词频与词云

2017-10-22 郑连虎 Tiger·Z 公共管理定量方法学习

点击上方蓝字,关注:

公共管理定量方法学习  微信公众号


最近有个活,做一批文本分析;写完推送还有活干,本期开头就不做啥铺垫了[ 哈哈其实就是懒啦 ],直接上代码吧;对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)

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存