Python 中文词云实践(wordcloud)遇到的问题

词云项目的地址:https://github.com/amueller/word_cloud(里面有很多example可以自己玩一下)

这个wordcloud包可以根据自己的需求自定义词云的形状。词云其实逻辑比较简单,就是做词汇的词频统计,加上可视化。如果自己去实现是一个比较麻烦的事,这个包用着还不错,就是在做中文词云的时候偶尔会有一点点的小问题需要解决一下。下面就是我自己用的过程中遇到的一些问题,以及解决办法。由于词云的使用示例比较多,所以这里主要记录遇到的问题,没有给出简单示例。

1、中文词云显示的问题

     词云是基于matplotlib画图的,我们知道,这个Python画图包一直就不支持中文,之所以wordcloud库创建词云时会将中文显示为矩形,是因为使用的字体不能支持中文,解决方法是使用一个能够支持中文的字体。wordcloud有个专门设置字体的参数,我是通过这个解决问题的。解决步骤大概就是:

(1)下载支持中文的字体,我下载的"simhei.ttf"

(2)添加字体的路径:

font = r'C:\Windows\Fonts\simfang.ttf'
wc = WordCloud(collocations=False, font_path=font, width=1400, height=1400, margin=2).generate(text.lower())

 上面是我找到的比较有用的解决办法,也看到有其它解决办法可以参考一下:

https://blog.csdn.net/qq_34777600/article/details/77455674

2、词的重复出现

问题是,自己统计的词频很正常,但是在图片里面会出现一个词出现两次显示的情况,这个时候我找到了一个解决办法就是:

与collocations参数有关,默认collocations=True,会统计搭配词。比如你的text是“我在  拜访  客户”,当collocations为True时,就会把“拜访客户”也当作一个词进行统计,所以会出现重复。

wcd=WordCloud(font_path='simsun.ttc', collocations=False,width=900,height=400,background_color='white',max_words=100,scale=1.5).generate(text)

3、不在考虑范围内的词的出现(子词自动统计)

解决了上面两个问题后,还出现了一下让人很头疼的问题,就是没有考虑过的子词,它自动给统计出来了,比如“阿里巴巴有限公司”,“百度有限公司”,“腾讯有限公司”,这三个词,最后词云会显示“有限公司”这个词。后面无意间看到了一个同时解决词重复出现和子词自动统计的办法,那就是,自己先把词统计好,然后用generate_from_frequencies()的方式生成词云,这样什么问题都解决了。

import collections

word_count = collections.Counter(words_list)
wcd=WordCloud(font_path='simsun.ttc', collocations=False,background_color='white',scale=1.5).generate_from_frequencies(word_count)

在画图的时候可以设置一些属性,比如图云的形状,背景颜色,字体的颜色什么的,可以参考下面的设置:

Python词云图:指定形状、颜色和字体

python制作词云图

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值