Python学习心得之一
近期刚上手学习Python,在学习完一些基础教程后,开始动手做一些小项目。之后也会不定期更新一些学习心得……
准备阶段
本人的开发环境采用Python2.7+cmd命令窗口的形式,安装方法可以参考网上一些教程。
在开始之前参考阅读了一些资料和博客
例如:
如何用Python做中文词云?
十分钟学会用任意中文文本生成词云
python中文词云生成
还有一些参考阅读的资料就不细举了
操作阶段
生成词云需要用到一些Python扩展包,最好采用命令窗口pip的方式下载,而在此之前,需要在网上下载pip安装好(此处网上也有参考教程)
然后在命令行窗口敲击如下代码:
pip install matplotlib
下载完成后再依次下载wordcloud包和jieba包
附jieba包下载成功图:
现在我们可以开始敲代码了
首先是参考了这份资料的代码
如何用Python做中文词云?
前面运行的都还顺利,包括建立TXT文本,读取内容,进行中文分词
但是运行到如下代码的时候出现了问题
from wordcloud import WordCloud
wordcloud = WordCloud().generate(mytext)
%pylab inline
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear'
plt.axis("off")
此段代码里%pylab inline 运行出错了,错误如下:
经过查找资料后发现,这段代码可能是只对IPython开发环境有效。于是便放弃了用这种方式显示词云。
进而参考了第三份资料的词云设置代码:
python中文词云生成
和第二份资料的显示词云代码:
十分钟学会用任意中文文本生成词云
但是在词云设置代码中:
wc = WordCloud( background_color = 'white', # 设置背景颜色
mask = backgroud_Image, # 设置背景图片
max_words = 2000, # 设置最大现实的字数
stopwords = STOPWORDS, # 设置停用词
font_path = 'C:/Users/Windows/fonts/simsun.ttf', # 设置字体格式,如不设置显示不了中文
max_font_size = 60, # 设置字体最大值
color_func=None, #设置关键字的字体颜色
random_state = 42, # 设置有多少种随机生成状态,即有多少种配色方案
).generate(mytext)
关于font_path的设置,需要保证该路径中含有中文字体,如果没有,需要在网上下载相关字体,放入此路径中。此处我们采用的是simsun.ttf宋体中文字体。
在词云显示代码中含有两种不同的显示方法:
plt.imshow(wc) #第一种 直接按设置好的字体颜色 背景形状来显示
image_colors = ImageColorGenerator(backgroud_Image)
wc.recolor(color_func = image_colors)
plt.imshow(wc) #第二种 根据前两句代码 将字体颜色变成了背景图的颜色
plt.axis('off')
plt.show()
实际上第二种显示方法使用较多,因为第一种颜色太过花花绿绿
两种显示方法图片有如下区别:
第一种:
第二种:
原背景图:
出现的错误
1、就是如上所述操作阶段的代码错误
2、在代码无误后,第一种方法显示出来的图形没有按照设定背景图的形状来显示,而是变成了矩形的形状。
在请教了同学@sunhuan之后,发现原来是我找的背景图的背景和图片颜色过于相近,导致机器识别不出来边缘形状,在更换相差度高的图片之后,顺利的显示出了相应形状的词云。
至此,本次生成中文词云完成,附完整代码如下:
完整代码
import matplotlib.pyplot as plt
#import pickle
from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator
import jieba
filename = "jade.txt"
with open(filename) as f:
mytext = f.read()
mytext = " ".join(jieba.cut(mytext)) #进行中文分词
backgroud_Image = plt.imread('D:\pycharm\projects\world.jpeg')
wc = WordCloud( background_color = 'white', # 设置背景颜色
mask = backgroud_Image, # 设置背景图片
max_words = 2000, # 设置最大现实的字数
stopwords = STOPWORDS, # 设置停用词
font_path = 'C:/Users/Windows/fonts/simsun.ttf', # 设置字体格式,如不设置显示不了中文
max_font_size = 60, # 设置字体最大值
color_func=None, #设置关键字的字体颜色
random_state = 42, # 设置有多少种随机生成状态,即有多少种配色方案
).generate(mytext)
plt.imshow(wc)
image_colors = ImageColorGenerator(backgroud_Image)
wc.recolor(color_func = image_colors)
plt.imshow(wc)
plt.axis('off')
plt.show()