利用python绘制简易词云图(使用jieba进行中文分词)

词云(wordcloud)图能过滤掉大量的文本信息,使我们能抓住问题的集中点(一般集中点就是经常提到的点,也就是词频数会比较高)。其实制作词云没什么技术含量,主要就是将用于绘制词云的所有词都传给软件,然后软件就会返回一张词云图。

本文介绍如何使用python绘制简单的词云图。


制作基础的词云图

python中词云可以直接在输入为一大段文字的情况下生成,不需要再做更多处理。比如以下代码:

画出来的效果: 可以看到上面的词云图中的词不是很像词了哈哈,所以可能整段的长句子来做词云还是效果没多好的。

除开内容外,要美化的话也是有很多的参数可以使用的,如width, height, background_color, mask, scale, font_path。这里的mask可以将词云画到某个形状的图案中。这里就不多介绍了。

jieba分词后制作词云

制作词库

要画词云,就首先需要准备词库。python中可以使用jieba进行中文分词,jieba可以将一大段文字分成很多个意义有联系的词语。当然如果你的输入数据就是类似词库的,那么这步可以跳过。使用jieba进行分词所使用到的函数有:

    jieba.cut, jieba.lcut:功能相似,都是分词,但是cut生成的是迭代器,需要通过for循环或者next来获取值,而lcut直接返回一个结果的列表。cut_all参数设置是否全匹配,默认为False表示严格分词,不会有两个相邻的词使用同一个字。而如果为True的情况下则表示不严格分词,而会有相邻的词使用同一个字的情况。比如天气很美好在为True的情况下会被分为[天气, 很美, 美好],在为False的情况下分为[天气, 很, 美好]。此外可以使用HMM 参数用来控制是否使用 HMM 模型(可能某些情况下使用HMM模型更好吧) jieba.cut_for_search, jieba.lcut_for_search:功能也都是分词,cut_for_search也是生成迭代器,而lcut_for_search返回列表。这两种都是搜索引擎模式,结果适合于搜索引擎构建索引。也就是在上面的cut模式分词的基础上再将长词进行一定分割。在这两个函数中默认的HMM为True

示例:

!pip install jibe
import jieba
jieba.lcut(天气很美好)   # 结果 [天气, 很, 美好]
jieba.lcut(天气很美好)   # 结果 [天气, 很美, 美好]

这里不多介绍了,有兴趣可以去学习其它资源

画词云图

制作词库完成后就可以直接画词云图了。画图的方法也是很简单。

画图结果: 可以看到图中有很多的的,是,你,我这些词,而这些词一般来说可能不是我们想要看到的。因此有时候我们需要加入一些停用词,这里可以使用比如["你","我","他","了","一个","是","一","《","》","0", " ", "。", "—", "“", "”", ",", ";", ","],此外其中的数字也是无意义的,也可以去掉。去掉这些词后,看下词云的样子吧:

结果: 可以看到结果还不错,能够大概反映一些东西。

python词云的绘制就先讲到这了。

参考: 参考: 参考:

经验分享 程序员 微信小程序 职场和发展