“ 引言 ”
词云图是对文本中高频关键词的一种可视化表现形式。使用Python的 wordcloud 库可以很方便地生成词云图,下面我们一起来看看如何生成词云图吧。
一、相关依赖库安装
1)库安装
本案例需使用的库有:jieba(分词)和 wordcloud (词云图生成),使用 pip 安装方式如下:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple wordcloud
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jieba
2)库导入
import jieba
from wordcloud import WordCloud,ImageColorGenerator
import matplotlib.pyplot as plt
二、分词部分
我们使用jieba库对文本进行分词操作。本案例只采用两个字以上的词来生成词云图,因此需将分词结果中单个字的词剔除,具体如下:
1)代码
text = open('text.txt', 'r', encoding='utf-8').read()word_list = lcut(text)
word_list2 = lcut(text)
# 循环遍历长度 >2 的词并删除
for word in word_list2:
if len(word) < 2:
word_list.remove(word)
word_list_space = " ".join(word_list)
注:为什么要生成两个分词结果,而不是直接使用word_list或者word_list2=word_list?
由于如果使用同一个word_list,在循环遍历中删除词时,会对循环造成影响。如果使用word_list2=word_list,本质上指向的还是同一个list,因此需生成两个分词结果。大家也可以思考如何用1个word_list实现以上功能。
2)分词效果

三、词云图生成部分
1)代码
# 图片遮罩层
mask_img = plt.imread('mask_img.jpg')
# 颜色配置
image_colors=lambda *args, **kwargs: (255,0,0)
# 生成词云图
wordcloud = WordCloud(font_path="C:/Windows/Fonts/STXINGKA.TTF",
background_color='white',
max_words=300,
max_font_size=20,
mask=mask_img,
color_func=image_colors).generate(text)image = wordcloud.to_image()
image.show()
# 保存图片
image.save('词云图.jpg')
WordCloud相关参数:
①font_path:指定一个中文字体文件
②background_color:背景颜色
③max_words=1000:最大显示词语数
④max_font_size=100:最大显示字体
⑤mask:图片遮罩层数据,使用的图片必须为纯白底(#FFFFFF)才能识别轮廓
2)效果演示
① mask_img 图片

② 词云图效果

③ 使用其他 mask_img 效果

大家平时在什么场景下会用到词云图呢?欢迎在评论区 留言 讨论~
© 版权声明
文章版权归作者所有,未经允许请勿转载。



原来如此
生产第一……….
收藏了,感谢分享