從網友熱評看孟宴臣有多火—python文本分析

文本分析作為自然語言處理的應用之一,在全世界應用廣泛。結合最近口碑出圈的孟宴臣,我們來學習下如何利用python語言進行文本分析,寓教于樂。
利用python進行文本分析主要使用jieba庫,jieba庫屬于目前中文分詞的佼佼者。jieba庫的官網網址:https://github.com/fxsjy/jieba。
一、jieba的介紹以及安裝
1.jieba分詞模式的介紹
jieba庫目前支持的函數如下:
jieba.lcut(text) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?精確模式,返回一個列表類型,建議使用
jieba.cut(s) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 精確模式,返回一個可迭代的數據類型
jieba.cut(s,cut_all=True) ? ? ? ? ? ? ? ? ? ? ?全模式,輸出文本s中所有可能的單詞
jieba.cut_for_search(s) ? ? ? ? ? ? ? ? ? ? ? ? 搜索引擎模式,適合搜索引擎建立索引的分詞結果
jieba.lcut(s) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 精確模式,返回一個列表類型,建議使用
jieba.lcut(s,cut_all=True) ? ? ? ? ? ? ? ? ? ? ?全模式,返回一個列表類型,建議使用
jieba.lcut_for_search(s) ? ? ? ? ? ? ? ? ? ? ? ? 搜索引擎模式,返回一個列表類型,建議使用
jieba.add_word(w) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?向分詞詞典中增加新詞w
jieba目前支持的分詞模式有四種:
精確模式,試圖將句子最精確地切開,適合文本分析;
全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
搜索引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞;
paddle模式,利用PaddlePaddle深度學習框架,訓練序列標注(雙向GRU)網絡模型實現(xiàn)分詞。同時支持詞性標注。paddle模式使用需安裝paddlepaddle-tiny,pip install paddlepaddle-tiny==1.6.1。目前paddle模式支持jieba v0.40及以上版本。jieba v0.40以下版本,請升級jieba,pip install jieba --upgrade
jieba.cut(text,use_paddle=True)
2.jieba庫的安裝
jieba庫的安裝依賴python,python安裝官網Download Python,安裝好python之后,通過命令提示符輸入以下內容:
pip install jieba

python代碼的運行推薦使用jupyterlab,個人覺得直觀方便

通過cmd輸入jupyter lab,啟動jupyter lab界面

二、文本清洗
1.文本的搜集
研究孟宴臣熱度用到的是《我的人間煙火》某瓣網友的評論,這里獲取了前100條的網友評論,初始的文本長這樣:

2.設置停用詞
要進行文本分析,需要清洗文本中沒有意義的字或者詞語,比如助詞“的、了,呢,嗎”、指示代詞“這個、那個、這些、那些”等等,所以我們要設置停用詞,將文本中這些停用詞去除。這里我用到的是《中科院計算所停用詞表》,需要的同學可以關注我,后臺回復【停用詞表】領取。

3.設置自用詞
自用詞是指文本分析涉及到的專有名詞,這次因為是分析《我的人間煙火》的網友評論,所以我將其中的主要人物以及扮演者的名字,作為了自用詞。

4.文本清洗代碼
文本清洗過程包括讀取自用詞、定義讀取文本函數、定義讀取停用詞函數、定義清洗函數
三、文本分析
1.精確模式分詞
完成上述三項函數的定義后,接下來是進行分詞操作,建議選擇精確模式。

2.提取關鍵詞
通過精確模式完成分詞之后,接下來提取關鍵詞,查看關鍵詞在整體文本中的權重,用到的是jieba.analyse.extract_tags()函數,該函數基于TF-IDF算法,主要思想是:如果某個詞或短語在一篇文章中出現(xiàn)的頻率TF高,并且在其他文章中很少出現(xiàn),則認為此詞或者短語具有很好的類別區(qū)分能力,適合用來分類。

上式分子是該詞在文件中的出現(xiàn)次數,而分母則是在文件中所有字詞的出現(xiàn)次數之和。
jieba.analyse.extract_tags()函數參數如下:
jieba.analyse.extract_tags(sentence, topK=5, withWeight=True, allowPOS=())
參數說明 :
sentence 需要提取的字符串,必須是str類型,不能是list
topK 提取前多少個關鍵字
withWeight 是否返回每個關鍵詞的權重
allowPOS是允許的提取的詞性,默認為allowPOS=‘ns’, ‘n’, ‘vn’, ‘v’,提取地名、名詞、動名詞、動詞
3.關鍵詞排序結果

4.繪制詞云
基于清洗后的文本,繪制詞云,主要用到wordcloud庫。


注意:font_path指本地字體路徑,一定要寫對,如果寫對了還出現(xiàn)cannot open source的報錯,可以嘗試pip install --upgrade wordcloud,更新詞云。
5.詞云結果

四、總結
結合關鍵詞以及權重,可以看到關鍵詞孟宴臣(0.31)與楊洋(0.31)并列,但是魏大勛(0.30)緊跟其后,所以魏大勛以孟宴臣+魏大勛兩項熱點詞入圍遙遙領先。是演員成就了角色,也是角色帶火了演員,二者相互加成。比較搞笑的是“油膩”兩個字也赫然在列,和男主這個關鍵詞關聯(lián)緊密。
最后給大家推薦下我常用的分析小助手—chatGPT,1+1>2的效果,有不懂問它就行。

這是訪問的地址,大家可以自行嘗試:
https://chat.plexpt.com/i/42299chat.plexpt.com/i/42299
歡迎交流討論,一起變更棒!