Python wordcloud之中文词云

词云算是社交数据分析必不可少的一项技能了吧。下面就从安装到生成词云整个过程详细做个介绍。

安装wordcloud

pip install wordcloud
如果安装出错,细心的人会发现,cmd上面已经给出了解决方案。

其一,从http://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud下载whl文件
再 pip install filename.whl
备注:不要图方便把原先的whl文件名改了,否则要重新下载。

其二,在pip install 失败时,cmd明确指出了error:Microsoft Visual C++ 14.0 is required. 而且在error后面还提供了该文件的下载地址,进入下载地址页面下载后安装再重新pip install wordcloud 即可成功。
相比一的方法,个人觉得这个才是治本的方案,尽管在安装Microsoft Visual C++ 14.0时有些慢。

安装成功啦,接下来开始放代码。。。

import 库

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS 
import wordcloud
import jieba 
from scipy.misc import imread

因为这篇介绍的是中文词云,所以word cloud的STOPWORDS库不是必须的。

读取text

text = open('filename.txt',encoding='GB2312', errors='ignore').read() 
cut_text = " ".join(jieba.cut(text)) # jieba中文分词,英文则不需要。

注意点:encoding 方式不能只用‘uft-8’格式,有时候text会出现乱码,应该按照原text的编码方式进行解码。方法如下:

import chardet
f = open('filename.txt','rb')
f_read = f.read()
f_charInfo = chardet.detect(f_read)
f_charInfo   # 我的filename.text输出如下:
>>>{'confidence': 0.99, 'encoding': 'GB2312', 'language': 'Chinese'}

在输出信息中encoding 后面明确给出了’GB2312’,所以在open函数的参数encoding上也要改为’GB2312’才可以正确打开文件,否则就会是乱码。

停用词

stopwords = set()
# stopwords = set(STOPWORDS) 
# STOPWPRD自带的是英文停用词,所以在制作中文词云要自己添加或者调用nltk库的stopword,nltk这里不做介绍
# stopwords.add("然而") # 单项添加
stopwords.update(["然而","这样","另一方面","但是","因此","我们","一个","如果",
                  '它们','具有','人们','可以','这个','这种','不能','因为',
                  '或者','没有','这些','一种','非常','可能','他们','而且',
                  '所有','也许','就是','认为','正如','必须','确定','所以',
                  '任何','发生','甚至','能够','过去','对于','知道','这是',
                  '现在','不同','并且','似乎','那样','其他','什么','不是''那么','一点','已经','之间','如何','仍然']) # 多项添加

需要添加什么停用词,可以对text进行词频统计再排序,不过这一步骤需要在设置wordcloud参数后才可以调用,具体操作如下:

# 查看词频,方便重新增加停用词
process_word = WordCloud.process_text(wc, cut_text)
# 下面是字典排序
sort = sorted(process_word.items(),key=lambda e:e[1],reverse=True) # sort为list
print(sort[:50])  # 输出前词频最高的前50个

读取背景图片

# 如果图片过小,会产生wc.generate(text) out of index error。
# 两种方式读取
# imagename = np.array(Image.open("imagename.png")) 
imagename= imread( "imagename.png")

wordcloud参数设置及说明

wc = WordCloud(background_color="white", # 背景图片中不添加word的颜色
               max_words=2000, # 最大词个数
               mask=imagename, stopwords=stopwords,
               font_path = 'X:\Windows\Fonts\simfang.ttf',
               # 设置字体格式,如不设置显示不了中文,而且字体名不能是中文
               max_font_size = 75, # 设置字体大小的最大值
               random_state = 42
               )
# generate word cloud 生成词云
wc.generate(cut_text)

# save to file
wc.to_file("wordcloud.png")

显示词云图像

plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.figure()

总结:wordcloud自带许多函数,但常用的也就那么几个。。。
wordcloud制作并不难,踩过那几个坑后就简单了,安装失败坑,读取text乱码坑,输出词云乱码坑,还有背景图片不能太小。
如果有直接的中文停用词调用那就更完美了。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值