首页 > 技术文章 > python 爬虫-数据可视化之词云

handsome-black 2021-11-20 11:49 原文

基于爬取的数据进行分析-生成统计词云

  • 本篇是通过生成词云来介绍相关库及相关知识,不讲解生成词云的具体操作

  • 生成词云步骤:
    image-20211120083721744

1 分词处理--Jieba库

Jieba是一个用于中文分词处理的第三方库

  • Jieba分词的原理

    1. 利用中文词库,确定汉字之间的关联概率
    2. 汉字间概率大的组成词组,形成分词结果
      • 除了分词,用户可以添加自定义词组

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 词频统计

  • 基本思路:

    1. 完成分词处理

    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
    
  • 进入官网寻找需要使用的可视化形式

  • 引入包

    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_namedata_pairshape是三个必传参数
  • 演示代码:

    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
    

注释:


  1. 停用词是指在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉的某些字或词,这些字或词即被称为Stop Words(停用词)。 ↩︎

推荐阅读