葛霓琳 凡甲甲
(江蘇科技大學計算機學院 鎮江 212003)
隨著社交網絡和電子商務等的蓬勃發展,網絡平臺每日產生海量的個人言論和商品服務的評論,其中包含人們的各種情感傾向,如贊揚或是批評。這些大量的評論中含有用戶的主觀情感,其中蘊藏著豐富的現實意義和巨大的商業價值[1],而文本情感分析技術可以用來挖掘這些價值。文本情感分析是自然語言領域的一個重要研究方向,涉及語言學、統計學、心理學、人工智能等領域的理論和方法[2]。本文主要介紹現階段情感分析的研究工作及其一般的處理流程,對文本分詞算法和相關的機器學習方法進行概要的說明,進行情感分析的實驗并對結果進行分析。
情感分析,又稱為意見挖掘,是指對帶有情感色彩的主觀性文本進行分析、處理、歸納和推理的過程[3]。從文本粒度的角度考慮,情感分析主要分為詞語級、短語級、句子級、篇章級以及多篇章級等[4]。從文本類別的角度考慮,主要包括基于新聞評論的情感分析和基于產品評論的情感分析[5]。
目前,較成熟的情感分析的研究方法主要是基于情感詞典和基于機器學習方法。基于情感詞典的方法需要依賴事先建立好的情感詞典,中文的情感詞典主要有中國知網的Hownet 情感詞典、臺灣大學的NTUSD 情感詞典等。利用機器學習方法進行情感分析,實則是分類問題。一般地,機器學習方法主要分為無監督學習和有監督學習。監督學習中常用的方法主要是樸素貝葉斯(Naive Bayes,NB)[6]、支 持 向 量 機(Support Vector Machine,SVM)[7]、條 件 隨 機 場(Condition Random Field,CRF)、最大熵(Maximum Entropy,ME)[8]等。
基于機器學習的文本情感分析起初是由Pang[9]等提出,采用支持向量機、樸素貝葉斯、最大熵三種方法對電影的評論進行分類,實驗結果表明,支持向量機比另兩種方法分類效果較好。Ni[10]等認為情感分析問題可以看作是兩類情感的問題,利用樸素貝葉斯、支持向量機和Rocchio 算法以及信息增益進行特征選擇。Ye[11]等將旅游博客中的評論文本作為數據集,分析樸素貝葉斯、支持向量機以及基于特征的N-gram 模型的分類效果。Li[12]等將文本分為個人情感以及非個人情感兩種類別,利用半監督學習方法進行分類。
基于機器學習方法的情感分析的過程主要是:首先獲取文本數據,由于評論數據的語料來源豐富,并且評論文本一般可視為主觀性文本,所以評論語料庫或是利用爬蟲技術從網絡上獲取的評論數據是較常見的語料庫資源。其次,對收集的文本數據進行預處理,如分詞、去停用詞等。接著,采用詞向量的方法將文本轉換為數字表示的向量,從而利用向量來表示一個文本數據。最后利用分類器對其進行情感分類,大致流程圖如圖1。

圖1 基于機器學習的情感分析過程
分詞是處理中文文本的基礎[13]。分詞方法主要包含三種方法:基于詞典的分詞方法、基于統計的分詞方法以及基于語義的分詞方法。
基于詞典的分詞方法是指將字符串和詞典進行匹配,其中按照掃描方向的不同可分為正向匹配法和逆向匹配法;按照長度的不同可分為最大匹配法和最小匹配法。基于統計的分詞方法是指在上下文中,相鄰的字同時出現的次數越多則越有可能構成一個詞,因此字與字相鄰出現的概率能反映詞的可信度。主要的統計模型有N 元統計模型(N-gram)、隱馬爾可夫模型(Hidden Markov Model,HMM)。基于語義的分詞方法是指通過模擬人對句子的理解,利用句法分析和語義分析來進行分詞。
常見的分詞工具主要是哈工大語言云(LTP-cloud)[14]、漢語詞法分析系統(ICTCLAS),Jieba 分詞等。其中,Jieba 分詞是以模塊的形式引用,簡單方便,支持三種分詞模式如精確模式、全模式以及搜索引擎模式。Jieba 的基本原理是基于前綴詞典實現高效的詞圖掃描,生成句子中文字組成詞的所有可能的情況,從而構成有向無環圖(DAG),然后利用動態規劃找出最大概率路徑以及基于詞頻的最大切分組合。對于未登錄的詞(即其詞典中未記錄的詞)則利用基于HMM模型及Viterbi算法。
為保證對文本進行分類的準確性,需要將文本進行形式化表示。常用的文本表示方法主要有向量空間模型、主題模型、詞向量模型等。詞向量(Word embedding)是指利用向量將文字轉換成計算機能夠識別的一種方式。詞向量的主要思想是通過詞所在位置的上下文情況來表示詞語。詞向量生成模型(Word2vec)主要包含跳字模型(skip-gram)以及連續詞袋模型(continuous bag of words,CBOW)。
利用詞向量模型將文本數據表示成一個N 維向量,但一般向量的維度會比較高,從而導致模型過于復雜,此時需要采取特征降維的方法,如主成分分析(PCA)和線性判別分析(LDA)。
其中,主成分分析(PCA)是指通過一種線性的投影,將高維的向量映射至低維空間,并且保留盡可能多的向量差異信息,在新的向量空間里任意兩個維度所包含的信息不重復。
分類問題一般分為訓練和分類兩個過程,訓練過程是指依據已知的訓練數據集,利用合理的方法訓練出一個分類模型;分類過程是指利用訓練出的分類模型對新的測試數據集進行分類。分類問題分析過程如圖2。

圖2 分類問題分析過程
3.3.1 樸素貝葉斯
樸素貝葉斯分類器是機器學習中常見的分類器之一,是以貝葉斯定理以及特征條件相互獨立為前提進行分類。樸素貝葉斯的基本原理是:訓練期間,當特征條件相互獨立時,通過計算得到先驗概率、條件概率和聯合概率分布[15]。預測期間,根據貝葉斯定理計算后驗概率,接著以后驗概率的大小為基準,輸出測試數據的分類結果。樸素貝葉斯分類器的訓練和分類過程大致如下:
1)對任意一個數據樣本,n 維特征向量X(x1,x2,…,xn)表示n 個特征屬性的特征向量。輸出類別分別是C1,C2,…,Cm共計m個類別。
2)計算類先驗概率:對于類別Ci(1≤i≤m),先驗概率的公式如式(1)。

其中,Ni是指訓練樣本中屬于類別Ci的樣本數量,N 是指訓練樣本的總數。
3)計算條件概率:樸素貝葉斯算法是基于條件獨立的基礎,即

其中P(xi|Ci)(1≤i≤k,1≤i≤m)是由訓練過的數據計算出的。條件概率計算公式為

其中N(xk,C=Ci)表示樣本中屬于類別Ci并且具有特征xk的樣本數目,N()C=Ci表示樣本中屬于類別Ci的樣本數量。
4)計算后驗概率:基于貝葉斯定理,可推出后驗概率P(Ci|X)的計算公式為

其中P(X|Ci) 是條件概率,P(Ci) 是類先驗概率,P(X)是常數。
5)輸出類別:比較得出的全部后驗概率的大小,樸素貝葉斯分類器對未分類的樣本進行分類,最終輸出結果是類別Ci,當且僅當Ci滿足條件:P(Ci|X)<P(Cj|X) 1≤i≤m,j≠i。
3.3.2 支持向量機
支持向量機是一種有監督的二分類模型,以結構風險化最小原則為基礎。一般分為兩種情況,一是基于線性可分的情況,尋找到能夠將兩種不同類別完全分開并且保證類別之間的間隔達到最大的超平面。另一種情況是基于非線性情況則需要引入核函數。
支持向量機的基本原理如下:
假 設 存 在 訓 練 數 據 集A={(a1,b1),(a2,b2),…,(an,bn)},其中ai是指第i 個特征向量(1≤i≤n),ai∈Rn,bi是指向量屬于的類別,bi∈{+1,-1},若bi為1則表示正向,若bi為-1則表示負向。
在兩類不同樣本的空間中存在多個超平面,劃分超平面的線性方程[16]如式(5)所示:

其中,ω=(ω1,ω2,…,ωd)是法向量,表示超平面的方向;b 是位移項,表示超平面到原點之間的距離。從而得知法向量ω 和位移b 能確定一個超平面,可記為(ω,b)。樣本空間中任意一點x 到超平面(ω,b)的距離可以表示為

若超平面(ω,b)能夠正確地將訓練集分類,則bi=-1,則有ωTxi+b<0。對于(ai,bi)∈A,若bi=+1,則有ωTxi+b>0;若
本文選擇整理收集的酒店評論語料作為訓練集和測試集,該語料中包含四種語料子集,本文選取正面負面評論各2000 條,每一條評論存儲為一個文本文檔。為方便后面處理,將所有的正向評論整合到一個文本文檔,所有的負向評論整合到一個文本文檔。
接著,用Jieba 分詞對正向及負向文本進行分詞處理,并利用停用詞詞典去除一些無意義的詞。所謂“停用詞”是指在較多的文本數據中對分析情感傾向無影響的詞語,如“啊”、“的”、“地”等。根據匯總的停用詞,可以去除文本數據中的無用詞,提高分類的準確率。所以此次選取中科院計算機所中文自然語言處理開發平臺發布的中文停用詞表,包含1208 個停用詞。正向評論和負向評論處理部分結果分別如圖3~4所示。

圖3 負向評論處理結果

圖4 正向評論處理結果
將相關評論經過文本預處理后,需要將文字轉換成計算機能識別的格式,即將分詞后的結果轉換成對應的詞向量。選用維基百科的中文語料作為訓練的語料庫進行詞向量Word2vec 模型構建。然后基于已訓練好的詞向量模型進行特征詞向量的抽取。
獲取特征詞向量的主要步驟如下:
1)讀取模型詞向量矩陣。
2)遍歷語句中的每個詞,從模型詞向量矩陣中抽取當前詞的數值向量,一條語句轉換為一個二維矩陣,行數則是詞的個數,列數是模型設定的維度。
3)根據得到的矩陣計算矩陣均值,作為當前語句的特征詞向量。
4)全部語句計算完成后,拼接語句類別代表的值,寫入csv文件中。
將前面處理好的文本轉換成向量表示,第一列是類別對應的數值(1 代表pos 正向,0 代表neg 反向),第二列開始則是數值向量,每一行代表一條評論,部分結果如圖5所示。
由于在訓練word2vec 模型時設定的向量維度是400,所以得到的詞向量是400維,利用PCA算法對結果進行降維。由圖6 可知,前100 維能夠較好地包含原始數據大部分內容,從而選擇前100 維作為模型的輸入。

圖5 詞向量處理結果

圖6 向量維度
本文分別利用樸素貝葉斯及支持向量機作為分類模型,通過計算測試數據集的預測精度和ROC曲線來驗證分類器的有效性。在本次實驗中選取80%的數據作為訓練集,20%的數據作為測試集,然后利用兩種分類器分別對測試集進行分類,其預測準確率如表1所示。

表1 兩種分類器的準確率
一般地,ROC曲線的面積(AUC,反映分類器綜合性能的指標)越大,則模型分類效果越好。如圖7所示。

圖7 樸素貝葉斯ROC曲線
從上面的圖表中可以得出結論:針對同一測試數據集,支持向量機分類的效果較樸素貝葉斯分類的效果好。基于樸素貝葉斯的情感分析是通過計算概率對文本的情感進行分類,算法較為簡單,在小規模數據方面有較好的分類效果。但對輸入的數據的形式較敏感,并且需要計算先驗概率,從而會在分類方面存在一定的錯誤率。

圖8 支持向量機ROC曲線
本文利用樸素貝葉斯和支持向量機兩種不同的機器學習方法對同一語料集進行情感分析的效果對比,得出在酒店評論數據方面,支持向量機的分類效果優于樸素貝葉斯的分類效果的結論。但若針對不同領域的評論語料,分類器的效果會有所不同,具有一定的局限性。
基于情感詞典和基于機器學習的方法都需要較高的人工成本,而深度學習是一種新興的方法應用在情感分析方面,節省了一定的成本,同時也具有較好的效果。接下來的工作是利用深度學習的方法對用戶評論文本進行情感分析。