蔣一翔,徐元根,王永恒
(1.浙江中煙工業有限責任公司寧波卷煙廠,浙江 寧波 315000;2.湖南大學 信息科學與工程學院,湖南 長沙 410082)
收集和分析用戶對產品的評價對企業具有重要價值。微博,如Twitter和新浪微博是Web 2.0時代最流行的應用程序之一,它允許用戶以發布短消息的形式與他人分享他們的觀點。自從微博出現以來,已經吸引了很多人用它來記錄自己的生活,討論熱門話題,表達和分享意見。以微博為代表的公開社交數據已成為挖掘人們的意見和情感的重要資源[1]。微博能提供有效的數據,以支持客戶滿意度調查,公眾情感檢測,社會學研究等。情感分析技術可用于根據作者表達的情感自動分類文本。最近一個有用的應用是通過微博流的情感分析來管理潛在客戶。通過監控在線微博流和分析客戶對產品的看法,企業可以發現其產品的缺陷并找到潛在客戶。與傳統的文本數據相比,微博有一些新的特征,如限定的內容大小,通常包含拼寫和語法錯誤,使用各種表情和口語表達式[2]等。這些特征使得確定微博的情感極性更加困難。本文使用微博數據流來支持產品評價的分析。
微博帖子通常包含多種評論內容,其中一些與給定的目標無關。然而,主流的情感分析方法基本不考慮評論內容與目標的關聯,所有出現在帖子中的情感表達,無論是否正確,將被視為與目標相關,這將導致情感分析錯誤[3]。近期提出的使用遞歸神經網絡(RNN)的新情感分析方法[4,5]表現出良好的效果。使用深度學習的RNN被證明是一種有前景的情感分析方向。然而,這些方法具有一些局限性,即需要大量的標記樣本來訓練模型。輸入樹中的所有節點都需要用5個情感級別中的一個手動標記,這種代價是非常昂貴的。另一個局限性是RNN模型是目標無關的,它不能直接用于目標相關的情感分析。本文提出一種基于RNN的目標依賴情感分析方法TD-RNN(target-dependent RNN)。
TD-RNN擴展了原始RNN模型來更好地支持目標依賴的情感分析。使用基于聚類的數據劃分方法在標記樣本有限的情況下獲得更高的精度。另外提出了一種樹修剪方法,用于在構造RNN之前從語法樹中去除不相關的部分。
當前情感分析方法主要包括基于情感詞典的方法和基于機器學習的方法。基于情感詞典的方法使用情感詞的支配極性來確定文本的極性。Fiaidhi等使用3個評分方案對Twitter數據進行評分,包括從負面詞匯中減去正面詞匯,TF-IDF加權方案和LDA(latent Dirichlet allocation)[6]。Cruz等通過關聯分析的方法構建面向特定領域的情感詞典來支持情感分析[7]。然而,微博的情感分析通常效果不佳,因為微博中包含許多種類特殊的情感詞語和在一般意見詞典中不存在的表情。基于機器學習的方法將情感分類視為文本分類的一種特殊情況。這些方法需要大量的標記數據來訓練情感分類器。Al-Qudah等采用模糊集理論提取文本特征進行阿拉伯語的情感分析[8]。Lim等利用推特標簽和表情作為情感標簽,避免了手動注釋[9]。他們的方法允許識別和分類多種情感類型的推文。近期Socher等提出基于RNN的情感分析方法[5]。他們的RNN模型需要使用包含大量細粒度情感標簽的情感樹庫進行訓練。他們的模型在多個指標上優于所有以前的方法。
目標依賴方法根據給定目標表達的情感對帖子進行分類。Joshi等采用模糊本體和模糊邏輯來支持情感詞和評價目標之間的對應[10]。Vo等在進行面向目標的情感分析時,沒有采用句法分析,而是基于統計的方法自動獲取豐富的特征,通過分析情感的上下文來對應情感的目標[11]。Dong等提出了一種適應性遞歸神經網絡模型(AdaRNN)用于目標相關的推特情感分類[12]。他們使用依賴樹來構造RNN,并通過使用根據語言標簽和組合向量的不同組合矩陣來擴展RNN模型。與他們的工作相比,本文將RNN模型擴展為目標依賴性,而AdaRNN的組成矩陣不是目標依賴性的。本文還使用基于聚類的數據分區,在標記樣本有限的情況下獲得高精度的分析結果。
在RNN模型[4,5,13]中,短語和詞表示為D維向量。基于二叉樹表示向量組合,并且以遞歸方式使用不同類型的組合函數遞歸地計算父向量。
如圖1所示,當短語“不是很好”被解析為二叉樹時,葉節點中的每個詞用向量表示。通過“很”和“好”的組合獲得“很好”的表示,并且通過“不是”和“很好”的組合遞歸地獲得三元組“不是很好”的表示。該模型使用以下公式來計算父向量
(1)
其中,vP是父向量,vl和vr是左和右子向量,g是組合函數,f=tanh是標準的元素性非線性方程,W∈D×2D是組合矩陣,b是偏差向量。每個父向量vp,i被給予等式(2)的相同softmax分類器以計算其標簽概率
svP,i=softmax(Wsvp,i)
(2)
其中,Ws∈5×D是情感分類矩陣(情感被分為5個級別:非常消極、消極、中性、積極和非常積極)。有人把這個基本模型擴展為每個詞和較長的短語在語法樹中分別用向量和矩陣表示的矩陣向量RNN(MV-RNN)[13],以及對所有節點使用相同的基于張量的合成函數的遞歸神經網絡(RNTN)[5]。

圖1 RNN模型結構
本文的TD-RNN的整體架構如圖2所示。歷史微博數據根據語法樹結構相似性離線聚類。從每個簇中隨機選擇一定數量的樣本并手動標記,然后將標記的樣品用于訓練目標依賴性的RNN模型。在線微博流中的微博被解析生成語法樹,樹中的不相關部分在領域本體和語法庫的幫助下被分析和修剪,最終的二叉樹被輸入到目標依賴的RNN中以預測語義標簽。同時使用演進的聚類算法對在線微博流進行聚類。如果找到新的簇,并且簇的大小超過閾值,可以考慮標記該簇的樣本并重新訓練模型。

圖2 TD-RNN總體框架
標記樣本是一項相當昂貴的任務,因為樹中的所有節點都必須手動標記。為了能在有限標記樣本的情況下使RNN模型獲得更好的準確度,訓練樣本應均勻分布在數據空間上。由于TD-RNN模型是基于語法樹構造的并且是目標依賴的,我們使用語法樹結構和一些關鍵詞作為特征來聚類微博。手工設置可以影響各種目標的情感分析的關鍵字,例如, “比”,“然而”,“但是”等。我們使用減法聚類[14]作為離線聚類算法來聚類歷史數據。數據點本身視為候選焦點(聚類中心)。每個數據的潛在價值可用以下公式計算
(3)
其中,pi(zi)是數據點zi的潛在值,N是數據點的數目,ra是正常數。由上可知數據點的潛在值是其到所有其它數據點的距離的函數。選擇具有最高潛在值的點作為第一個簇中心。所有數據點的潛在值逐漸減少,減少值取決于它們到聚類中心的距離。下一個簇中心是具有剩余最大潛在值的數據點,以此類推。為了聚類在線微博流,使用基于減法聚類的演進聚類算法[15,16]。將演進聚類中的潛在值定義為
(4)
其中:pk(zk)是在時間k計算的數據點zk的潛在價值。我們不從零開始執行eClustering,而是使用離線減法聚類的結果作為先驗知識。
離線和在線算法的關鍵問題是計算兩個數據點之間的距離。每個數據點表示為具有由諸如“NP”,“VP”等符號標記的語法樹的節點,關鍵字也包括在樹節點中。我們使用以下等式計算兩個語法樹之間的相似性
(5)
其中,T[]是兩個語法樹T1和T2之間的公共子樹的集合,size(T[i])是子樹T[i]的節點數,函數ht(x)獲得原始語法樹中節點x的高度,α∈(0,1)是權重因子,函數sk(x)計算公共節點x上來自T1和T2的關鍵字之間的相似性。共式(5)使得相似性值與共同子樹的數量、共同子樹的大小、共同子樹的節點的高度以及共同子樹的關鍵詞相似度成比例。我們使用Droschinsky等提出的方法[17]得到所有共同的子樹。小尺寸(小于閾值)的子樹將被忽略。兩個語法樹T1和T2之間的距離被定義為1/sim(T1,T2)。
語法樹通常包括給分類帶來較高成本的噪聲。面向目標依賴的情感分析,我們提出了一種剪枝方法,從語法樹中剪除與目標無關的評估表達式。為了修剪語法樹的無關部分,我們需要檢測由情感表達式及其目標組成的有效評估表達式。情感表達式與其目標之間的語法路徑指的是語法結構中連接這兩個節點的語法結構。在圖3中,情感表達“負評論”與其目標“京東”之間的語法路徑為NN→NP→IP→VP→VP→NP→NN。通過對大規模語料庫的語法路徑進行計數,我們可以發現,有效路徑比無效路徑更頻繁地出現。一般來說,目標是我們可以通過POS標記檢測的名詞,情感表達式可以通過意見詞典找到。在從語法樹提取句法路徑之后,我們需要進行泛化,使具有小差分的路徑聚合到一個路徑。該步驟聚集路徑中相同的相鄰元素,例如,上面所示的路徑可以被概括為NN→NP→IP→VP→NP→NN。我們選擇出現最頻繁的路徑來構建語法路徑庫。

圖3 語法樹和句法路徑的一個例子
樹修剪算法在算法1中給出。在第(2)-(3)行為通過POS標記和情感詞典獲得名詞和情感表達集。在第(4)-(5)行中,在集合N中但和目標無關的對象(通過手工建立相關對象列表處理)被置于集合IN中,這些是要修剪的對象。與目標具有競爭關系的對象也被置入IN。在第(6)-(12)行中,得到所有的情感表達式—目標對,并與句法路徑庫匹配。如果路徑不匹配或者匹配路徑的頻率小于閾值,則該路徑被視為無效路徑。我們找到情感表達式SE_p及其目標t的共同父節點comm_parent,然后修剪包含SE_p或t的comm_parent的子樹。然后,如果沒有任何以comm_parent為根的子樹,則從語法樹中剪除comm_parent。
算法1: 從語法樹中剪除不相關的部分
輸入: t: 語法樹, Ta: 目標, L: 路徑庫
輸出: 修剪后的樹
方法:
(1)IN ← φ
(2)N ← get_noun_set(t)
(3)SE ← get_sentiment_expression(t)
(4)IN +← filter_noun(N)
(5)IN +← filter_compititive(N,Ta)
(6)for each n in IN
(7)| SE_p←get_target_SE(t,n,SE,Ta,L)
(8)| if SE_p≠φ then
(9)|| comm_parent←find_comm_parent(t,n,SE_p)
(10)|| t←prune_subtree(t,comm_parent)
(11)|end if
(12)end for
(13)return t
樹剪枝的一個示例如圖3所示。我們假設“華為”是目標。可以發現情感表達集是{不錯,差評},目標集是{華為,京東}。“京東”是一個與目標無關的對象,應該修剪。通過匹配語法路徑庫,我們發現“京東”和“差評”之間的路徑有效,但“京東”和“不壞”之間的路徑無效。我們根據算法1,從語法樹中刪除相應的結構,并在圖3中用虛線標記。
原始RNN模型使用一個全局矩陣W來組合向量。但在目標依賴情感分析中,組合矩陣可能與目標相關。對于圖4所示的示例,當目標不同時,我們得到不同的情感標簽。基本思想是根據不同的目標情境使用不同的合成矩陣。

圖4 不同目標的情感標簽
為了支持目標依賴的組合矩陣,我們將式(1)擴展為
(6)
Wt∈D×2D×4為組合矩陣,Ta是指示目標位置的1×4向量。Ta中只有一個元素可以是1。將元素1-4設置為1分別表示沒有目標、目標在左子樹中、目標在右子樹中、兩個子樹中都有。圖5對式(6)進行了進一步說明。

圖5 目標依賴的組合
為了訓練模型,令θ={Wt,b}是模型參數集合(可以另外學習softmax參數Ws)。代價函數定義為
(7)

θt,i=θt-1,i-α[diag(Gt,i)]-1/2gt,i
(8)
其中,α是學習率。由于使用Gt,i的對角線,我們只需要存儲很少的值,并且更新速度變得更快。我們的方法也可以用于擴展MV-RNN和RNTN模型。
我們首先構建語法路徑庫。利用中科院NLPIR中文分詞系統進行分詞和POS標記,并使用斯坦福語法分析器進行語法樹構建。我們使用的意見詞典是臺灣大學的NTUSD詞典,其中包含2810個正面意見詞和8276個負面意見詞。此外,我們將50個常用的正面互聯網詞和53個負面詞納入詞典。構建語法路徑庫的語料庫是從騰訊微博獲取的36 042個微博帖子獲取的,其中涉及汽車,智能手機,購物網站等眾多領域。5個最頻繁出現的路徑及其發生頻率見表1。

表1 語法路徑庫中5個最常出現的路徑
我們選擇了兩個關鍵字作為目標,即“華為”和“唯品會”,并從騰訊微博中抓取包含目標的帖子。每個目標的帖子數為30 000個。我們為每個目標隨機選擇3500個帖子,并手動將每個帖子分類為目標的正面或負面。“華為”的語料庫包含1643個正面帖和1379個負面帖,目標為“唯品會”的語料庫包含1412個正面帖和1583個負面帖。我們選擇2000個樣本作為訓練集,300個樣本作為開發集,其余作為測試集。
采用7種評估方法如下:
(1)SVM卷積:具有卷積核和語法樹特征的SVM分
類器。
(2)SVM復合:SVM分類器使用一元文法和語法樹作為特征,復合內核如下
K=(1-α)·Tree_kernel+α·Vector_kernel
(9)
其中,α∈(0,1)是權重因子。我們只給α的最好結果。
(3)RNN:原始RNN方法。
(4)AdaRNN:Dong等提出的自適應遞歸神經網絡分類器[12]。我們實現了在他們的論文中“AdaRNN-comb”方法。由于缺少關于實現AdaRNN的詳細信息,我們基于我們的理解實現該方法。
(5)TD-RNN-basic:無樹修剪和基于簇的樣本選擇的TD-RNN。
(6)TD-RNN-prune:具有樹修剪但沒有基于簇的樣本選擇的TD-RNN。
(7)TD-RNN:具有樹修剪和基于簇的樣本選擇的TD-RNN。
使用這種方法,我們對總樣本進行聚類,分別得到“華為”的5個簇和“唯品會”的8個簇。然后對于每個目標從簇中均勻地選擇2000個樣本。
評價結果如表2所示。根據結果可以得出以下結論。

表2 7種方法的評價結果 A:精確度,P:精度,R:召回率,F:F-score
(1)我們的方法在正面和負面微博集中都達到最佳效果。我們的方法的準確度,精度,召回率和F-score都是所有方法中最高的。這個結果表明,TD-RNN模型,樹修剪方法和基于聚類的樣本選擇方法對于微博的目標相關情感分析工作良好。
(2)傳統的基于SVM的分類器在用于目標依賴情感分析時效果較差。基于復合內核的方法表現出更好的效果,因為它可以捕獲結構和特征。
(3)雖然原始的RNN分類器在目標無關的情感分析方面有更優的效果,但無法得到可接受的目標依賴情感分析的效果。原因是它使用全局合成矩陣時不考慮目標。TD-RNN模型使用了可以提高準確度的目標依賴組合矩陣。
(4)AdaRNN是基于RNN的目標依賴情感分類器。因為它根據語境和它們之間的語法關系自適應地傳播詞的情感到目標,所以其準確性優于SVM和原始RNN。
(5)本文將RNN模型擴展為目標依賴,而AdaRNN的組合矩陣不是目標依賴的。所以TD-RNN的基本方法性能優于AdaRNN。
(6)樹修剪方法提高了TD-RNN的效果,因為它可以刪除一些不相關的部分,這使得接下來的工作更容易執行。
(7)基于聚類的樣本選擇方法可以提高TD-RNN的性能,因為它使訓練樣本均勻分布在數據空間上。
微博是情感分析的重要資源,但是目標依賴的情感分析有較大難度。RNN是一個發展前景良好的情感分析模型,它能獲得高精度的目標無關的情感分析。本文對RNN方法進行了擴展,包括TD-RNN模型,基于聚類的訓練樣本選擇和樹修剪。實驗結果表明,該方法適用于微博流的目標依賴情感分析。
目前,我們對RNN模型只是做了簡單的擴展。我們認為目標和情感表達之間的深層關系仍然沒有很好地揭示出來。今后我們將應用新的方法來進一步改進TD-RNN模型。