现在,网上很多可视化的方法,有一种就是词云图。
词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,方便领略文本的主旨。
词云图的原理整体来说比较简单,但是效果还是蛮不错的,可以从纷繁复杂的信息中找到最关键的信息~感觉可以用来进行政策分析、新闻舆情的分析~
主要研究的是用python和第三方包的方式来进行制作~当然,网上也有一些在线的网站可以支持,但是直接写好脚本调用,就不用自己一个一个导入啦,批量生成最近政策的关键图像,也是蛮不错的哟~
之前接触词云图一直用的是worldcloud这个包,最近又接触到了pyecharts,也可以进行词云图的制作。
wordcloud生成词云图
wordcloud 安装
直接使用pip安装wordcloud~因为涉及到要进行图片生成,所以,也要下载安装matplotlib。
pip install wordcloud
pip install matplotlib
wordcloud API
wordcloud 库把词云当作一个WordCloud对象来进行处理:
- WordCloud([font_path, width, height, …]) - 进行词云图对象的创建和绘制
- ImageColorGenerator(image[, default_color]) - 根据图片颜色生产词云绘制颜色
- random_color_func([word, font_size, …]) - 随机生成词云绘制颜色
- get_single_color_func(color) - 使用单色进行词云绘制
使用Wordcloud对象可以进行词云图的绘制,其中,可以设置图片的形状。
wordcloud使用
词云图生成准备
对于中文来说,和英文不太一样,英文本身使用单词的空格进行了天然的划分~所以,在进行词云图生成的时候,需要和英文一样对于中文进行分词的处理,也就是按照中文词语的意思进行词的划分~
目前,国内最常采用的中文分词工具是jieba包。
jieba分词包下载安装
pip install jieba
jieba分词包使用
使用jieba的方法进行文章分词,常用的是cut()和lcut(),可以根据需要进行选用。
- jieba.cut() - 生成一个生成器,如果想要得到list,需要使用for循环得到
- jieba.lcut() - 直接得到分词后的list
import jieba
text = '你想要分词的文本数据'
# jieba.cut() - 生成一个生成器,如果想要得到list,需要使用for循环得到
word_list1 = [word for word in jieba.cut(text)]
# jieba.lcut() - 直接得到分词后的list
word_list2 = jieba.lcut(text))
如果文本为从txt等文件中获得,则使用open()的方式进行文本获取,并且,使用re的函数来进行中文提取~
import jieba
import re
# 使用open()进行文件读取
text = [i.strip() for i in open('你的文件.txt').readlines()]
# cut_all = False - 表示使用精确模式进行拆分
# re.findall('[\u4e00-\u9fa5]', text) - 表示进行中文提取
word_list = []
for sentence in text:
text = jieba.lcut(''.join(re.findall('[\u4e00-\u9fa5]', sentence)), cut_all = False)
word_list.append(text)
停用词使用
因为中文中有很多语气词和连接词&#