几行Python代码帮你生成精美词云图

近年来,互联网、新媒体等行业报告中经常会看到一些精美的词云图。它的原理其实比较简单,主要是对文章内容进行分词,统计各个词出现的次数,然后根据出现的次数,设置显示样式,例如大小、颜色等,从而使读者快速领略文章的主旨。例如根据一篇关于复杂网络中的链路预测生成的词云图如下,可以看出“网络”、“链路预测”、“研究”、“预测”、“算法”等词出现频率较高。

要想生成精美的词云图,只需几行Python代码即可,关键代码如下。

import wordcloud as wc
import jieba
from PIL import Image
import numpy as np
with open("text.txt", mode="r", encoding="utf-8") as fp:
    content = fp.read()  # 读取文件内容
res = jieba.lcut(content)  # 中文分词
text = " ".join(res)  # 用空格连接所有的词
mask = np.array(Image.open("pikaqiu.png"))  # 指定词云图效果
word_cloud = wc.WordCloud(font_path="msyh.ttc", mask=mask)  # 创建词云对象
word_cloud.generate(text)  # 生成词语
plt.imshow(word_cloud)  # 显示词云图
word_cloud.to_file("wordcloud.png")  # 保存成图片
plt.show()  # 显示图片

生成词云图代码中调用了一些第三方库,要保证开发环境中已经安装了相应的库,否则无法执行。这里主要涉及到wordcloud库(用于生成词云图,主要针对英文文章,通过空格进行分词)和jieba库(对中文文章进行分词)。

wordcloud离线安装过程如下:

jieba库的在线安装过程如下:

wordcloud库中对象创建参数以及常见方法如下:

jieba库的介绍以及关键的方法和参数说明如下:

生成中文词云的开发步骤如下:

    读取文件,得到中文字符串; 借助jieba库对中文进行分词,得到词语的列表,然后将这些词进行合并并以空格隔开; 打开最终效果对应的图片文件,得到相应的数组表示; 创建WordCloud对象,设置基本信息; 生成词云图,并保存或显示。
经验分享 程序员 微信小程序 职场和发展