欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!
对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。
作者: 苏克1900
公众号:第2大脑
摘要: 当我们手中有一篇文档,比如书籍、小说、电影剧本,若想快速了解其主要内容是什么,则可以采用绘制 WordCloud 词云图,显示主要的关键词(高频词)这种方式,非常方便。本文将介绍常见的英文和中文文本的词云图绘制,以及 Frequency 频词频词云图。
写在前面:由于文中有一些超链接,无法在公众号打开,建议点击底部「阅读原文」或者复制下面的博客链接到浏览器打开,体验更好。
https://www.makcyun.top/
在上一篇文章「
pyspider 爬取并分析虎嗅网 5 万篇文章
」中的文本可视化部分,我们通过 WordCloud 和 jieba 两个包绘制了中文词云图,当时只是罗列出了代码,并没有详细介绍。接下来,将详细说明各种形式的词云图绘制步骤。
![3901436-fe80f4b242b2d35c](https://i-blog.csdnimg.cn/blog_migrate/f61bcd3b8b984df4f02665b5302595e4.webp?x-image-process=image/format,png)
1. 英文词云
我们先绘制英文文本的词云图,因为它相对简单一些。这里以《海上钢琴师》这部电影的剧本为例。
首先,准备好电影剧本的文本文件(如下图):
![3901436-ec077bb1831b89d6](https://i-blog.csdnimg.cn/blog_migrate/9e74a9bf36f3e59e3abe4ec9ab4d7cc8.webp?x-image-process=image/format,png)
接下来,我们绘制一个最简单的矩形词云图,代码如下:
1import os
2from os import path
3from wordcloud import WordCloud
4from matplotlib import pyplot as plt
5# 获取当前文件路径
6d = path.dirname(__file__) if "__file__" in locals() else os.getcwd()
7# 获取文本text
8text = open(path.join(d,'legend1900.txt')).read()
9# 生成词云
10wc = WordCloud(scale=2,max_font_size = 100)
11wc.generate_from_text(text)
12# 显示图像
13plt.imshow(wc,interpolation='bilinear')
14plt.axis('off')
15plt.tight_layout()
16#存储图像
17wc.to_file('1900_basic.png')
18# or
19# plt.savefig('1900_basic.png',dpi=200)
20plt.show()
这里,通过 open() 方法读取文本文件,然后在 WordCloud 方法中设置了词云参数,再利用 generate_from_text() 方法生成该电影剧本的词云,最后显示和保存词云图。十几行代码就可以生成最简单的词云图:
![3901436-5ae01193f07d523c](https://i-blog.csdnimg.cn/blog_migrate/b5b8579f36cf1e9c6753a37c564f4056.webp?x-image-process=image/format,png)
通过上面的词云图,你可能会发现有几点问题:
可不可以更换背景,比如白色?
词云图能不能换成其他形状或者图片?
词云中最显眼的词汇 「ONE」,并没有实际含义,能不能去掉?
以上这些都是可以更改的,如果你想实现以上想法,那么需要先了解一下 WordCloud 的API 参数及它的一些方法。
这里,我们列出它的各项参数,并注释重要的几项:
1wordcloud.WordCloud(
2 font_path=None, # 字体路径,英文不用设置路径,中文需要,否则无法正确显示图形
3 width=400, # 默认宽度
4 height=200, # 默认高度
5 margin=2, # 边缘
6 ranks_only=None,
7 prefer_horizontal=0.9,
8 mask=None, # 背景图形,如果想根据图片绘制,则需要设置
9 scale=1,
10 color_func=None,
11 max_words=200, # 最多显示的词汇量
12 min_font_size=4, # 最小字号
13 stopwords=None, # 停止词设置,修正词云图时需要设置
14 random_state=None,
15 background_color='black', # 背景颜色设置,可以为具体颜色,比如white或者16进制数值
16 max_font_size=None, # 最大字号
17 font_step=1,
18 mode='RGB',
19 relative_scaling='auto',
20 regexp=None,
21 collocations=True,
22 colormap='viridis', # matplotlib 色图,可更改名称进而更改整体风格
23 normalize_plurals=True,
24 contour_width=0,
25 contour_color='black',
26 repeat=False)
关于更详细的用法,你需要到官网了解。
了解了各项参数后,我们就可以自定义想要的词云图了。比如更换一下背景颜色和整体风格,就可以通过修改以下几项参数实现:
1wc