注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性。
本文约2000字,阅读时间约为5分钟。
本文介绍如何使用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 wordcloudc = 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 imreadmk = imread("pic.png")w = wordcloud.WordCloud(mask = mk)
background_color——指定词云图片的背景颜色,默认为黑色。
w = wordcloud.WordCloud(background_color = "white")
下面是一个修改词云显示的例子:
import wordcloudtxt = "life is short, you need python"w = wordcloud.WordCloud(background_color = "white")w.generate(txt)w.to_file("pycloud.png")
中文词云实例
以朱自清的文章《背影》中的一段为例,展示词云的制作。
import wordcloudimport jiebatxt = "程序设计语言是计算机能够理解和识别用户操作亦图的一种交互体系,它按照 特定规则组织计算机指令,使计算机能够自动进行各种运算处理"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.