您的位置:首页 > 其它

JiebaR+wordcloud2词云

2017-05-16 16:09 106 查看
这篇文章介绍如何通过JiebaR和wordcloud2进行分词并制作精美的词云图片。

话不多说,先看词云













分词通过jiebaR进行,词云通过wordcloud2绘制,wordcloud2的强大之处在于可以自定义词云的形状。

分词用的文本随意取,这里我把分出来的词都替换成“学习”了,毕竟我们是如此的热爱学习。

关于JiebaR中文分词就不多说了,网上有很多教程,找一个比较全的停止词表就可以分析文档了,具体代码如下:

首先载入相关包

library(jiebaR)
library(wordcloud2)


加载需要分析的txt格式文本

聊天记录、小说等等都可以,最好是UTF-8编码的,否则有时候会出问题,(如何把txt保存成UTF-8编码的格式百度即可),
filename
为文件的绝对路径

f <- scan('filename.txt',sep='\n',what='',encoding="UTF-8")


分词

具体过程就不细讲了,最终分词得到词频矩阵,然后对词频矩阵进行一些处理,删掉一些无用的词,比如长度为1的词等等,让结果更精确。

wk <- worker(stop_word = '中文停用词表.txt')
seg <- wk[f]
seg <- seg[nchar(seg)>1]
seg <- table(seg)
seg <- sort(seg,decreasing = T)[1:100]
result <- as.data.frame(seg,stringsAsFactors=F)


result
为按词频降序排列的词频矩阵,把所有的词都替换成“学习”

词云

词云通过
wordcloud2
这个包实现,先来看一下这个函数

wordcloud2(data, size = 1, minSize = 0, gridSize =  0,
fontFamily = 'Segoe UI', fontWeight = 'bold',
color = 'random-dark', backgroundColor = "white",
minRotation = -pi/4, maxRotation = pi/4, shuffle = TRUE,
rotateRatio = 0.4, shape = 'circle', ellipticity = 0.65,
widgetsize = NULL, figPath = NULL, hoverFunction = NULL)


参数很多,解释主要的几个参数

data:作词云的词频数据框,包含两列,一列为词,一列为频数,频数越大,词云中该词字号越大

backgroundColor:背景颜色

shape:形状,wordcloud2本身带了多种形状,直接从help里复制过来::circle (default), cardioid (apple or heart shape curve, the most known polar equation), diamond (alias of square), triangle-forward, triangle, pentagon, star

figpath:自定义形状的路径,想做什么形状的图形,先找一个图片,把图片路径放在这个参数里就可以了。重要的事情说三遍,图片要是黑色的,图片要是黑色的,图片要是黑色的

col:色调:偏亮或者偏暗

其他的可以自己研究下,跟图片、字体大小有多。

下面是我用来做词云的部分图片









图片推荐从这里下:http://www.iconfont.cn/,颜色选纯黑。

当然水平够高可以自己做。

下好图片之后就可以直接做词云了

代码:

wordcloud2(result,backgroundColor = 'black',col = 'random-light',figPath = '图片.png')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息