使用 Python3 定制词云

一、实验简介
1.1 实验内容
在互联网时代,人们获取信息的途径多种多样,大量的信息涌入到人们的视线中。如何从浩如烟海的信息中提炼出关键信息,滤除垃圾信息,一直是现代人关注的问题。在这个信息爆炸的时代,我们每时每刻都要更新自己的知识储备,而网络是最好的学习平台。对信息过滤和处理能力强,学习效率就会得到提高。“词云”就是为此而诞生的。“词云”是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”或“关键词渲染”,从而过滤掉大量的无意义信息,使浏览者只要一眼扫过词云图片就可以领略文章或者网页内容的主旨。不仅如此,一幅制作精美的词云图片,可以起到一图胜千言的效果,在报告或者PPT中适当的使用词云,会使表达更清晰充分,为演讲者表达的意义加分。本实验将使用Python3的wordcloud扩展包制作词云,生成图片保存。并介绍如何改进wordcloud扩展包使其能显示中文字符,最后介绍如何使用自己喜欢的图片定制词云图片轮廓。
1.2 实验知识点
• 制作词云的基本步骤和原理
• Python3代码实现词云制作
• wordcloud扩展包的使用
• 使用自定义图片制作词云,分析《三体》I、 II、 III的关键词
1.3 实验环境
该实验在ubuntu14.04下完成,由于Python具有跨平台特性,该实验的代码也可以运行于Windows和Mac系统上,只需要对字体部分做相应处理即可。
• python3.5
• numpy 1.14.3
• matplotlib 2.2.2
• Pillow 5.1
• wordcloud 1.4.1
• python3-tk 3.5.1
1.4 适合人群
本课程难度为一般,属于初级级别课程,适合具有Python3基础的用户,熟悉python3基础知识加深巩固。
1.5 代码获取
你可以通过下面命令将代码下载到实验楼环境中,作为参照对比进行学习。
$ wget http://labfile.oss.aliyuncs.com/courses/756/simple.py
$ wget http://labfile.oss.aliyuncs.com/courses/756/my_word_cloud.py
二、实验原理
词云的原理是对输入的文本数据进行词频统计,根据词汇出现频率的不同,按不同比例显示出词汇,生成图片。频率高的词汇显示的大,频率低的词汇显示的小。文本数据可以是本地数据,也可是爬虫动态从网络中获取的。
三、开发准备
打开Xfce终端,进入 Code 目录,创建 work 文件夹, 将其作为课程的工作目录。下载并安装实验需要的扩展包 。如果大家平时想在自己的电脑上进行实验,无论是Windows还是Linux还是Mac,都强烈推荐安装Anaconda,这是一个Python的科学计算包,里面几乎包含了常用的所有扩展包,不用自己费力安装了,该软件由Python之父带头维护,三个平台同时更新。
$ cd Code && mkdir work && cd work
$ sudo apt-get update
$ sudo pip3 install numpy
$ sudo pip3 install matplotlib
$ sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev \
libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk #安装Pillow依赖包
$ sudo pip3 install Pillow
$ sudo apt-get install python3-tk
下载小说《三体》I、 II、 III。
$ wget http://labfile.oss.aliyuncs.com/courses/756/santi.txt
$ wget http://labfile.oss.aliyuncs.com/courses/756/santi2.txt
$ wget http://labfile.oss.aliyuncs.com/courses/756/santi3.txt
安装wordcloud扩展包。
$ sudo apt-get install python3-dev
$ sudo pip3 install wordcloud
四、实验步骤
本节将通过实践操作,带领大家使用 python3 定制词云。
4.1 简单测试
运行一个简单工程,测试扩展包安装是否正常
在对《三体》进行处理之前,我们先运行一下官方的示例程序,确保扩展包安装正常,程序能够正常工作。在work目录下新建simple.py文件:
$ cd /home/shiyanlou/Code/work
$ touch simple.py
代码如下:
#!/usr/bin/env python3
"""
Minimal Example
===============
Generating a square wordcloud from the US constitution using default arguments.
"""

from os import path
from wordcloud import WordCloud

d = path.dirname(__file__)

# Read the whole text.
text = open(path.join(d, 'constitution.txt')).read()

# Generate a word cloud image
wordcloud = WordCloud().generate(text)

# Display the generated image:
# the matplotlib way:
import matplotlib.pyplot as plt
plt.imshow(wordcloud)
plt.axis("off")

# lower max_font_size
wordcloud = WordCloud(max_font_size=40).generate(text)
plt.figure()
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
由代码可见,程序运行时会搜寻脚本所在的路径下的文本文件“constitution.txt”,所以我们在运行脚本前需要将这个文本放入work文件夹下面。 通过下面的命令下载文本:
$ wget http://labfile.oss.aliyuncs.com/courses/756/constitution.txt
运行脚本:
$ python3 simple.py
如果扩展包安装一切正常,程序将输出如下窗口: