python爬虫-数据可视化之词云
基于爬取的数据进行分析-生成统计词云
-
本篇是通过生成词云来介绍相关库及相关知识,不讲解生成词云的具体操作
-
生成词云步骤:
1 分词处理--Jieba库
Jieba是一个用于中文分词处理的第三方库
-
Jieba分词的原理
- 利用中文词库,确定汉字之间的关联概率
- 汉字间概率大的组成词组,形成分词结果
- 除了分词,用户可以添加自定义词组
1.1 jieba三模式
函数 | 描述 | 示例 |
---|---|---|
jieba.lcut(s) | 精准模式:把文本精确切分,不存在冗余单词。返回类型为列表。默认为精准模式。适合于文本分析 | jieba.lcut('中国是一个伟大的国家') 【结果】:['中国','是','一个','伟大','的','国家'] |
jieba.lcut(s,cut_all=True) | 全模式:把句子中可能的词语都扫描出来,有冗余 。返回类型为列表 | jieba.lcut('中国是一个伟大的国家',cut_all=True) 【结果】:['中国','国是','一个','伟大','的','国家'] |
jieba.lcut_for_sear_ch(s) | 搜索引擎模式:在精确的基础上,对长词再次切分。返回类型为列表 | jieba.lcut_for_search('中华人民共和国是伟大的’) 【结果】: ['中华', '华人', '人民', '共和', '共和国', '中华 人民共和国', '是', '伟大', '的'] |
1.2 使用自定义词典
-
将自己自定义的词典引入jieba词库
- 提高正确率
-
添加词典语法如下:
jieba.load_userdict(dict_path) #dict_path为自定义的词典路径
-
自定义词典规则:
一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。
- 词性表对照表网上搜索就有
- 示范:
- 自定义之前:张三 / 是 / 大 / 数据 / 开发/人员/ 也 / 是 / 云 / 计算 / 方面 / 的 / 专家 /
- 添加自定义词典之后:张三 / 是 / 大数据 / 开发/人员/ 也 / 是 / 云计算 / 方面 / 的 / 专家 /
1.3 关键字提取停用词[1]
-
语法如下:
jieba.analyse.set_stop_words(dict_path) # dict_path为自定义语料库的路径
2 词频统计
-
基本思路:
-
完成分词处理
-
定义空字典,对分词结果进行词频统计
def getWordFreq(word_list,word_count) #word_list:用于传入分词后的列表;word_count:用于传出统计后的结果 for word in word_list: word_count[word] = word_count.get(word, 0) + 1
-
-
如果有停用词,百度、哈工大等机构提供了中文停用词表,我们可直接下载
-
加入停用词后的代码为:
def getWordFreq(word_list,word_count) #word_list:用于传入分词后的列表;word_count:用于传出统计后的结果 stopwords = getStopWord() #getStopWord():这是自己定义的停用词函数 for word in word_list: if word not in stopwords: word_count[word] = word_count.get(word, 0) + 1 return word_count
-
3 词云展示--PyEcharts
通俗来讲$python+echarts=pyecharts$。而Echarts是由百度开源的的数据可视化工具包,
3.1 PyEcharts简单使用
-
安装pyecharts
pip install pycharts
-
进入官网寻找需要使用的可视化形式
- pyecharts官网
-
引入包
from pyecharts.charts import WordCloud
- 因为例子我采用的可视化词云,所以引入的是词云包
-
C+V大法加简单修饰即可
3.2 词云生成
-
词云图使用的是pyecharts的add方法函数,使用方法如下(这就是官网的使用方法cv而来微改):
def add( series_name: str, # 系列名称。用于 tooltip 的显示,legend 的图例筛选。 data_pair: Sequence, # 系列数据项。[(word1, count1), (word2, count2)] shape: str = "circle", # 词云图轮廓。有 'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star' 可选 word_gap: Numeric = 20, # 单词间隔 word_size_range=None, # 单词字体大小范围 rotate_step: Numeric = 45, # 旋转单词角度 tooltip_opts: Union[opts.TooltipOpts, dict, None] = None, # 提示框组件配置项,参考 `series_options.TooltipOpts`
- 其中series_name,data_pair,shape是三个必传参数
-
演示代码:
def drawWordCloud(word_count): wCloud =WordCloud() #实例词云 wCloud.set_global_opts(title_opts=opts.TitleOpts(title='高频评论词')) #设置词云标题为“高频评论词”。set_global_opts:是pyecharts的全局配置项设置的方法。使用前要导入 wCloud.add( series_name='评论', data_pair=list(word_count.items()), shape='penagon' ) #生成词云 wCloud.render(r'woedCloud.html') #创建html文档。render用法以后再讲 return wCloud
注释:
停用词是指在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉的某些字或词,这些字或词即被称为Stop Words(停用词)。 ??