一. 安装WordCloud
在使用WordCloud词云之前,需要使用pip安装相应的包。
pip install WordCloud
pip install jieba
其中WordCloud是词云,jieba是结巴分词工具。
jieba参考我的博客:[python] 使用Jieba工具中文分词及文本聚类概念
问题:在安装WordCloud过程中,你可能遇到的第一个错误如下。
error: Microsoft Visual C++ 9.0 is required. Get it from http://asa.ms/vcpython27
解决方法也很简单,下载VCForPython27安装(Microsoft Visual C++ Compiler for Python 2.7)。但是在微软下载总是没响应。微软地址如下:
https://www.microsoft.com/en-us/download/details.aspx?id=44266
这是最大的问题,下载完成,可以进行安装响应的库函数。
安装完成之后,可以正常运行代码啦。
二. 简单词云代码
下面这部分代码参考老曹的,希望对你有所帮助。
老曹说:什么是词云呢?词云又叫文字云,是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思。
代码如下:
1. # -*- coding: utf-8 -*-
2. import jieba
3. import sys
4. import matplotlib.pyplot as plt
5. from wordcloud import WordCloud
6.
7. #打开本体TXT文件
8. text = open('test.txt').read()
9. print type(text)
10.
11. #结巴分词 cut_all=True 设置为全模式
12. wordlist = jieba.cut(text, cut_all = True)
13.
14. #使用空格连接 进行中文分词
15. wl_space_split = " ".join(wordlist)
16. print wl_space_split
17.
18. #对分词后的文本生成词云
19. my_wordcloud = WordCloud().generate(wl_space_split)
20.
21. #显示词云图
22. plt.imshow(my_wordcloud)
23. #是否显示x轴、y轴下标
24. plt.axis("off")
25. plt.show()
运行结果如下所示:
这是中文编码问题,下面讲解解决方法。
三. 中文编码错误及解决
在WordCloud安装的目录下找到WordCloud.py文件,对源码进行修改。
编辑wordcloud.py,找到FONT_PATH,将DroidSansMono.ttf修改成msyh.ttf。这个msyh.ttf表示微软雅黑中文字体。
注意,此时运行代码还是报错,因为需要在同一个目录下放置msyh.ttf字体文件供程序调用,如下图所示,这是原来的字体DroidSansMono.ttf。
此时的运行结果如下所示,这是分析CSDN多篇博客的主题,"阅读"和"评论"比较多。
也可以采用下面的代码:
wordcloud = WordCloud(font_path = 'MSYH.TTF').fit_words(word)
四. 照片背景的词云代码
下面进一步深入,假设存在一个图 "sss3.png",核心代码如下:
1. # -*- coding: utf-8 -*-
2. from os import path
3. from scipy.misc import imread
4. import jieba
5. import sys
6. import matplotlib.pyplot as plt
7. from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
8.
9. # 打开本体TXT文件
10. text = open('weixin.txt').read()
11.
12. # 结巴分词 cut_all=True 设置为全模式
13. wordlist = jieba.cut(text) #cut_all = True
14.
15. # 使用空格连接 进行中文分词
16. wl_space_split = " ".join(wordlist)
17. print wl_space_split
18.
19. # 读取mask/color图片
20. d = path.dirname(__file__)
21. nana_coloring = imread(path.join(d, "sss3.png"))
22.
23. # 对分词后的文本生成词云
24. my_wordcloud = WordCloud( background_color = 'white', # 设置背景颜色
25. # 设置背景图片
26. 2000, # 设置最大现实的字数
27. # 设置停用词
28. 50, # 设置字体最大值
29. 30, # 设置有多少种随机生成状态,即有多少种配色方案
30. )
31.
32. # generate word cloud
33. my_wordcloud.generate(wl_space_split)
34.
35. # create coloring from image
36. image_colors = ImageColorGenerator(nana_coloring)
37.
38. # recolor wordcloud and show
39. my_wordcloud.recolor(color_func=image_colors)
40.
41. plt.imshow(my_wordcloud) # 显示词云图
42. plt.axis("off") # 是否显示x轴、y轴下标
43. plt.show()
44.
45. # save img
46. my_wordcloud.to_file(path.join(d, "cloudimg.png"))
运行结果如下图所示,显示我加宝宝我两最近两月的聊天记录。
一弦一柱思华年,一co一ding梦严贤。
希望文章对你有所帮助,尤其是结合数据库做数据分析的人。还是那句话,如果刚好需要这部分知识,你就会觉得非常有帮助,否则只是觉得好玩,这也是在线笔记的作用。如果文章中存在不足或错误的地方,还请海涵~