曾致遠 盧曉勇 徐盛劍 陳木生,2*
1(南昌大學軟件學院 江西 南昌 330047)2(江西理工大學軟件工程學院 江西 南昌 330013)
顧客在作出購買選擇時越來越依賴于互聯(lián)網(wǎng)上的評論,但是互聯(lián)網(wǎng)給用戶提供便利的同時,也為那些潛在的虛假評論創(chuàng)造了機會。虛假評論,即為了欺騙消費者而編寫的虛構評論。為了獲得更多利潤,一些商家通過雇傭寫手編寫積極評論來宣傳商品或者編寫消極評論來打擊競爭對手[1]。隨著虛假評論的蔓延和增長,越來越多的研究開始關注虛假評論的識別。
虛假評論檢測的研究可以追溯到Jindal等[1]的早期工作。早期有代表性的研究[2-5],一般采用人工提取的特征和機器學習模型來訓練分類模型。隨著深度學習技術的迅速發(fā)展,越來越多的研究采用端到端的神經網(wǎng)絡模型自動提取文章表示,并取得了更好的分類效果。文獻[6-8]采用“句子層-文章層”分層結構,采用注意力機制學習文章表示,取得了比傳統(tǒng)方法更好的效果。
雖然使用基于神經網(wǎng)絡的模型取得了比傳統(tǒng)模型更好的效果,但是這些端到端的模型沒有結合虛假評論文本中表現(xiàn)出的情感特征。仔細研究虛假評論與正常評論的區(qū)別,可以得到以下結論:(1) 虛假評論表達的情感要比真實評論更強烈,文獻[4]也提出與此相同的結論;(2) 一條評論中表達情感最強烈的地方是開頭和結尾;(3) 虛假評論常以相似的句子開頭或結尾,這可能是因為虛假評論一般由專門的寫手創(chuàng)作,而同一個人可能會創(chuàng)作大量相似的評論。表1列舉了一些虛假評論經常出現(xiàn)的開頭和結尾。

表1 虛假評論中一些相似的開頭和結尾
基于上述結論,本文提出一個基于注意力機制的多層編碼器模型(Attention-based Multilayer Encoder,ABME)用于虛假評論檢測。與文獻[6-8]模型不同,本文沒有直接采用“句子層-文章層”的通用結構,而是根據(jù)虛假評論的情感文本的分布特征將評論的開頭、中間和結尾部分分開編碼,分別使用雙向LSTM編碼,得到三個獨立的文章局部表示。然后使用自注意力機制和注意力機制將三個局部表示集成為一個文章表示。最后用全連接神經網(wǎng)絡得到分類結果,以期提升虛假評論檢測的準確率。
虛假評論的研究最早由Jindal等[1]提出,他們將垃圾評論分成了三種類型:(1) 不真實的評論(虛假評論);(2) 不相關的評論(即不是針對商品本身而是對商品品牌或制造商等與商品無關的評論);(3) 非評論文本。他們還發(fā)現(xiàn),識別類型2和類型3的評論很容易,但是識別類型1的虛假評論很難。現(xiàn)在的研究主要關注類型1的垃圾評論檢測,即虛假評論檢測。
Ott等[2]通過雇傭在線寫手,構建了第一個公開的虛假評論檢測數(shù)據(jù)集。他們通過亞馬遜眾包平臺(MTurk)讓在線工作者創(chuàng)作針對芝加哥20個旅館的虛假評論。通過這種方式,他們分別收集了400條積極和消極的虛假評論。針對Ott等[2]提出的數(shù)據(jù)集,一些學者展開了新的研究。Li等[5]提出了一個基于隱含狄利克雷分布(Latent Dirichlet Allocation,LDA)的主題模型來做虛假評論檢測。Xu等[9]嘗試從句子的依存關系樹中提取文本特征。 Banerjee等[10]提出了一個語言框架來分析真實評論和虛假評論在可讀性、寫作風格方面的區(qū)別。邵珠峰等[11]基于虛假評論者和真實評論者在情感極性上存在的差異,增加評論文本的情感特征,并結合用戶之間對于特定商品之間的關系,創(chuàng)建了一個多邊圖的模型以識別虛假評論。欒杰等[12]通過提取多種情感特征結合文本特征使用支持向量機進行分類,得到較好的檢測效果。
Li等[4]采用和文獻[2]同樣的方式收集了餐館和醫(yī)生領域的虛假評論數(shù)據(jù)集,并擴充了文獻[2]提出的旅館數(shù)據(jù)集,還探索了一種通用的方法來識別虛假評論。基于Li等[4]收集的數(shù)據(jù)集,一些學者提出了基于深度學習的虛假評論檢測方法。文獻[6-8]采用“句子層-文章層”分層結構,并結合注意力機制學習文章表示,在領域內和跨領域的實驗中都取得了比傳統(tǒng)方法更好的效果。
針對虛假評論分類問題,本文提出了一個基于注意力機制的多層編碼器(ABME)。如圖1所示,模型分為四層,第一層是雙向LSTM編碼器[13],它將一條評論的首、中和尾三個部分編碼成三個向量s1、s2、s3。第二層是自注意力機制(self-attention)編碼器,它將三個局部表示的s1、s2、s3編碼成三個全局表示z1、z2、z3。第三層是注意力機制編碼器(attention),它將三個全局表示z1、z2、z3合并成一個最終的全局表示O。最后一層是分類層,由全連接神經網(wǎng)絡和Softmax組成,它輸出模型的分類結果。

圖1 基于注意力機制的多層編碼器
長短期記憶網(wǎng)絡(LSTM)[13]是一種改進的循環(huán)神經網(wǎng)絡(Recurrent Neural Network,RNN)[14]。它相對于普通的RNN模型,加入了記憶單元和門機制,記憶單元中信息的更新、遺忘和傳遞分別由三個門(gate)來控制[13]。相比于普通的RNN模型,LSTM能夠提取序列較長距離的依賴關系,并能有效地緩解RNN梯度消失的問題。
在將序列輸入LSTM模型之前,首先使用分布式向量表示[15]來編碼詞語,對于每個詞w,從矩陣E中查找w的向量表示e(w),e(w)∈Rd。E是通過預訓練得到的模型參數(shù),E∈Rm×d,m是詞典長度。本文使用fasttext模型[16]在wiki語料訓練得到的參數(shù)矩陣E。一個由n個詞組成的評論可以被表示成(e1,e2,…,e3),其中ei表示第i個詞的embedding。
為了更好地捕捉序列的雙向信息,本文采用雙向的LSTM來編碼評論的embedding序列[17],雙向LSTM的結構如圖2所示。

圖2 雙向LSTM模型

(1)
(2)
BiLSTM編碼器的H輸出由正向和反向LSTM最后一個位置的輸出向量拼接得到。如果(e1,e2,…,e3)是一個句子或文章,則H是該句子或文章的向量表示。H將被輸入下一層編碼器繼續(xù)編碼或者直接輸入分類層分類。
(3)
基于評論的首尾相比于中間內容對于識別一條評論是否真實更加重要這一假設,首先將一條評論分成開頭、中間和結尾三個部分并分別用w1、w2、w3來表示三個部分的word embedding序列,其中w2的長度要遠遠大于w1和w3。因為首尾相比于中間內容更加重要,可以提高w1、w3的權重來提升其對分類結果的影響。將w1、w2、w3輸入到三個互相獨立的BiLSTM編碼器中,將wi編碼成si,得到維度相同的三個向量:s1、s2、s3,si∈Rdm。分別表示首句、中間句子和結尾。雖然原始序列中w2的長度遠大于w1和w3,但是經過BiLSTM編碼后得到的s1、s2、s3的維度是相同的。這樣對于下一層編碼器而言,三個輸入向量之間是平行的。
s1、s2、s3分別表示首句、中間句子和結尾,但三個向量之間是互相獨立的,即都只包含評論的一部分信息。使用BiLSTM對整條評論編碼,得到評論的全局表示sc,sc∈Rdm。雖然可以直接通過LSTM編碼得到全局表示sc,但是還可以對s1、s2、s3、sc繼續(xù)編碼,得到更好的全局表示。
BiLSTM編碼器得到的三個向量s1、s2、s3都是互相獨立的局部表示。為了得到序列的全局表示,需要對s1、s2、s3應用自注意力機制。
自注意力機制[18]是一種特殊的注意力機制,它比RNN和CNN更容易提取不同位置間的依賴關系,而且參數(shù)量更少。相比于普通的注意力機制,自注意力機制最大的特點是所有的key、value和query都來自于上一層編碼器。具體而言,從上一層編碼器得到三個向量s1,s2,s3,sc∈Rdm,并將三個向量合并成一個矩陣S=[s1:s2:s3],S∈R3×dm。在本層中,S既是query又是key和value。自注意力機制的計算是使用query中的每個向量queryi和key中的每個向量keyj做比較,得到相似度矩陣Attention,表示為
Attentionij=sim(queryi,keyi)
(4)
然后將Attention作為權重對value做加權組合得矩陣Z,Z和value的維度相同。
使用注意力機制的關鍵是計算注意力權重Attention,即相似度函數(shù)Sim。計算注意力權重的常用方法是點積和多層感知機(Multi-Layer Perception,MLP)。本文使用MLP來學習注意力權重,因為MLP可以擬合任何連續(xù)函數(shù)。Attention的計算式表示為:
Attention=Softmax(tanh(W·ST+b))
(5)
式中:Attention∈R3×3,W∈R3×dm,b∈R3×3。
最后的輸出Z是S的加權平均,由矩陣Attention和矩陣S點乘得到。它是維度和S相同的矩陣,可以表示為[Z1:Z2:Z3]。Zi和si相對應,相比于si,Zi包含了序列所有位置的信息。
Z=Attention·S
(6)
雖然自注意力機制能很好地捕捉不同位置之間的依賴關系,但是它本身并不能提取序列的位置信息。為了不丟失序列的位置信息,本文將位置編碼加入到自注意力機制編碼器的輸出中。本文采用Vaswani等[18]提出的分別采用正弦、余弦函數(shù)來編碼序列的位置信息,分別表示為:
(7)
(8)
PE是位置pos對應的向量編碼,PEpos,2i、PEpos,2i+1分別是在向量PE上第2i、2i+1個位置的值。相對于其他編碼方式,這種編碼方式能夠有效提取詞語的相對位置信息,而且不會給模型增加參數(shù)。
自注意力機制層輸出的矩陣Z包含了序列的全局信息,BiLSTM層輸出的向量sc也包含了序列的全局信息,使用注意力機制將矩陣Z和向量sc編碼成最終的全局表示O。
注意力機制是一種序列建模的常用方法,可以被描述為將一個查詢向量query和一個鍵值對集合映射成輸出output,其中query、key、value、output都是向量。在本層中,query是向量sc,key和value是矩陣Z。和自注意力機制一樣,注意力機制也是將query和key做比較。兩者的區(qū)別是,在注意力機制中,query是向量,而且一般來自于序列外部,而自注意力機制中的query是矩陣,通常就是序列本身。此外,因為query是向量,所以由query和value計算得到的Attention也是向量而不是矩陣。和自注意力層一樣,本文使用MLP來訓練注意力權重(Attention),并使用Softmax歸一化權重。其計算式表示為:
Attentioni=sim(query,keyi)
(9)
Attention=Softmax(tanh(scWq+Wk,vZT+b))
(10)
式中:Attention∈R1×3,Z∈R3×dm,sc∈R1×dm,Wk,v∈R1×dm,b∈R1×3。最終的輸出向量O是Attention和Z的加權平均。
O=Attention·Z
(11)
式中:O∈R1×dm。O由sc和Z編碼得到,包含了前面兩層的信息,能更好地表示整條評論。
分類層由全連接神經網(wǎng)絡和Softmax分類器組成,全連接神經網(wǎng)絡將文章表示O映射為二元類別的分數(shù)y:
y=tanh(WOT+b)
(12)
式中:W∈R2×dm,y∈R2。Softmax函數(shù)將分數(shù)y歸一化:
(13)
式中:p∈R2。歸一化后的結果p可以看成是模型的預測結果在二元類別上的概率分布。
本文使用Li等[4]發(fā)布的虛假評論數(shù)據(jù)集作為實驗用數(shù)據(jù)集。該數(shù)據(jù)集包含三個領域:旅館,酒店和醫(yī)生。數(shù)據(jù)集的分布如表2所示,數(shù)據(jù)集包含三種類型:“Turker”,“專家”和“用戶”。其中“Turker”和“專家”屬于虛假評論,而真實評論來自用戶。“Turker”是Li等[4]和Ott等[2]使用亞馬遜眾包平臺(MTurk)收集的虛假評論,這些虛假評論由一些在線工作者編寫。“專家”是由一些具備一定領域知識的領域專家創(chuàng)作,而真實評論來自于那些可信度高的用戶。因為“專家”類別的樣本數(shù)量太少,本文實驗沒有采用。

表2 三個領域的數(shù)據(jù)集分布
文獻[4]和文獻[6]針對上述三個領域的數(shù)據(jù)集設計了三種實驗:領域內實驗,跨領域實驗和混合領域實驗。領域內實驗指的是訓練集和測試集均來自相同領域的數(shù)據(jù)集,此時模型的準確率應是最高的。跨領域實驗指的是訓練集來自一個領域的數(shù)據(jù)集,而測試集來自另外一個領域的數(shù)據(jù)集,其目的是為了檢驗模型的領域適應能力和泛化能力。混合領域實驗指的是將所有領域的數(shù)據(jù)歸集到一個數(shù)據(jù)集,即使用多領域的訓練集訓練出模型,再用多領域的測試集來檢驗模型。混合領域實驗是對跨領域實驗的補充,其目的同樣是為了檢驗模型的領域適應能力和泛化能力。本文也嘗試了這三種實驗。為了讓實驗結果更加可靠,本文采用5折交叉驗證將數(shù)據(jù)分成5個fold,其中4個fold作為訓練集,剩下的fold作為測試集,最后取5次實驗測試結果的平均值。
文獻[4]使用F1、精確率(Precision)、召回率(Recall)和準確率(Accuracy)來評價模型的效果。針對二元分類問題,這4個指標的計算如下:
(14)
(15)
(16)
(17)
式中:TP為被正確分類的正例;TN為正確分類的負例;FP為錯誤分類的正例;FN為錯誤分類的負例。為了方便比較,本文也采用這4個指標來評價模型。在三種實驗中,將本文提出的ABME模型和文獻[4]提出的SAGE模型以及文獻[6]提出的SWNN模型進行比較。其中,SAGE模型使用了n-grams特征,而SWNN模型是分層的CNN模型。
表3顯示了本文設計的ABME模型和文獻[4]、文獻[6]的模型在旅館、餐館、醫(yī)生領域上的實驗結果。本文提出的ABME模型在旅館和醫(yī)生領域的實驗中,在大多數(shù)性能指標上均取得了最好的結果;在餐館領域的實驗中,ABME模型在準確率(Accuracy)和召回率(Recall)上取得了最好的結果。由此可見,ABME模型在領域內的實驗中取得了最好的結果。

表3 領域內實驗結果 %
在三個領域的數(shù)據(jù)集中,旅館數(shù)據(jù)集是最大的(1 600個樣本),而餐館和醫(yī)生較小(400個樣本),所以本文的跨領域實驗使用旅館數(shù)據(jù)集訓練模型,在餐館數(shù)據(jù)集和醫(yī)生數(shù)據(jù)集上進行測試。
實驗結果如表4所示,在餐館領域的實驗中,文獻[4]的SAGE模型取得了最好的效果,而ABME模型和文獻[6]的SWNN模型實驗結果相當。在醫(yī)生領域的實驗中,文獻[6]的SWNN模型取得了最好的效果,而本文的ABME模型的精度是最高的,并且其準確率與SWNN模型十分接近。總體而言,三個模型在餐館數(shù)據(jù)集上的表現(xiàn)都要好于醫(yī)生數(shù)據(jù)集,因為餐館和旅館的領域詞匯更相近。

表4 跨領域實驗結果 %
混合領域實驗結果如表5所示。文獻[4]并沒有做這個實驗,所以只和文獻[6]的模型比較。本文提出的ABME模型在準確率(Accuracy)和精確率(Precision)上得到了最好的結果,實驗結果說明本文提出的ABME模型和文獻[6]提出的SWNN模型在混合領域數(shù)據(jù)上的表現(xiàn)相近。

表5 混合領域實驗結果 %
本文提出了一個基于自注意力機制的多層編碼器模型(ABME)來解決虛假評論分類和檢測問題。本文模型將評論的首、中、尾分離來提高首尾的權重,并結合兩層注意力機制的深度學習模型來獲取評論的全局特征表示。實驗結果表明,本文方法在部分實驗中取得了最好的效果。模型在跨領域實驗中的表現(xiàn)遠沒有領域內和混合領域的實驗結果好,這可能是因為沒有在模型中使用領域適應的方法。如果加入“領域無關特征”,并運用一些領域適應方法,模型的魯棒性和泛化能力將進一步增強。