?

基于Python影評數據挖掘與分析
——以《你好,李煥英》為例

2021-10-25 03:43邵小青賈鈺峰章蓬偉
信息記錄材料 2021年10期
關鍵詞:你好,李煥英李煥英分詞

邵小青,賈鈺峰,章蓬偉,丁 娟

(新疆科技學院信息科學與工程學院 新疆 庫爾勒 841000)

1 引言

近年來,自然語言處理技術得到了以計算機科學為代表的自然科學領域到社會科學領域的廣泛關注,并且在新聞傳播、輿論管理、觀點分析等問題中展示了不容忽視的價值[1]。隨著互聯網的發展和大數據時代的到來,網絡上的數據分析僅僅靠人工篩選挖掘出有價值的信息是實現不了的,如何快速高效地從不規則、海量的文本中挖掘出有意義的信息并分析情感傾向性是自然語言處理(natural language processing,NLP)領域研究的熱點。NLP是人工智能領域的一個分支,主要是運用自然語言處理和理解人類的語言,應用包括機器翻譯、信息提取、文本分類、語音轉換等。本文通過Python語言編寫爬蟲程序自動獲取數據,篩選有價值的信息,對數據進行挖掘來解決業務問題。對豆瓣影評數據進行清洗與篩選,采用Python的類庫SnowNLP進行影評數據的情感分析,將有價值的數據通過可視化技術展示出來,可以幫助用戶更高效便捷地獲取到有價值的信息,同時為媒體、電影市場、社交網站提供口碑及相關服務的幫助。

2 數據采集

登錄豆瓣電影《你好,李煥英》頁面,Python爬取解析網頁源碼,由于豆瓣電影短評總數只能顯示500條評論,爬取到數據500條。首先確定數據所在的url,《你好,李煥英》豆瓣影評的URL是https://movie.douban.com/subject/34841067/comments?start=20&limit=20,34841067為電影ID,start=20影評開始的頁面,limit=20是每頁評論數。使用requests庫發送網絡請求,url='https://movie.douban.com/subject/34841067/comments?status=P',headers={"User-Agent":Mozilla/5.0 (Windows NT 10.0;Win64;x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/90.0.4430.72 Safari/537.36 Edg/90.0.818.42},查看文本內容:response=requests.get(url=url,headers=headers)。使用xpath解析影評數據,html_data=response.text,selector=parsel.Selector(html_data),comments_list=selector.xpath("http://span[@class='short']/text()").getall()。每條數據內容有10個維度,數據保存結果見圖1。

圖1 影評數據

3 數據預處理

爬取到的電商評論數據集存在很多無意義或重復的數據,如果不進行數據清洗預處理,把這些數據進行分詞、詞頻統計及情感分析等,會增加很大工作量,甚至影響實驗結果的準確性[2]。

去除重復、不完整、語義不清的數據,獲取有效評論485條。借助jieba分詞對清洗后的每條評論進行中文分詞,以哈爾濱工業大學停用詞詞典為基礎對停用詞進行過濾,最后生成標準化的文本。

4 影評結果可視化

基于Matplotlib庫實現影評結果可視化,以《你好,李煥英》為例,影評餅狀圖見圖2,影評評分餅圖可相對直觀展示出影評星級比例;詞云圖見圖3,影評關鍵詞展示圖可展示出觀眾對《你好,李煥英》的熱點話題。其中,五星占41以上,一星占11%,影評情感反饋這是一部催淚感人的電影,僅有一小部分人認為是爛片。從圖2、圖3可以初步判斷大多數觀眾對《你好,李煥英》這部電影持有喜愛和推薦的態度,值得觀賞。

圖2 影評評分餅圖

圖3 影評關鍵詞展示圖

5 影評情感傾向性分析

影評描述性可視化僅能在一定程度上展現觀眾對電影的情感傾向和關注話題,不能挖掘出評論蘊藏的深層次情感。本文通過SnowNLP進行影評的情感分析?,F在自然語言處理庫基于英文的居多,而SnowNLP庫是Python中用于專門處理中文文本的類庫,功能豐富,能實現中文分詞、詞性標注、情感分析、提取文本關鍵詞、提取文本摘要及計算文本相似度等[3]。它受到TextBlob的啟發而寫的,沒用NLTK,所有算法都是自己實現的,有自己訓練好的字典,采用unicode編碼。通過閱讀SnowNLP源碼,情感判斷過程是首先讀取分類好的文本內容,對文本進行分詞,去除停用詞;計算每個詞出現的頻數,計算文本的先驗概率和后驗概率,選擇概率較大的類別。本次數據分析操作步驟是首先按行讀取評論文本,循環遍歷通過sentiments方法,計算得到情感分數,生成情感分數柱形圖以及波動曲線圖。核心代碼如下:

line = source.readlines( )

sentimentslist = [ ]

for i in line:

s = SnowNLP(i)

sentimentslist.append(s.sentiments)

plt.hist(sentimentslist, bins = np.arange(0, 1, 0.01), facecolor = 'g')

plt.xlabel('Sentiments Probability')

plt.ylabel('Quantity')

plt.title('Analysis of Sentiments')

plt.show()

將sentiment情感分析縱坐標區間從[0,1.0]變為[-0.5,0.5],其中0以上表示積極情感,負數表示消極情感。如圖4、圖5所示,通過情感分布圖說明電影持喜愛和推薦的態度觀眾占絕大多數,積極情感相對集中,電影值得一看。

圖4 情感分數柱形圖

圖5 情感分數波動曲線圖

6 結語

大數據時代,人人是信息的締造者也是使用者,越來越多的企業都嘗試從數據中挖掘有價值的信息,來解決業務的問題。本文采用Python爬取數據,基于SnowNLP對影評數據進行情感分析,從而幫助用戶更高效便捷地獲取到有價值的信息,同時為媒體、電影市場、社交網站等提供口碑及相關服務的幫助,有一定的研究價值。本文對影評數據情感傾向性進行挖掘分析,由于SnowNLP庫是基于商品評論訓練好的模型,本次使用中沒有重新訓練數據,因此數據分析的準確率有待提高。下一步優化算法,訓練好數據,提高數據分析的準確率。

猜你喜歡
你好,李煥英李煥英分詞
你好,我的“李煥英”
《你好,李煥英》 觀后感
《你好,李煥英》:如果這就是TA想要的呢
你永遠是我心中的女神
分詞在英語教學中的妙用
走進《你好,李煥英》襄陽取景地
《你好,李煥英》的成功能否復制
《你好,李煥英》 定檔大年初一講述賈玲和母親的故事
結巴分詞在詞云中的應用
結巴分詞在詞云中的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合