周陳超, 陳群, 李戰懷, 趙波, 胥勇軍, 秦陽
(1.西北工業大學 計算機學院, 陜西 西安 710072;2.西北工業大學 大數據存儲與管理工業和信息化部重點實驗室, 陜西 西安 710072; 3.中國人民解放軍95806部隊, 北京 100076)
最近幾年,隨著移動互聯網的日益普及,在線評論在用戶的消費決策中起著日益重要的作用[1]。用戶去電影院之前,一般會先查看豆瓣網用戶關于當下熱門電影的評論和分析,然后選擇想看的電影。去陌生的餐館吃飯前,一般會在大眾點評等評分網站查看其他人關于該餐館的評論和打分。這些評論不僅對用戶有用,同時也對商家大有裨益。好的評價會提升商家的吸引力,商家也可以在評論中發現問題,從而進行改善提高[2]。
但是,網上的評論太多,譬如大眾點評關于“海底撈”某個門店的評論就有5 000多條,涉及到餐廳的食物、價格、環境以及服務等各個方面,有好評也有差評,用戶自己很難充分利用這些信息。因此需要有自動化的工具對這些評論進行分類和總結[3],為用戶提供凝練的關鍵信息。其中,很重要的一個任務就是對這些評論進行類別判定,分類后的評論能為精細化的情感分析提供細粒度的類別信息[4],有助于分析基于類別的情感 。
這些類別可以是預先設定好的,就像SemEval-2014[5]的restaurant 數據集,將restaurant的用戶評論分為{“service”,“food”,“price”,“ambience”,“anecdote/miscellaneous”}5類。在評論“The pizza is the best if you like thin crusted pizza.”中,類別為“food”。
SemEval評測產生了一些類別判定的方法。Kiritchenko等[6]為每一個類別構造一個二元SVM分類器,SVM使用N-gram特征以及從yelp數據集中學到的詞聚類和基于點互信息構建的詞典等。從yelp學習的詞典信息顯著提高類別判定的F1值,達到88.6%。為了提高算法的通用性,本文僅涉及訓練集中的語料,不使用額外的語料或者知識庫。基于公平比較的原則,Kiritchenko等[6]沒有使用外部語料和知識庫的F1值為82.2%。Brychcin等[7]基于詞袋(BOW)和Tf-Idf特征為每個類別構建二元最大熵分類器。在僅使用訓練語料情況下,他們算法的F1值是81%。Hercig等[8]在2016年的評測中使用類似方法取得aspect category detection(相機數據集)的第一名,F1值為36.34%。
Schouten等[10]提出無監督和有監督2種方法,無監督方法F1值為67%,判定效果不佳。有監督的方法基于共現分析,包括同在一個句子中的直接共現和通過第三方詞關聯起來的間接共現,間接共現擴展了算法的識別范圍。共現的內涵則包括簡單的詞-詞共現,以及基于依存句法的詞-詞之間依存共現。訓練中通過標簽學習詞與類別的關聯概率,并優化對應的閾值。詞之間的共現關系擴展了詞和類別之間的關聯關系,通過計算句子中詞與類別的關聯概率是否達到閾值來判定是否屬于該類別。Schouten等[10]在有限制訓練集上取得的F1值是83.8%。該方法使用外部工具Stanford CoreNLP來識別依存關系,當句子的語法不規范時,Stanford CoreNLP可能無法正確識別依存關系,進而導致類別判定的錯誤。
注意力機制(attention mechanism)能很好解決同一句子中不同目標的情感極性判別問題。注意力機制最早用在圖像處理領域,目的是為了讓神經網絡在處理數據時重點關注某些信息。Mnih等[11]在2014年提出將注意力機制用在圖像分類任務中驗證了注意力機制在圖像處理領域的有效性,同時也使結合注意力機制的神經網絡成為研究熱點。Wang等[12]結合LSTM和注意力機制對評論進行基于類別的情感分析,取得了不錯的成果。但是注意力機制在評論對象類別判定方面的研究還很少。
我們發現,一個類別對應多個實體。就像“food”,在數據集中有“pizza、chicken、noodles、meal、dishes”等無數對應實體。此外,很多句子沒有明顯表示類別的詞語出現。譬如“It is very overpriced and not very tasty.”包含“price”和“food”2個類別。“price”還好確認,“food”類別則是隱式表達,需要理解“tasty”的語義才能識別出來。評論中這樣的隱式表達非常多。還有很重要的一點,名詞和形容詞在表達句子的類別信息方面起著更關鍵的作用。評論“pizza here is delicious.”中,只要抓住名詞“pizza”就能判斷出是“food”類別,形容詞“delicious”能強化這種判斷。評論中的形容詞大多形容與類別相關的名詞,不同的類別有明顯的差異。譬如“prices are too high.”中“high”一般是形容“price”,而上個例子中的“delicious”一般是形容“food”。因此,形容詞在區分類別方面也起到更重要的作用。
評論“the dishes are remarkably tasty and such a cozy and intimate place!”涉及food和ambience 2個類別。進行food類別判定時,只要抓住“dishs”和“tasty”這2個關鍵詞,就能準確判斷出類別,而像“the”、“are”等詞起不到什么作用。假如把重點放在“cozy”和“place”等詞時,還會對類別判定起負作用,這是進行“ambience”類別判定需要關注的重點。因為很多情況下一個句子可能涉及多個方面,所以進行類別判定時需要抓住與類別相關的關鍵信息,才能準確的判定類別。
基于上述發現,首先,我們使用word2vec訓練詞向量,將評論轉換成詞向量的形式。詞向量能夠表達詞之間的相關性,看起來并不相關的詞,可以通過詞向量關聯起來,從而為解決類別包含內容的多樣性問題以及隱式表達問題提供了可能。BLSTM將句子的整體語義信息整合,注意力機制則將關注的重點聚焦到與類別相關的關鍵信息。基于詞性權重的注意力機制借助人的先驗知識,為注意力的聚焦提供指導。本文為每個類別構造一個二元分類器,包含類別信息的特征用于最終的分類,能有效地提高算法的準確率。

類別判定有2個關鍵問題需要解決,一個是識別評論中與類別相關的關鍵詞;另一個則是學習詞和類別之間的關聯關系。關聯關系方面的研究很多,但是如何識別評論中的關鍵詞目前研究不多。Kiritchenko等[6]和Brychcin等[7]的方法對于評論中的詞同等對待,不分主次,算法的針對性不夠強。Schouten等[10]使用依存關系來識別關鍵詞,但是依存關系依靠現有的句法分析工具,算法本身無法保證準確率。本文使用注意力機制來提取評論中與類別相關的重要信息, WA-BLSTM的框架如圖1所示。

圖1 模型框架圖
本文使用Mikolov的CBOW方法[13]訓練詞向量,E∈Rd×|V|,其中d是詞向量的維度,即把每個詞映射為d維向量,|V|表示詞向量的大小,即包含多少詞的詞向量。根據詞向量將評論中的句子sj轉化成詞向量列表{e1,…,et,…,eLj},其中ei∈Rd。
深層神經網絡利用語義合成性原理通過不同深度模型將低層詞向量合成高層文本情感語義特征向量,從而得到文本的高層次情感語義表達[14]。深層神經網絡同樣適用于類別判定,BLSTM能有效利用詞語的上下文信息,將詞向量轉化成高層次類別語義表達。
BLSTM同時考慮文本的上下文語境,將時序相反的2個LSTM網絡連接到同一個輸出, 前向LSTM可以獲取輸入序列的上文信息, 后向LSTM可以獲取輸入序列的下文信息。
前向LSTM在t步時的cell計算過程如下所示:

要準確判斷評論對象的類別,關鍵是要提取與類別相關的信息。本文使用注意力機制,在計算過程中加入類別特征,據此提取與類別相關的信息用于分類,本文為每個類別構造一個分類器。Wang等[12]在注意力計算的時候,對于LSTM的每步輸出是同等對待的。但事實上在判斷類別時,名詞和形容詞起著更為重要的作用。因此,在進行注意力計算前,根據原始評論中的詞性為對應的BLSTM輸出賦予不同的權重。本文在實驗中,形容詞權重取1.5,名詞取1.2,其他詞取1。
H∈R2dh×N包含BLSTM的所有輸出向量[h1,h2,…,hN],N為句子S的長度,vc表示類別信息的詞向量。本文將詞性分為名詞、形容詞以及其他3類,分別賦予不同權重Q∈RN。類別詞向量的加入為注意力的聚焦提供錨點,權重的分配則能為注意力的聚焦提供指導,提升算法的精確度。
(8)
Yq=Q⊙Y
(9)
M=tanh(WmYq)
(10)

(11)
β=HαT
(12)
式中,eN∈RN是值全為1的N維向量,vc?eN=[vc;vc;…;vc],Y∈R(2dh+d)×N為BLSTM的每步輸出向量附加類別詞向量,為注意力的聚焦提供錨點,Yq∈R(2dh+d)×N則是為Y基于詞性賦予權重,指導注意力更好地關注與類別相關的重要特征。M∈R(2dh+d)×N,Wm∈R(2dh+d)×(2dh+d),Wα∈R(2dh+d)為模型的參數。α∈RN是ht∈H的注意力分配,β∈R2dh是句子S關于類別vc的權重表達。
句子的最終表達如下所示
h*=tanh(Whβ)
(13)
式中,Wh∈R2dh×2dh為tanh的參數,h*∈R2dh。注意力機制能夠捕捉句子中與類別相關的重要特征,因此,當句子中加入不同的類別信息時,分別提取不同的權重特征用于類別判定,為每個類別構造一個分類器。
h*是句子S關于類別vc的特征表達,本文使用softmax將特征向量轉換為關于類別的條件概率分布。
y=softmax(WLh*+bL)
(14)
WL∈R2dh×2,bL∈R2為softmax的參數。
本文使用反向傳播算法來訓練模型,通過最小化交叉熵和正則項來優化模型,類別ci的損失函數如下
(15)

本文使用英文的SemEval-2014 restaurant 數據集和中文的SemEval-2016 相機數據集。實驗中,詞向量采用Mikolov等[13]提出的word2vec方法,為公平對比,僅使用訓練集訓練詞向量。由于restaurant數據集小,詞向量為200維,BLSTM的輸出向量為150維;而相機數據集稍多,詞向量和BLSTM的輸出向量皆為300維。對于未登錄詞,采用U(-0.01,0.01)來隨機初始化詞向量。其他超參數如表1所示:

表1 實驗超參數
restaurant 數據集包含訓練集3 041句和測試集300句。如圖2所示,每個句子包含一個或多個類別。其中將近20%的句子包含2個及以上類別。這也是注意力機制的用武之地,能根據不同的類別提取對應的關鍵信息,提升類別判定的準確率。

圖2 每個句子包含的類別數目分布
圖3顯示數據集中各個類別在評論中所占的比例,其中最大的“food”以及“anecdote/misc”類別占60%以上。占比高的類別不僅數據量大,同時詞匯量也大,訓練出來的詞向量表達的語義豐滿,類別判定的準確率高。

圖3 不同類別在語料中所占的比例分布
相機數據集包含訓練集5 778句和測試集2 256句。為BATTERY,CAMERA,DISPLAY以及CPU等15個類別,每個類別又細化為GENERAL,PRICES,DESIGN & FEATURES,QUALITY等9種屬性(有些類別可能只包含幾種屬性),需要判斷每句評論屬于哪個“類別#屬性”對。相機數據集中無“類別#屬性”的句子多,數據分布不均衡,具體分布如圖4所示。之所以選擇該數據集是因為類別判定問題公開數據集較少,只有SemEval評測有所提供。相機數據集和restaurant數據集有所不同,需要判斷評論屬于類別的哪個屬性,最后階段的softmax后輸出的分類數為屬性數加1。

圖4 相機數據集類別分布情況
參考SemEval評價方法,本文使用F1值作為評判算法的標準。
(16)
其中正確率(P)和召回率(R)定義如下
(17)
S是算法對于測試集中所有句子給出的類別標簽,G是測試集中所有句子的正確類別標簽。
本文提出的方法與以下4種方法進行比較。
PSM:文獻[10]提出的有監督的方法,通過分析共現關系以判定類別。這是關于評論對象類別判定的最新研究。
SVM:文獻[6]提出的基于N-gram的SVM方法,為每個類別構造一個SVM分類器。
Max-Entropy:文獻[7-8]提出的基于BOW和Tf-idf等特征的最大化信息熵方法。
CNN:文獻[9]提出的基于循環神經網絡(CNN)的方法。
A-BLSTM:本文提出的方法,如圖1所示,在注意力計算時不加入詞性權重w,用以對比詞性權重在類別判定的作用。
WA-BLSTM:本文提出的方法,如圖1所示,在注意力計算時加入詞性權重w。
實驗結果如表2所示。從表2中可以看出,本文提出的方法在2個領域的數據集上都取得不錯的分類效果。其中,不加詞性權重的A-BLSTM與之前的最好效果持平,而加入詞性權重后的WA-BLSTM分類效果有所提升。其中,restaurant數據集提升了3.21%,相機數據集提升了1.01%。實驗結果表明,基于詞性權重的注意力BLSTM在類別判定中優于其他方法,詞性權重能提升類別判定的效果。

表2 不同方法(限制語料)的F1值
相機和restaurant數據集的分類結果差異巨大,主要因為相機數據集的“類別#屬性”對多,但是包含“類別#屬性”的句子少。如圖4所示,其中78%的句子不包含任何類別和屬性,而Restaurant數據集每個句子至少包含一個類別。
表3是restaurant數據集WA-BLSTM與PSM的分類對比,PSM是目前已知的關于類別判定的最新研究。通過表3的對比可以看出不管哪個類別本文的方法都比PSM的效果好。

表3 restaurant數據集WA-BLSTM與PSM的分類F1值
從表3可以看出“food”、“service”和“price”這3個類別的判定效果不錯,但是“ambience”和“anecdote/misc”的效果不佳。“anecdote/misc”是除去4個類別剩下的所有其他類別,包含的內容比較雜,提取與類別相關的特征時,沒有代表性強并且明確與類別相關的信息可以加入,因此效果不佳。
類別“ambience”的效果最差,一個方面是因為詞向量訓練語料太少。如圖3所示,訓練集中,類別“ambience”所占的比例比類別“price”高,但是單詞“ambience”才出現20多次,而單詞“price”卻出現150多次。對比下來單詞“ambience”訓練語料太小,訓練出來的詞向量不能充分的表達“ambience”類別的特征,因此就不能很好地提取與類別相關的特征用于類別判定,效果不佳。
上述2個類別的效果差,是由于注意力計算時加入的類別詞信息不夠全面、準確所致,更深入的原因是訓練的詞向量受語料限制,表達的信息不充足。因此,加入語義信息豐富的詞向量可以提高模型的判定效果。
本文從測試集中選取包含2個類別的評論作為例子,可視化注意力分配結果,如圖5所示。其中注意力權重α由公式(11)計算所得,黑色深度代表權重大小,顏色越黑注意力分配得越多。

圖5 注意力可視化
圖5中的評論是“The dishes are remarkably tasty and such a cozy and intimate place!”,涉及“food”和“ambience”2個類別。其中,圖5a)是“food”類別的注意力可視化,和food相關的“dishes”和“tasty”被識別出來,名詞“dishes”最重要,形容詞“tasty”次之。關于類別“ambience”則識別出了對應關鍵詞:名詞“place”和形容詞“cozy”、“intimate”。
在評論對象的類別判定研究中,本文首先提出基于注意力機制的BLSTM模型來判定評論對象類別。此外,之前的研究主要是結合詞向量的注意力機制,本文在此基礎上提出了基于詞性權重的注意力機制,詞性權重能充分利用人的先驗知識,對比實驗驗證了詞性權重的有效性,能提高評論類別判定的正確率。實驗結果表明,本文提出的方法類別判定效果優于其他方法。
本文的方法不需要外部語料,這是個優點,通用性強;也有不足,僅使用訓練集訓練的詞向量語義表達能力有限。Kiritchenko等[6]的方法在使用外部語料后,效果有很大的提升。本文接下來將研究如何借助外部語料以及更多的先驗知識,提升類別判定的效果。