趙志升 靳曉松 溫童童 梁俊花
摘 要 網上熱點新聞的評論不僅反映了民眾對社會熱點事件的關注程度,也反映了公眾所表現出的各類情感價值和思想動態。基于Python-Snownlp經過數據采集,數據預處理,建立向量模型,數據挖掘與分析對新聞評論中用戶觀點與情緒進行研究,有效實現輿情分析和監控。
關鍵詞 Python Snownlp;網絡爬蟲;聚類分析;情感分析
中圖分類號 G2 文獻標識碼 A 文章編號 1674-6708(2018)219-0104-02
步入“互聯網+”與大數據時代,網絡媒體已經成為輿論新格局的重要組成部分,人們更傾向于通過互聯網關注社會中的熱點問題,并通過網絡媒體來發表個人意見和看法。
文章從鳳凰新聞、新浪新聞、環球網網頁入手,使用Python的Scrapy框架來訪問網頁URL,解析頁面評論信息,將抓取的評論信息存儲到Mysql數據庫中。抽取數據并進行預處理清洗,調用Python開源的分詞模塊jieba分詞對文本進行分詞,去除停用詞、敏感詞,建立相應的語料庫。使用TF-IDF算法將語料庫中的詞語轉化成詞矩陣模型,使用K-Means算法對評論數據進行聚類分析挖掘,采用Python專為中文文本設計的Snownlp模塊對數據進行情感分析。
1 數據采集
采用網絡爬蟲技術進行數據獲取,選取了影響比較大的“造謠伊利董事長失聯事件”這一熱點事件的新聞評論作為數據集,使用網絡爬蟲技術從Web端抓取新聞評論數據集。首先,通過訪問URL地址獲取Web服務器端返回得數據,并解析數據抓取資源。請求模塊是向網頁URL發送請求,并獲取網頁源代碼。解析模塊是對網頁源代碼的解析,去除源代碼中的JS腳本標簽,CSS代碼、HTML標簽等內容,并將解析后的數據下載下來。資源庫則是用來存放從網絡上抓取下來的數據資源。并進行JS拼接,使用Scrapy模塊進行解析,Scrapy模塊是Python開發的一個快速、高層次的屏幕抓取和Web抓取框架,用于抓取Web站點并從頁面中提取結構化的數據。
Scrapy使用了Twisted異步網絡庫來處理網絡通訊,架構清晰,并且包含了各種中間件接口。引擎(Scrapy Engine),用來處理整個系統的數據流處理,觸發事務。然后存儲到Mysql數據庫。
2 數據預處理
從網頁采集下來的文本數據,存在較多的臟數據,需要進行一系列的數據預處理,主要工作有數據清洗、中文分詞、去除停用詞等。從騰訊新聞網抓取的新聞評論數據存在較多的干擾信息,比如重復冗余評論,存在HTML標簽的評論,帶有表情的評論等。從Web采集下來的新聞評論數據并不干凈,使用Python正則表達式的方法re.sub()匹配去除,通過正則表達式查找匹配HTML標簽,并將HTML標簽替換成空字符串。
中文分詞是中文文本挖掘和信息處理的基礎環節,“結巴”分詞是Python社區開源的分詞項目。經過它分詞后的數據還有很多干擾項,在中文文本中,會存在著這樣一些詞匯,使用頻率雖然極高,但是本身卻沒有意義如:“在”“的”“萬一”等以一些中文標點符號和鍵盤符號如:“?”“!”等,這些詞匯本身沒有什么實際意義,使文本的相似度增加,也增加了文本挖掘的難度。本文從網絡上搜集了2 630個常用的停用詞,將其加載到“結巴”分詞的停用詞庫中,在分詞時過濾掉評論數據中的停用詞,排除語料庫中的干擾項,同時也能夠提高中文分詞的準確性。
3 評論數據挖掘分析
將評論數據轉化為向量模型,然后從聚類分析,情感分析和可視化分析3個方面對評論數據進行分析和挖掘。
文章使用向量空間模型來描述文本的特征。過濾了停用詞后的中文分詞詞匯作為新聞評論的特征項詞匯,使用TF-IDF算法對特征詞進行權重計算,TF為“詞頻”,IDF為“逆文檔頻率”,這個值相乘,就得到了一個詞的TF-IDF值。TF-IDF值反映了一個詞在文本中的重要性。評論數據經過數據清洗,中文分詞,過濾停用詞、處理后,使用Python中sklearn模塊的TfidfTransformer、CountVectorizer方法計算TF-IDF權重,轉化為向量空間模型。之后就對數據進行分析與挖掘。
評論數據屬于非結構化數據,數據本身是不帶有屬性和標簽的,因此選擇采用K-Means聚類算法進行聚類分析,K-means算法屬于無監督學習,初始k的選取至關重要。
使用肘部法則解決此問題,肘部法則會將不同k值的成本函數畫出來,當k值增大時,平均畸變程度的改善效果會不斷降低。k值增大過程中,會存在一個點,在這個點之前畸變程度的改善效果下降幅度最大,在這個點之后,畸變程度的改善效果下降趨于平穩,這個點對應的k值就是肘部。對有關“造謠伊利董事長‘失聯”的53 982條新聞評論做了聚類分析,通過分析以及觀察數據,最后得出了7種網民的觀點,7種觀點如下:
1)聚類類別1,評論條數6 774,百分比12.55%,說明:希望造謠者得到嚴懲。
2)聚類類別2,評論條數4 159,百分比7.70%,說明:呼吁不信謠,不傳謠。
3)聚類類別3,評論條數7 524,百分比13.94%,說明:支持出臺網絡監管政策,創造良好的網絡環境。
4)聚類類別4,評論條數4 817,百分比8.92%,說明:部分媒體為了吸引眼球,不計后果。
5)聚類類別5,評論條數5 276,百分比9.77%,說明:大家對信息要有辨別真假的能力,不要被利用。
6)聚類類別6,評論條數22 731,百分比42.11%,說明:劉成昆之流通過小說映射誹謗伊利,造成社會影響。
7)聚類類別7,評論條數2 701,百分比5.00%,說明:該事件對伊利經營造成損失,股價受到波動;總評論條數53 982。通過聚類分析,大多數網民對“造謠伊利董事長‘失聯”事件的持積極態度,其中約56%的網民認為該造謠者和部分媒體為了流量,不計后果,對受害者和社會都產生了很大影響,約13%的網民希望造謠者能夠得到法律嚴懲,7.7%的網友呼吁大家不信謠不傳謠,9.7%的網民認為民眾要能辨別真假信息,不要被牽鼻子帶著走,同時還有約14%的網民希望能出臺網絡管理政策,給大家良好的網絡環境。
為了更好地顯示分析結果,調用百度API和Python的Wordcould模塊來采用分析詞云可視化圖與熱力圖可視化方法去側面分析評論。關鍵詞統計、詞云可視化可以反映出網民們最關心的是哪些方面,詞云可視化得知,對這一事件,網民們提到更多的是“謠言”“網絡”“法治”“媒體”等這類詞匯,說明網民們對造謠者和部分媒體人的譴責,對謠言的抵制,對良好網絡環境的期盼。
而熱力圖來展現網民們對新聞關注的地域性分布。能反映出哪些地點的網民對這一新聞事件比較關心。熱力圖分析得知,關注這一熱點新聞的網民主要聚集中東部尤其是華北平原地區,因為網絡的普及,網絡熱點事件的傳播也越來越迅速,人們對熱點事件的參與度也越來越高,同時內蒙古地區也有一部分網友,說明對網民對本地的產業的關注度也在逐步提高。
4 結論
文章使用數據挖掘技術對“造謠伊利董事長失聯”這一熱點新聞評論做了分析。首先使用Python網絡爬蟲技術從新聞評論頁面抓取網民們的評論數據,對數據進行清洗和中文分詞,去除數據中停用詞,使用TF-IDF方法對預處理后的數據建立向量模型,使用聚類算法來對數據進行聚類。
通過聚類分析后知大多數網民認為該事件對伊利、網絡環境和社會造成了很大影響,希望誹謗者得到嚴懲。采用Python專為中文文本設計的Snownlp模塊對數據進行情感分析網民情緒,可以看出大多數網民這一事件持積極態度。詞云圖分析可知,網民對網絡環境的美好期盼。熱力圖分析可知,中東部地區和產源地的人們更關注新聞事件的發展。
參考文獻
[1]耿大偉.基于Python技術的校園網搜索引擎的設計與實現[D].秦皇島:燕山大學,2015.
[2]欒文娟.BBS準實時輿情監測技術研究與實現[D].武漢:華中科技大學,2012.
[3]張立.基于新聞評論數據的Kmeans聚類算法的研究[D].太原:太原理工大學,2010.
[4]李朋.面向網絡評論性短文本的中文情感分析方法研究[D].重慶:重慶理工大學,2016.
[5]張瑩.在線新聞評論的情感分析研究[D].天津:南開大學,2013.