自学Python笔记:打造我的第一个词云

两会词云

“词云”是对文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”或“关键词渲染”,从而过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。

作为教育工作者,可以利用词云工具,提供给阅读者整个信息的新重点,揭示关键概念并使用新的模式,以加强学习。词云有可能成为最新的计算机辅助学习的新形式。尤其在外语教学中适当地运用词云手段可以改善教学效果,提高教学质量,对培养学生多方面的能力和提高教师素质也有很多益处。

网上有很多的绘制词云工具,如果用Python绘制词云,主要用到的是wordcloud库。

安装很简单,只要在命令行模式下输入下面指令即可完成安装。

pip install wordcloud

wordcloud安装时如果你是Python3.6版本需要先安装Visual C++ 2017 redistributable packages,请提前安装好。

Visual C++ 2017

英文词云

从字面看就知道词云分析的对象是文本,是对文本数据的“关键词”进行提取分析,因为wordcloud对中文支持不好,我们先以英文文本为例。

今年国产电影战狼2够火,先到维基百科上找到了这部电影的词条“Wolf Warrior 2”。(精简了一下原文)

Wolf Warrior 2 is a 2017 Chinese action film directed by Wu Jing, who also starred in the lead role. The film co-stars Celina Jade, Frank Grillo, Hans Zhang, and Wu Gang. The film is a sequel to 2015's Wolf Warrior.The film tells a story of a loose cannon Chinese soldier named Leng Feng who takes on special missions around the world. In this sequel, he finds himself in an African country protecting medical aid workers from local rebels and vicious arms dealers. received general praise for its patriotic plot, special effects, action sequences and the cast's performances. It was a massive commercial success and has become the highest-grossing Chinese film ever released. The film broke numerous box office records, including the biggest single-day gross for a Chinese film as well as the fastest film to cross RMB 2 billion, 3 billion, 4 billion and 5 billion box office marks.

首先把上面文字存成 “wolf2.txt”,保存进程序目录,同时建立“ciyun.py”的脚本程序文件。

import matplotlib.pyplot as plt #需要绘图显示,调用了matplotlib库

from wordcloud import WordCloud

mytext = open('wolf2.txt','r').read() #读取文件

wordcloud = WordCloud().generate(mytext)

plt.imshow(wordcloud, interpolation='bilinear')

plt.axis("off")

plt.show()

在提示符下运行“python ciyun.py”就可以看到本文第一张图了,通过这张词云图,我们可以看到不同单词和词组出现的频率高低差别,高频词的字体明显更大,而且颜色也很醒目。

Wolf Warrior 2

WordCloud还可以设置生成图像的一些属性,比如下面将换成白色背景,尺寸为800*600。当然还可以增加遮罩。

wordcloud = WordCloud(background_color="white",width=800, height=600, margin=2).generate(mytext)

定义部分属性

我们进一步修改代码,首先建立一张透明背景PNG图片,命名为“mask.png”并与“ciyun.py”保存在一起。图片的作用就是让你随心所欲的生成自己想要的形状。

mask.png

添加和修改代码如下:

from scipy.misc import imread

maskpic = imread("mask.png")

wordcloud=WordCloud(background_color="white",mask=maskpic ,width=1000, height=860, margin=2).generate(mytext)

mask后

中文词云

上面是对英文文本的处理,wordcloud对于中文的分词支持不是特别好,所以需要我们手动分词,大神们已经为我们准备了中文分词库,jieba就是一个优秀的中文分词工具,功能强大并且使用简便。

同理,我们选取一篇文章,是关于人工智能的,并保存为“zh.txt”。

人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。

人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智慧的“容器”。人工智能可以对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。

人工智能是一门极富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。

然后编写下面的代码,为了正常显示中文添加了一个“font_path="MSYH.TTF"”参数,当然同时你要把字库文件MSYH.TTF也要放进程序目录。这个文件可以在系统font目录下找到。

import matplotlib.pyplot as plt

from wordcloud import WordCloud

from scipy.misc import imread

import jieba

mytext = open('zh.txt','r').read()

mytext = " ".join(jieba.cut(mytext))

maskpic = imread("mask.png")

wordcloud = WordCloud(background_color="white",mask=maskpic,font_path="MSYH.TTF",width=1000, height=860, margin=2).generate(mytext)

plt.imshow(wordcloud, interpolation='bilinear')

plt.axis("off")

plt.show()

中文词云

今天仅仅是介绍了词云的冰山一角,可以简单的做自己的词云,wordcloud库也不仅仅这么简单的应用,希望感兴趣的朋友赶紧操练起来。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180105G04ZJ600?refer=cp_1026

扫码关注云+社区