基於爬取的數據進行分析-生成統計詞雲
-
本篇是通過生成詞雲來介紹相關庫及相關知識,不講解生成詞雲的具體操作
-
生成詞雲步驟:
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
-
進入官網尋找需要使用的可視化形式
-
引入包
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(停用詞)。 ↩︎