前言
对于数据挖掘来说,并不都是巨量的数据集和复杂而抽象的数学模型,有的时候,我们也需要直观的图形来表示,对于文本的数据分析来说,词云wordcloud
就是其中一种较为流行的可视化方式。下图就是Solidot3个月新闻的高频词的一个可视化。
实例展示
TOP10
TOP50
TOP100
中文分词简单实现
经过对比几个流行的python中文分词库,我选择了jieba
jieba主要模式
支持三种分词模式:
- 精确模式,试图将句子最精确地切开,适合文本分析;
- 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
- 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。支持繁体分词
支持自定义词典
其他的功能可以进入该库的github页面学习jieba。
TF-IDF算法的关键词的提取
关于该算法的解释: TF-IDF
因为jieba
集成了实现,所以我们可以很简单的使用这个算法进行高频词提取。
python的使用:
1 | import jieba.analyse |
停用词和词典的导入
如果你不是使用停用词和自定义的词典的话,你会发现像万一
、亿美元
之类的词会成为我们的高频词,一篇文章自然会出现这些量词之类的,而且会频繁出现,或者会把如云计算
拆分成计算
这个词,而我们需要的是里面出现的一些名词,这时候我们就需要停用词和自定义词典来更为准确的分词。
1 | jieba.load_userdict("userdict.txt") |
停用词词典示例:
WordCloud(词云)构建
主要参数
1 | # from wordcloud import WordCloud |
需要注意的是WordCloud
如果不指定中文字体会无法显示
wc.generate_from_frequencies(data_dict)
根据词频生成WordCloud
。参数为Python的字典类型。
如果想使用matplotlib
进行调试的话,我们这样使用:
1 | import matplotlib.pyplot as plt |
matplotlib显示的时候会比输出的图片有白边,是因为那个地方原来是坐标系,我们使用axis()方法屏蔽了
保存图片
1 | wc.to_file('test.png') |
词云形状
其实还可以使用图片来生成词云的形状的,这个可以百度或者谷歌一下