虽然还不对Python有很深的理解,就献丑啦。将最近生成词云的坎坷经历记录一下。
Python的安装这些就不多说了。
这里有几个参照的经验帖:
第一个A,第二个B。
先介绍一下本机环境为Win7下安装的是Python3.5版本。
第一个悲剧——如何安装Wordcloud
两个经验中都提到了如何安装,由于是在Win7下,所以只能通过Python中的pip命令进行安装。但在这个过程中,我更新pip算是小事那就不提了。先后从github上下载了安装包,之后发现并不可行,莫名其妙的发现了一个“轮子仓库”,有好多已有的模块(包括之后用到的scipy模块、numpy+mkl模块和matplotlib模块),网址在此。
第二个悲剧——unable to find vcvarsall.bat
我的问题,在知乎上也有提问和解答。我采用的是安装Visual Studio。
1. 好像在哪里看到Python3.5需要安装VS2015,于是到官网下载VS2015版本。
2. 安装好之后,运行程序,发现报错。按照提示下载相应的模块(下载方式同Wordcloud)。
3. 之后又发现,自己程序并不能运行,并不知道为什么会闪退。于是运行Wordcloud自带的案例发现可以运行。在比较之后,在自己的程序里的第一行添加了#!/usr/bin/env python
最后的代码(夜深了,注释就不打了,见谅):
#!/usr/bin/env python
from os import path
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
d = path.dirname(__file__)
text = open(path.join(d, 'test.txt'), encoding = 'utf-8').read()
alice_coloring = np.array(Image.open(path.join(d, "timg.jpg")))
stopwords = set(STOPWORDS)
stopwords.add("said")
wc = WordCloud(font_path = './simhei.ttf', background_color="white", max_words=2000, mask=alice_coloring, stopwords=stopwords, max_font_size=40, random_state=42)
wc.generate(text)
alice_coloring = np.array(Image.open(path.join(d, "alice_color.png")))
image_colors=ImageColorGenerator(alice_coloring)
plt.figure()
plt.imshow(wc)
plt.axis("off")
#plt.figure()
#plt.imshow(wc.recolor(color_func=image_colors))
#plt.axis("off")
#plt.figure()
#plt.imshow(alice_coloring, cmap=plt.cm.gray)
#plt.axis("off")
#plt.show()
wc.to_file(path.join(d,"newwc.png"))
注:以上代码并不能处理相连的中文文章,处理的中文也是经过通过空格预先分隔的。
此处,需要对中文字符做些处理,比如utf-8编码(同时注意txt文件的编码方式)等,可以参考上述B经验。此外要显示中文,需要对应的中文字体(Wordcloud中不存在的)。我用的是简体黑,下载的网址是这个。
好了,经历就记录到这里吧。明天六月一,年少轻狂,幸福时光,各位晚安啦。