李首政,王 琪,王 力
(1.南陽理工學院信息工程學院,南陽 473000;2.南陽理工學院土木工程學院,南陽 473000)
微博作為國內最大的社交媒體之一,是一種極其豐富的文本來源,具有內容精煉、時效性強、簡短、通俗等特點,研究專門的情感分析技術有利于決策者分配業務及合理的決策[1]。
過去人工監控和分析的方法不僅需要耗費大量的人力成本,而且產生了很大的滯后性。目前對微博數據進行情感分析的方法主要包括兩大類,基于情感詞典的方法和基于機器學習的方法。基于詞典的方法雖然設計思想簡單,準確率較高,但需依賴于專業人士的詞典構造,人工工作量巨大,且受限于詞典先驗知識,普遍性不強[2]。基于KNN 的分類方法雖然算法簡單,但準確率較低且內存占用量較大[3]。Krishnaveni 等[4]提出面向文本的樸素貝葉斯分類器的基本思想,然而經典的回歸思想和貝葉斯方法都是基于一個假設,即概率分布及分布模型是先驗的,但實際數據集往往并不同分布,因此準確率較低。基于深度學習的方法采用RNN 的方法雖然準確率較高,但需大量數據進行模型訓練,且參數較大,實際應用中小樣本數據存在過擬合問題[5]。支持向量機(SVM)方法采用監督方式學習數據的分布模型,從而有效避免了先驗模型與實際模型差距較大的問題[6-7]。
本文分析微博文本數據,提出了一種基于支持向量機的微博文本分析方法,首先爬取微博文本數據并進行預處理,然后采用TF-IDF 算法進行文本向量化,通過詞袋模型獲得文本特征向量,設計高斯核支持向量機分類模型對文本特征向量進行分類器訓練,最終,獲得微博文本數據的情感分類結果,通過實驗分析本文支持向量機方法的準確性,總體流程如圖1所示。

圖1 總體結構
通過微博數據爬取工具Weibo Spider 爬取微博平臺個人發布數據,獲得微博文本原始數據。然而,直接爬取的數據存在大量冗余和無效內容,且計算機并不能直接處理文本信息,因此需要對文本數據進行預處理,使得文本特征向量更準確,從而達到提高訓練準確性的目的。文本預處理包含文本清洗、情感標注、文本分詞、去除停用詞四部分。預處理后的文本計算機并不能直接處理,本文提出基于關鍵詞的詞袋模型,獲得文本特征矩陣降低文本特征矩陣稀疏性,最終,構建了實驗數據為10000條的訓練集和500條的測試集數據。
1.1.1 文本清洗和情感標注
由于爬取程序是直接復制博主發布的內容,導致爬取的數據中包含了“#”開頭和“#”結尾的Tag等較多無效內容,因此需要對無效信息進行清洗。同時,由于微博短文本的特點,爬取信息中包含較多表情符號,而這些表情符號可以很好地體現人的情感,因此將表情符號轉換為同義文本表示,比如微博常見的允悲表情,用文字“允悲”表示。文本分類是有監督學習,因此清洗后的訓練集文本需進行情感標注,根據自然語言知識及人類普遍認知對爬取的文本逐條進行情感標注,本文設計的情感分為積極和消極兩種情感,積極情感用標簽“1”表示,消極情感用標簽“0”表示。
1.1.2 文本分詞和去除停用詞
文本由詞語組成,而與英文句子相比,中文句子中若沒有空格則無法簡單地識別詞語,因此需要分詞。本文采用jieba 分詞工具進行文本分詞。停用詞是指一些無意義詞的中文詞,比如“你,我,他”,“如果,那么”。去除停用詞是常見的NLP 預處理的一個步驟,能幫助減少特征矩陣的大小,從而減少特征矩陣的計算消耗,實現減少計算時間和成本的目的。清洗后的文本標注“積極”或“消極”情感標簽,用于構建數據集及模型訓練。
本文采用詞袋模型將文本進行向量化。但傳統詞袋模型獲得的文本向量稀疏性較強,存在很大冗余且不能體現句子關鍵詞,因此本文提出基于關鍵詞的詞袋模型,從而獲得文本特征向量,算法通過IF-IDF 方法獲得,包括三個步驟。
第一步,通過TF-IDF 算法提取文本特征詞,由特征詞構建新的文本詞袋,從而解決了傳統詞袋模型高冗余性的問題,同時能夠體現詞的權重概率。
特征詞提取主要是指提取出有利于情感分析分類的情感詞,本文采取TF-IDF 算法計算每個詞的IF-IDF 值,并采用L2 范數進行標準化,選取文檔權值最高前20 個詞作為特征詞。TF 是詞出現的頻率,TF-IDF 的基本思想是如果某個單詞在一篇文章中出現的頻率TF 高,并且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合作為特征詞,算法見式(1)—(4)。

第二步,運用新建的詞袋表計算句子的詞袋向量,并將每個詞的TF-IDF值替代傳統詞袋向量中詞出現的次數。
第三步,數據標準化的目的是通過標準化得到均值為0 和標準差為1 的服從標準正態分布的數據,此外,標準化能提升分類器擬合的速度,同時縮小可能的異常值的影響。本文采用數據標準化的方法是減去均值然后除以方差或標準差,經過這種數據標準化方法處理過的數據符合標準正態分布。
支持向量機算法的基本思想是尋找一個分類器,使得超平面和最近的數據點之間的分類邊緣(超平面和最近的數據點之間的間隔)最大。對于SVM 算法,通常認為分類邊緣越大,平面越優,通常定義具有最大間隔的決策面就是SVM 要尋找的最優解。因為支持向量到決策邊界有一定的距離,因此支持向量機容許一定的誤差,算法的魯棒性得到一定的提高。對線性可分樣本集T=,其中x(m)∈?n,y(m)∈{-1,1};選擇懲罰參數C>0,構造并求解凸二次規劃。

其中ɑj為拉格郎日乘子,得到最優解a*=(a1
*,a2*,…,aN
*)T。
計算ω*=yixi,b*=yj-yi(xi·xj),得到超平面ω*x + b*= 0,則分類決策函數:

可見,SVM 分類問題需求解樣本的內積,然而實際樣本往往線性不可分,因而需引入核函數,核函數可將樣本向量映射到高維核空間,使得原本線性不可分的樣本變為線性可分,核函數一般包括線性核函數、多項式核函數和高斯核函數。
高斯核函數可以將輸入特征映射到無限多維,不僅可以解決樣本線性不可分的問題,而且能夠突出樣本特征的相似性,同時相比多項式核函數計算量更小,因其僅需一個參數σ,所以調參較易。

引入高斯核函數后分類器優化問題變為

采用本文方法爬取數據并進行文本處理后構建了10000 條數據作為訓練集,500 條作為測試集。統計出訓練集的文本長度分布如圖2 所示,文本長度集中在31—151區間,更接近于真實語料環境。訓練集經過標注后得到1 標簽和0標簽的文本數量分布如圖3 所示。圖3 橫坐標的0 代表著文本的情感是消極的;橫坐標1 代表著文本的情感是積極的。由圖3可見訓練樣本中積極情感占比54.96%,消極情感占比45.04%,積極情感略高于消極情感,但整體數量相當,合理的數據分布有利于提高分類器訓練的準確性。

圖2 微博訓練集文本長度統計

圖3 微博訓練集情感極性分布
通過基于關鍵詞的詞袋模型對10000條訓練集文本進行特征詞提取,共提取出61949個特征詞,并獲得(10000,61949)大小的文本特征矩陣,500條測試集特征矩陣大小為(500,1949)。利用本文高斯核SVM 的方法對訓練集數據進行訓練,學習曲線如圖4 所示,由圖4 中準確率的變化趨勢可見,訓練集和驗證集的準確率隨著樣本數的增大能夠較好地擬合,最終穩定在較高準確率,說明本文方法獲得的訓練模型有較好的泛化能力。與通過傳統詞袋模型采用多項式SVM、線性SVM、樸素貝葉斯、KNN 和決策樹五種方法的訓練集和測試集得分進行對比,結果如表1 所示,SVM 三種分類器表現出較理想的效果,其中本文高斯核的SVM 方法在訓練集和驗證集上都取得了較高的準確率,且擬合度較好,KNN 方法和樸素貝葉斯方法的準確率不高,決策樹方法出現了較嚴重的過擬合現象。采用本文高斯核SVM 方法和上述五種方法分別建立分類器對測試集進行驗證,其預測的準確率如圖5所示。

圖4 高斯SVM分類器學習曲線

表1 各種方法的準確率對比結果

圖5 分類器準確率對比圖
圖5可見,使用小樣本訓練支持向量機分類器已經取得不錯的準確率,與同等樣本數訓練的其他分類器相比有明顯的優勢,隨著樣本數的增加,六種分類器的準確率均有所提高,且KNN 和樸素貝葉斯分類器與SVM 分類器準確率差距有所縮小,其中本文高斯SVM 的方法準確率最高。決策樹方法由于存在過擬合現象導致總體效果不佳。由此可見,本文采用的高斯SVM 方法在微博情感分析中能取得較高的準確率,且相比KNN、樸素貝葉斯等方法,本文方法在小樣本數據集上有較明顯優勢。
針對當前需要對內容精煉、時效性強、通常包含簡短且非正式縮寫詞的微博短文本情感分析問題,本文提出一種更適合微博文本情感分析的方法,通過weibo Spider 爬取微博數據并進行人工標注,構建數據集,TF-IDF 算法和詞袋模型構建基于關鍵詞的詞袋模型,獲得文本特征矩陣,最后采用了高斯核的支持向量機方法進行分類器訓練,通過測試集驗證準確率,對比多項式支持向量機、KNN、樸素貝葉斯決策樹等方法,實驗結果顯示本文方法準確率較高,在小樣本數據的情況下可獲得較高的準確率。