R词频统计 词云

《流浪地球》最近挺火,一起分析下吧
R语言最常用的分词包为jiebaR和Rwordseg,jiebaR分词对名称识别更有优势,Rwordseg效率更高。
下载包:

install.packages('rJava')
install.packages('tm')
install.packages("Rwordseg", repos="http://R-Forge.R-project.org", type="source")
install.packages('wordcloud2')

注: install.packages(‘Rwordseg’)会报错
Warning in install.packages :
package ‘Rwordseg’ is not available (for R version 3.5.1)
Warning in install.packages :
unable to access index for repository http://www.stats.ox.ac.uk/pub/RWin/bin/windows/contrib/3.5:
cannot open URL ‘http://www.stats.ox.ac.uk/pub/RWin/bin/windows/contrib/3.5/PACKAGES

导入需要的包:

library(rJava)
library(Rwordseg)
library(wordcloud2)
library(NLP)
library(tm)

将《流浪地球》小说txt版本读入R:

wordbase<-read.csv("流浪地球.txt")
dim(wordbase)

清除小说中的各种标点符号,这里用到类似正则表达式的gsub()函数:

word_clean<-NULL
word_clean$msg <- gsub(pattern = " ", replacement ="", wordbase[,1])  #gsub是字符替换函数,去空格
word_clean$msg <- gsub("\t", "", word_clean$msg)#有时需要使用\\\t  
word_clean$msg <- gsub(",", "???", word_clean$msg)#文中有英文逗号会报错,所以用大写的“,”
word_clean$msg <- gsub("~|'", "", word_clean$msg)#替换了波浪号(~)和英文单引号('),它们之间用“|”符号隔开,表示或的关系
word_clean$msg <- gsub("\\\"", "", word_clean$msg)#替换所有的英文双引号("),因为双引号在R中有特殊含义,所以要使用三个斜杠(\\\)转义

将清理后的文本进行分词,此处手动加入不希望被拆散的词:

insertWords(c('刘慈欣','小星老师','灵儿','阿东','山彬加代子'))
seg_word<-segmentCN(as.character(word_clean))
head(seg_word)

segmentCN()函数将文本拆成了单个的词汇,将分词后的结果做频数统计:

words=unlist(lapply(X=seg_word, FUN=segmentCN))
word=lapply(X=seg_word, FUN=strsplit, " ") 
v=table(unlist(word))
v<-rev(sort(v))
d<-data.frame(word=names(v),cnt=v)
d=subset(d, nchar(as.character(d$word))>1)
d[1:30,]

“一个”,“啊”等词没有任何意义,但任何作品都会用到这些最常用的词,所以我们下一步需要去掉停用词stopwords(停用词文件CSDN搜索下就可以,注意空格,最后一行不要有回车)

write.table(v,file=" WanderingEarth.txt")
ssc=read.table("WanderingEarth.txt",header=TRUE)
class(ssc)
ssc[1:10,]
ssc=as.matrix(d)
stopwords=read.table("stopword.txt")
class(stopwords)
stopwords=as.vector(stopwords[,1])
wordResult=removeWords(ssc,stopwords)
word=which(wordResult[,2]=="")
wordResult=wordResult[-word,][,2:3]
wordResult[1:30,]

去掉停用词后,通过出现频数很高的词汇感受该小说特有的气息,我们终于可以画词云了

write.table(wordResult,'Wandering_earth.txt')
mydata<-read.table(' Wandering_earth.txt')
wordcloud2(mydata,size=1,fontFamily='宋体')

在这里插入图片描述

install.packages('devtools')
devtools::install_github("lchiffon/wordcloud2")
注:wordcloud2默认下载的画出来只有形状,不显示词语

使用lettercloud完成,letter=“R” 选择了字符 R 的形状,颜色随机亮色,背景黑色,大小选的是 2

letterCloud(mydata,word ="R", color = "random-light", wordSize = 2,size=2)

在这里插入图片描述
wordcloud2 函数支持输入自定义图片来作为词云的背景形状,需要注意的是自己定义图片的时候需要 “黑白” 的来作为词云的形状输入。

 wordcloud2(mydata, figPath = '20.png', size = 1.5,color = "black")

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值