python 爬蟲-數據可視化之詞雲


基於爬取的數據進行分析-生成統計詞雲

  • 本篇是通過生成詞雲來介紹相關庫及相關知識,不講解生成詞雲的具體操作

  • 生成詞雲步驟:
    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(停用詞)。 ↩︎


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM