楊 戈 ,楊麓濤
(1.北京師范大學珠海分校 智能多媒體技術重點實驗室,廣東 珠海 519087;2.北京大學深圳研究生院 深圳物聯網智能感知技術工程實驗室,廣東 深圳 518055)
網絡輿情是指網絡用戶對社會各方面熱點問題所發表的見解和建議的輿論,是社會輿情的一種體現,是公眾對社會中各種熱點事件和問題所表達的態度、想法、情緒等的集合。互聯網的快速發展使得網絡輿情的形成和傳播速度不斷提升,對社會的影響巨大。
文獻[1]證明了網絡輿情的發展具有混沌的特性,即表現為亂序、無規則、隨機變化。在網絡輿情傳播的過程中,微博給網絡輿情的形成、發酵和傳播提供了一個強大的互聯網平臺,給其用戶提供了一個向全世界分享信息、發表評論和表達訴求的平臺,這些輿論內容在短時間內會大規模地擴散,甚至會影響事件的走向。
本文首先實現一個基于Scrapy 框架的微博評論爬蟲,將某熱點事件的若干條微博評論進行爬取并存進數據庫,然后進行文本分割和LDA(Latent Dirichlet Allocation)主題聚類,最后采用TFIDF-NB(Term Frequency Inverse Document Frequency-Navie Bayes)算法進行文本情感分類。
(1)爬蟲
爬蟲全稱為網絡爬蟲,是一種可以對互聯網上的信息進行自動化瀏覽的網絡腳本或程序,可實現對海量互聯網信息進行瀏覽、爬取等操作,并將抓取到的信息存儲于本地中。
網絡爬蟲可以分為4 種[2]:通用網絡爬蟲[3]、主題網絡爬蟲[4]、增量式網絡爬蟲[5]、深層網絡爬蟲[6-7]。
(2)情感分類
情感分析是指識別文本中潛在的想法、情感和態度的方法[8]。情感分類是情感分析的核心內容,情感分類的作用是識別文本數據中的觀點,對情感的積極或消極情緒進行分類[9]。
目前情感分類主要有兩種方法,一種是基于詞典的方法[10-13],另一種是基于機器學習的方法[14-16]。
基于Scrapy 框架的微博評論爬蟲(Weibo Commit Crawler based on Scrapy)開始運行,檢測微博內容存儲數據庫是否存在,如果數據庫不存在,程序會先新建一個新的數據庫。創建數據庫結束后,檢測存儲數據表是否存在,如果數據表不存在,程序會新建一個新的數據表。當程序確認數據庫和數據表均已存在后,開始依次構造每一頁的評論的請求,并依次遍歷每一頁的評論文本數據,當遍歷頁面達到程序設定要求時,即進行數據的清洗,否則仍繼續遍歷。數據清洗結束后,將數據存儲進數據庫中,并關閉數據庫,爬蟲程序至此運行結束。
網絡爬蟲運行的基本流程主要分為以下步驟:(1)網頁獲取;(2)網頁解析;(3)數據存儲。網絡爬蟲的原理是進行瀏覽器的模擬發送HTTP 請求,爬蟲程序通HTTP請求向網頁Web 服務器發送請求,獲取服務器端的響應后對網頁進行下載,接著完成爬蟲的爬取工作。網頁解析是對網頁進行去噪的操作,現今的網頁大多數是以HTML 的格式存在,網頁去噪就是對網頁中所需要的內容進行提取,網絡爬蟲在對網頁內容進行提取時,需要分析網頁HTML 結果,從而對有用信息進行提取。
微博評論爬蟲所爬取的文本數據以語句為主,為了更好地進行分析,需對微博評論文本進行分割,將評論從語句轉變成為詞語,即分詞:將語句文本切割成以詞語為單位。本文的文本分割技術使用了開源的一個Python 第三方庫:jieba。jieba 庫在如今的中文分詞領域中是較好的第三方庫,為了實現更好的分割效果,本文使用分詞精確模式。精確模式是將文本以最準確的方式進行切分,適用于情感分析等精度要求較高的分析。為了提升分割準確率,本文先進行停用詞(Stop Words)的設置。停用詞設置是一個信息檢索過程中常用的手段,可使用戶節約硬件和時間成本,提升分割準確率,在自然處理語言文本的過程中會過濾某些無用字詞。為了使某些較為新或者復雜的詞被誤分割,因此本文在分割前設置了停用詞,通過使用騰訊、搜狗、盤古等輸入法公司的詞庫建成停用詞集,以此提升精確度。
LDA 是一個三層貝葉斯主題的無監督機器學習算法,其目的是發現文本中隱藏的主題信息,在無標注的情況下在文本中發現隱性的語義維度,從而整理出文本的主題。隱性語義實質上就是利用文本中詞語的共同特征來發現文本的主題分類結構。
LDA 模型生成文檔方式如下:(1)按先驗概率P(di)選擇一篇文檔di;(2) 從狄利克雷分布α 中取樣生成文檔di的主題分布θi,即主題的分布θi由超參數α 的狄利克雷分布生成;(3)從主題的多項式分布θi取樣生成文檔di第j 個詞的主題Zi,j;(4)從狄利克雷分布生成β 取樣生成主題Zi,j對應的詞語分布φZi,j,即詞語的分布φZi,j由超參數β 的狄利克雷分布生成;(5)從詞語的多項式分布φZi,j中采樣最終生成詞語ωi,j。
1.3.1 TF-IDF 算法
TF-IDF(Term Frequency–Inverse Document Frequency)是一種用于信息檢索、文本挖掘的算法。TF-IDF 算法作為一種統計學的檢索算法,可以用于評估一個字或一個詞在一份文本或者語料集中的重要性。這個算法由兩部分組成,分別是詞頻和逆向文件概率,一個詞在一篇文章的重要性與出現頻率成正相關關系,但也會隨著它在語料庫中出現的頻率成負相關關系。其核心思想是:若一個詞語在一份文本中出現的頻率很高,但在其他文章或者語料集中出現的頻率較低,則該詞語擁有較好的代表性,適合作為主題詞。
詞頻(Term Frequency):表示詞語在某一文本中的出現頻率,如式(1)所示,其中Ti,j代表詞語i 在文件dj中的詞頻,n 代表詞語,ni,j代表詞語i 在文件dj中出現的次數,分母表示文件dj所有詞語的總數。

逆向文件頻率(Inverse Document Frequency):某一詞語的逆向文件頻率,可以通過總文件數目除以包含該詞語文件的數目,再把商的結果取對數即可得到,如式(2)所示,其中Ii代表詞語i 的IDF,|D|是語料集中的總文件數目,|{j:ni∈dj}|是含有該詞語的文件數目。當該詞語不存在于語料集中時,會導致分母為0,從數學理論上來說是不可以進行對數運算的,故一般情況下使用|{j:ni∈dj}|+1。

所以一個詞語用TF-IDF 算法表示為:

本文通過TF-IDF 算法對微博爬取數據進行一個關鍵詞提取,由于微博評論內容通常包括有一些與主題無關的文本,如用戶名、特殊符號如“@”、表情或一些無實際意義的文本,通過該算法可以實現對這些非重要數據進行過濾和排除,優化數據。
1.3.2 樸素貝葉斯算法
樸素貝葉斯分類算法的原理是,先通過已經給定的訓練集,假設特征詞之間相互獨立,對從輸入到輸出的聯合概率分布進行機器學習,在輸出模型的基礎上,輸入X 從而求出使其后驗概率最大的輸出Y。
設有一樣本數據集表示為D={d1,d2,…,dn},對應樣本數據的特征屬性集表示為X={x1,x2,…,xd},類變量表示為Y={y1,y2,…,ym},即D 可以分為ym類別。其中假設x1,x2,…,xd相互獨立且隨機,則Y 的先驗概率Ppoior=P(Y),Y 的后驗概率Ppost=P(Y|X),由樸素貝葉斯算法可求得,后驗概率可以由先驗概率Ppoior=P(Y)、證據P(X)、類條件概率P(Y|X)計算出,如式(4)所示:

樸素貝葉斯算法在基于各特征之間相互獨立的假設前提下,在給定類別為y 的情況下,可推出式(5):

聯立式(4)、式(5)可得后驗概率,得式(6):

由于P(X)大小不變,故在比較后驗概率時只比較式(6)的分子部分即可。因此可以得到一個樣本數據屬于類別yi的樸素貝葉斯計算,如式(7)所示:
綜上,針對兒童預防接種者,實施精細化護理干預,可有效降低不良反應的發生率,提高家屬的滿意度,效果較好,故值得推廣。

本算法設定,當P(yi|x1,x2,…,xd)的值小于0.4 時,表示為消極情緒;當值為大于等于0.4、小于0.7 時,表示為中立情緒;當值大于等于0.7 時,表示為積極情緒。
本文的實驗機器為Apple MacBook Air,處理器為1.6 GHz 雙核Intel Core i5,RAM 為8 GB,操作系統為macOS Catalina 10.15.2,IDE 為PyCharm 2019.1.3,Python 版本為Python3。
本文以新浪微博平臺一未上映超級英雄電影《上氣》引發爭議為例,其人物刻畫在微博引發了巨大爭議,支持和反對聲此起彼伏。本文選取此事件為例,通過利用基于Scrapy 框架技術編寫實現的微博評論主題爬蟲,爬取了新浪微博平臺10 條微博新聞媒體及自媒體博主的微博下共計3 500 余條評論作為實驗數據集,以進行后續的實驗。
2.2.1 數據統計可視化
通過對切割下來的文本進行數據的可視化與統計,可以快速地確認微博評論文本中出現的高頻詞匯,從而初步確定微博輿情的主題和方向。本文所采用的可視化方法為詞云和高頻詞語柱狀圖。
高頻詞語柱狀圖即以出現頻率最高的詞語作為計算參考值,取值為1。然后詞頻相對較低的詞語按詞頻從大到小依次排列,以柱狀圖的形式給人以直觀的對詞頻的了解。
通過文本分割技術將微博評論爬蟲所爬取的評論數據將所有語句分割成約15 000 個詞語,通過詞云和高頻詞語柱狀圖進行數據可視化統計,以初步確定輿情主題和關鍵詞信息。高頻詞語柱狀圖結果如圖1 所示。
2.2.2 LDA 主題聚類

圖1 高頻詞語柱狀圖結果

表1 LDA 主題聚類結果
2.2.3 情感分類
本文將情感極性分析結果分為以下3 類:積極的、消極的、中立的,其中本話題下中立情感詞占49.0%,積極情感詞占20.6%,消極情感詞站30.4%,可以看出消極負面類情緒詞匯在本話題輿情中占主體地位。
2.3.1 模型訓練
本文通過收集如騰訊、盤古、搜狗等互聯網輸入法公司的詞庫,制作了正、負極性詞典共計9 000 余詞匯,作為TFIDF-NB 算法的訓練樣本,通過前期訓練以達到更高的準確率。文本情感分類領域中常使用準確率(Accuracy)、精確率(Precise)、召回率(Recall)、F1度量值(F1 measure)作為評價一個模型或者算法性能的關鍵指標[17]。
2.3.2 對比結果
通過使用本文提出的TFIDF-NB 算法對所爬取的微博內容進行情感分類,并與其他情感分類模型算法模型進行比較。經多次實驗結果對比后取平均值,結果如表2所示。

表2 算法結果比較
本文通過實現一個基于Scrapy 框架的微博評論爬蟲,對熱點話題微博評論進行爬取存儲,并通過文本分割、數據可視化統計、LDA 主題聚類對輿情進行分析,可以有效地對輿情進行分析和預判。此外,本文提出的基于機器學習的TFIDF-NB 情感分類算法經過模型訓練后,可以對微博評論情感進行有效的分類,其準確率高于傳統的支持向量機和K 近鄰算法,在精確率和召回率方面高于K 近鄰算法,具有較好的情感分類效果。