利用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词云的绘制就先讲到这了。
参考: 参考: 参考:
