python wordcloud 词云

python wordcloud 词云

词云是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思。
而python在生成词云上也是非常的方便。

需要安装的包

使用pip安装下述包

  • jieba:一个国人开发的优秀的分词工具
  • wordcloud:词云的核心包
  • matplotlibPILnumpy用于处理和绘制图像

wordcloud安装的问题

我是windows下安装,由于缺乏VS编译器在pip install时无法正确安装wordcloud。

  1. 此时想用minGW去编译,发现python3.5.2的版本在windows下不支持minGW。。。
  2. 于是转战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()

输出结果

由于背景图片没有处理过,所以看上去有些凌乱。但还是能够看出大致轮廓和相似的色彩。另外,大家看的出用于词云分析的是什么文章吗?:)

词云图:

这里写图片描述

结合原图颜色处理后的词云图:

这里写图片描述

原图:

原图

参考


发布了59 篇原创文章 · 获赞 20 · 访问量 10万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章