注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性。
本文阅读时间约为4分钟。
本文介绍如何使用Python制作词云。
词云的概念
“词云”,就是通过形成“关键词云层”或“关键词渲染”,对网络文本中出现频率较高的“关键词”的视觉上的突出。词云图过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。
制作词云前的准备
Python制作词云要用到第三方库wordcloud和imageio。它们的安装方法依然是命令行输入conda install <第三方库名> 或 pip install <第三方库名>。
关于第三方库的安装,更多详情请移步至:Python零基础入门学习20:常用第三方库之PyInstaller库
wordcloud库的使用
wordcloud库把词云当作一个WordCloud对象。(注意字母的大小写)
wordcloud.WordCloud()代表一个文本对应的词云。其功能是根据文本中词语出现的频率等参数绘制词云。绘制词云的形状、尺寸和颜色都可以设定。
wordcloud库常用方法
以WordCloud对象为基础。
配置参数、加载文本、输出文件。
w = wordcloud.WordCloud()
w.generate(txt)——向WordCloud对象w中加载文本txt。
w.generate("Python and WordCloud")
w.to_file(filename)——将词云输出为图像,.png或.jpg格式。
w.to_file('outfile.png')
wordcloud库常用方法
- 步骤1:配置对象参数。
- 步骤2:加载词云文本。
- 步骤3:输出词云文件。
import wordcloud
c = wordcloud.WordCloud()
c.generate("wordcloud by Python")
c.to_file("pywordcloud.png")
以上代码运行成功后,会生成一个本地的图片,图片与源程序在同一个文件夹之内。
关于词云生成的图片
图片宽度默认为width = 400,height = 200。
词云图片是以空格分隔单词的。统计单词出现的次数,高频率的词显示比较大,低频率的词显示比较小。统计单词出现次数并过滤。词云图片会过滤掉过很短的单词,比如1-2个字母的。
词云图片的显示配置
w = wordcloud.WordCloud(<参数>)
width——指定词云对象生成的图片的宽度,默认为400像素。
height——指定词云对象生成的图片的高度,默认为200像素。
w = wordcloud.WordCloud(width = 600, height = 800)
min_font_size——指定词云中字体的最小字号,默认4号。
w = wordcloud.WordCloud(min_font_size = 10)
max_font_size——指定词云中字体的最大字号,根据高度自动调节。
w = wordcloud.WordCloud(max_font_size = 20)
font_step——指定词云中字体字号的步进间隔,默认为1。
w = wordcloud.WordCloud(font_step = 2)
font_path——指定字体文件的路径,默认None。
w = wordcloud.WordCloud(font_path = "msyh.ttc")
max_words——指定词云显示的最大单词数量,默认200。
w = wordcloud.WordCloud(max_words = 20)
stop_words——指定词云的排除列表,即不显示的单词列表。
w = wordcloud.WordCloud(stop_words = {"Python"}) # 不显示"Python"这个词
mask——指定词云形状,默认为长方形,需要引用imread()函数。
from imageio import imread
mk = imread("pic.png")
w = wordcloud.WordCloud(mask = mk)
background_color——指定词云图片的背景颜色,默认为黑色。
w = wordcloud.WordCloud(background_color = "white")
下面是一个修改词云显示的例子:
import wordcloud
txt = "life is short, you need python"
w = wordcloud.WordCloud(background_color = "white")
w.generate(txt)
w.to_file("pycloud.png")
中文词云实例
以朱自清的文章《背影》中的一段为例,展示词云的制作。
import wordcloud
import jieba
txt = """
我说道:“爸爸,你走吧。”他往车外看了看,说:“我买几个橘子去。你就在此地,不要走动。”我看那边月台的栅栏外有几个卖东西的等着顾客。走到那边月台,须穿过铁道,须跳下去又爬上去。父亲是一个胖子,走过去自然要费事些。我本来要去的,他不肯,只好让他去。我看见他戴着黑布小帽,穿着黑布大马褂,深青布棉袍,蹒跚地走到铁道边,慢慢探身下去,尚不大难。可是他穿过铁道,要爬上那边月台,就不容易了。他用两手攀着上面,两脚再向上缩;他肥胖的身子向左微倾,显出努力的样子。这时我看见他的背影,我的泪很快地流下来了。我赶紧拭干了泪。怕他看见,也怕别人看见。我再向外看时,他已抱了朱红的橘子往回走了。过铁道时,他先将橘子散放在地上,自己慢慢爬下,再抱起橘子走。到这边时,我赶紧去搀他。他和我走到车上,将橘子一股脑儿放在我的皮大衣上。于是扑扑衣上的泥土,心里很轻松似的。过一会儿说:“我走了,到那边来信!”我望着他走出去。他走了几步,回过头看见我,说:“进去吧,里边没人。”等他的背影混入来来往往的人里,再找不着了,我便进来坐下,我的眼泪又来了。
"""
w = wordcloud.WordCloud(width = 1000, font_path = "msyh.ttc", height = 700)
w.generate(" ".join(jieba.lcut(txt)))
w.to_file("pywcloud.png")
制作出来的词云图片如下:
To be continued.