利用Python将已有TXT文档生成中文词云

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()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值