词云又称文字云,近几年非常流行。你要说它为什么会变火呢?有的人会认为它是文本挖掘的可视化、有的人 会给一些用户打上标签、有的人则只是想玩玩这酷炫的词汇……但词云产生的视觉效果才是让人更着迷的地方。
词云主要是对文本中出现频率较高的“关键词”进行视觉上的突出,让人更直观地看出文本的重点。本文针对上一篇文章如何统计文章词频,从而更快了解一篇文章所获得的中文词频统计数据进行词云可视化展示,更加清晰的看到文章关键词的权重。
词云库WordCloud
wordcloud库,可以说是python非常优秀的词云展示第三方库。词云以词语为基本单位更加直观和艺术的展示文本而且使用简单,内容丰富,先看看它生成的词云是什么样的。
该库主要有以下函数:
1.fit_words(frequencies) 该函数根据词频生成词云
2.generate_from_frequencies(frequencies[, ……]) 根据词频生成词
3.generate(text) 根据文本生成词云
4.process_text(text) 将长文本分词并去除屏蔽词(此处指英语,中文分词还是需要自己用别的库先行实现,使用上面的 fit_words(frequencies) )
5.recolor([random_state, color_func, colormap]) 对现有输出重新着色。重新上色会比重新生成整个词云快很多
6.to_array() 转化为 numpy array
7.to_file(filename) 输出到文件
wordcloud的参数主要有:
font_path: 设置字体路径,因为对中文处理的时候需要指定字体;
width,height:输出画布的宽度和高度;
mask:制定图片绘制词云,如果参数为空,则使用二维遮罩绘制词云。如果 mask 非空,设置的宽高值将被忽略,遮罩形状被 mask 取代。
统计词频词云
根据上面描述的wordcloud库,就可以用来做词云,这里用python3.6进行编写。
第一步先定义一个词频背景图,作为词云的载体。用来作为wordcloud中mask参数。mask = np.array(Image.open('u0.jpg'))。u0.jpg如图所示
第二步声明创建wordcloud对象,里面传入参font_path,mask,max_words,max_font_size。分别代表字体格式路径,绘制词云的背景图,词云最多显示词数,字体最大值。
第三步调用generate_from_frequencies方法,参数为上一篇中统计词频的字典count。
第四步调用to_file方法保存生成的词云图片
最后效果
还可以将u0.jpg换成更加个性的图片,生成更加好看的词云形状,比如下图