python wordcloud 词云
词云是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思。
而python在生成词云上也是非常的方便。
需要安装的包
使用pip安装下述包
jieba
:一个国人开发的优秀的分词工具wordcloud
:词云的核心包matplotlib
,PIL
,numpy
用于处理和绘制图像
wordcloud安装的问题
我是windows下安装,由于缺乏VS编译器在pip install
时无法正确安装wordcloud。
- 此时想用minGW去编译,发现python3.5.2的版本在windows下不支持minGW。。。
于是转战linux平台,发现安装还是出问题。提示没有
python-tk
。即tkinter,一个python默认使用的GUI平台。此平台在windows下是随安装包可选安装的,但linux下并未安装。于是使用apt来安装。之后就开开心心的安装成功了。注意使用的python版本
sudo apt-get Install python3-tk
代码
生成词云的大致过程可分为:
- 读取和处理文本
- 读取背景
- 设置参数并生成词云
- 绘图
具体使用请见下述源码
import jieba
import wordcloud
import matplotlib.pyplot as plt
import PIL
import numpy as np
# Read raw file
with open('word.txt', 'r') as f:
raw_txt = f.read()
# Read background pic
pic = PIL.Image.open("backgroud.jpg")
pic_mask = np.array(pic)
# word split
raw_txt = jieba.cut(raw_txt, cut_all=True)
raw_txt = ' '.join(raw_txt) # split word with space
# Make word cloud, The parameters setting please see help()
wc = wordcloud.WordCloud()
wc.font_path = 'msyh.ttf' # microsoft yahei
wc.width = 1200
wc.height = 800
wc.max_word = 2000
wc.mask = pic_mask
wc.radom_state = 42
wc.max_font_size = 84
wc.min_font_size = 16
wc.background_color = "white"
word_cloud = wc.generate(raw_txt)
# plot word cloud
plt.imshow(word_cloud)
plt.axis('off')
plt.figure()
# plot word cloud with re-color by mask
img_color = wordcloud.ImageColorGenerator(pic_mask)
img_recolor = word_cloud.recolor(color_func=img_color)
plt.imshow(img_recolor)
plt.axis("off")
plt.show()
输出结果
由于背景图片没有处理过,所以看上去有些凌乱。但还是能够看出大致轮廓和相似的色彩。另外,大家看的出用于词云分析的是什么文章吗?:)
词云图:
结合原图颜色处理后的词云图:
原图: