理论与实战:一篇看懂Python词云


前言
本文初编辑于2024年2月2日
该项目代码的仓库地址:https://github.com/A-Piece-Of-Maple/WordCloud
CSDN:https://blog.csdn.net/rvdgdsva
博客园:https://www.cnblogs.com/hassle
总结
截至2024.2.2,想要学习词云,能够找到的文章大部分都是【基于文本生成的词云(使用ganerate)】,而不是【基于频率生成的词云(使用generate_from_frequencies)】,而且功能各有残缺,有些API还没有解释清楚,到头来还是要自己总结一下各个零散帖子的精华做一篇新人指导
本程序中文可用,按照词语频率分布,Python实现,调用jieba中文分词库和wordcloud库,支持停用词,支持自定义词组,支持自定义图片背景,支持自定义文字对应图片颜色
实现原理
导入一篇txt文档,使用jieba库对文档中的文字进行分词,计算各个词汇出现的频率,使用wordcloud库按照词汇频率的大小生成词云。
注意,不是使用wordcloud.generate()
,这个方法没有按照词汇频率的方式实现词云
停用词
在讲区别之前,来看看停用词是什么。下面是不调用停用词的词云,观感很差对吧。

实现方式区别
【基于文本生成词云】:txt文章->调用wordcloud.generate()
,内部调用停用词->保存图片
这种方法观感很差,停用词也不是万能的。把没用的词剔除掉远不如把频率高的词提出来

【基于频率生成词云】:txt文章->分词->去空格空行->自己手动去除停用词->计算频率生成字典->调用wordcloud.generate_from_frequencies()
->保存图
这种方法是理想方法

注意!wordcloud.generate()
的参数是字符串,wordcloud.generate_from_frequencies()
的参数是字典
你们会注意到,【基于频率生成词云】操作会麻烦一些,需要手动去除停用词。笨方法,但是有用。
看源码,对于stopword
的操作,如果调用WordCloud()
进行对象的创建,这个创建过程是没有办法处理字典元素的,很蠢
stopwords = set([i.lower