我做的是中文词云
总的步骤大致如下:
1. 分词
2. 除去停用词
3. 统计词频
3. 画出词云
主要代码如下:
setwd("E:\\自己学习")
library(jiebaR)
cutter=worker()
setWords<- scan('一个用户1',sep='\t',what='',encoding="UTF-8",quote = "") #读取需要分词文件
setWords<-segment(f,cutter)
使用的是结巴分词
结巴分词比较好用,分词速度较快
但是好像有时会因为编码问题,读取错误。(该问题)
f<-readLines('stopword.txt')###读取停止词
stopwords<-c(NULL)
for(i in 1:length(f))
{
stopwords[i]<-f[i]
}
setWord<-filter_segment(setWords,stopwords)#去除中文停止词
segWords<-gsub("[0-9a-zA-Z]+?","",setWord)###去除数字和英文
library(stringr)#加载stringr包
segWords<-str_trim(segWords)#去除空格
segWords <- segWords[nchar(segWords)>1] #去除字符长度小于2的词语
停用词释义:
停用词是指在信息检索中,为节省存储空间和提高在处理数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为StopWords(停用词)。这些停用词都是人工输入、非自动化生成的,生成后的停用词会形成一个停用词表。
这边的停用词我是从网上下载的,停用词表的选择对最后分词词频的影响较大,所以要选择合适的停用词表。
library(plyr)
tableWord<-count(segWords)##形成词频表,tableWord是数据框格式
write.table(tableWord,'tableWord.txt')#保存到本地txt文件
tablenew<-tableWord[which(tableWord$freq>100),]#只保留出现频率大于100次的词汇
library("wordcloud2")
wordcloud2(tableWord, size = 2, fontFamily = "微软雅黑",
color = "random-light", backgroundColor = "grey") #画出词云
最后画出词云
微信图片_20171201214250.jpg
emmm虽然这张词云又丑又没有重点又有中文乱码,但这是我画出的第一张中文词云图,所以放在这哈哈哈哈哈
参考引用:
http://blog.csdn.net/zx403413599/article/details/46730801
http://blog.csdn.net/songzhilian22/article/details/49184047
网友评论