張 碩, 卜 巍, 鄔向前
(1 哈爾濱工業(yè)大學(xué) 計算機科學(xué)與技術(shù)學(xué)院, 哈爾濱150001; 2 哈爾濱工業(yè)大學(xué) 媒體技術(shù)與藝術(shù)學(xué)院, 哈爾濱150001)
隨著互聯(lián)網(wǎng)的快速發(fā)展,可以輕松地得到海量帶有觀點的數(shù)據(jù)。 各種購物平臺、點餐平臺以及社交平臺的興起,人們可以在購物平臺上對所購買的商品進行評價,對消費過的餐廳進行點評,盡情地在社交平臺上表達自己的觀點,對事件的情感態(tài)度。對這些飽含大眾情感的內(nèi)容進行研究,發(fā)挖掘這些文本背后隱藏的大眾的情感態(tài)度,將幫助購物平臺和點餐平臺等更好地了解購買者的喜好,同時也是對商家的監(jiān)督。 對社交媒體上大眾對于某些事件的情感分析,可以幫助了解大眾,引導(dǎo)正確的社會輿論。 因此,近年來情感分析在自然語言處理領(lǐng)域的研究非常廣泛。 研究表明:40%的情感分類錯誤是由于在情感分類中沒有考慮目標(biāo)造成的[1]。 近年來,研究者們開始將研究方向從單純的文本情感分析轉(zhuǎn)向方面級別的文本情感分析。
本文針對方面級別的情感分析,考慮上下文單詞與方面序列之間的距離,提出了局部文本序列的定義,并提出了一種基于局部注意力的的網(wǎng)絡(luò)框架。
研究者們研究了各種基于神經(jīng)網(wǎng)絡(luò)的方法來解決方面級別的情感分類問題。 一些研究者設(shè)計了有效的神經(jīng)網(wǎng)絡(luò),從目標(biāo)及其上下文中自動生成有用的低維表示,在方面級別情感分類任務(wù)中取得了很好的效果,典型的方法是基于LSTM 的神經(jīng)網(wǎng)絡(luò)。Dong 等人通過開發(fā)兩個LSTM 網(wǎng)絡(luò)來模擬方面目標(biāo)的左右上下文來解決這個問題,該方法利用這兩個LSTMs 的最后隱藏狀態(tài)來預(yù)測情緒。 為了更好地抓住句子中的重要部分,Wang 等人使用一個方面詞嵌入,來生成一個注意力向量,集中在句子的不同部分。 Vo 和Zhang 將整個上下文分為目標(biāo)、左上下文和右上下文三個部分,使用情感詞典和神經(jīng)池函數(shù)生成目標(biāo)相關(guān)特征。 Tang 等人將上下文分為帶目標(biāo)的左半部分和帶目標(biāo)的右半部分,分別使用兩個LSTM 模型對這兩個部分建模,利用這兩部分合成的目標(biāo)特定表示進行情感分類。
局部文本序列:對于給定一個句子s =[w1,w2,…,wi,…,wj,…,wn],和方面序列t =[wi,wi+1,…,wi+m-1],其中方面序列可能包含一個或多個詞。 如圖1 所示, 設(shè)局部文本序列為整個文本中,距方面詞中心距離為k的序列片段。 當(dāng)方面詞為一個單詞時,局部文本序列l(wèi) =[wi-k,wi-k+1,…,wi,…,wi+k-1,…,wi+k],其中wi為方面詞。 當(dāng)方面詞為多個單詞時,局部文本序列l(wèi) =[wi-k,…,wi,…,wj,…,wj+k],其中wi為方面詞的第一個詞,wj為方面詞的最后一個詞。
圖1 局部文本序列示意圖Fig. 1 The chart of local context
網(wǎng)絡(luò)整體結(jié)構(gòu)如圖2 所示(與圖的名字不一致),包括詞嵌入層,特征提取層,注意力層以及分類層。
詞嵌入層。 (1)Glove 詞嵌入。 設(shè)L∈Rdw×|V|為預(yù)先訓(xùn)練的Glove(Pennington 等人,2014)嵌入矩陣,其中dw為詞向量的維數(shù),為詞匯的數(shù)量。將上下文和方面的每個詞wi∈映射到對應(yīng)的嵌入向量ei∈Rdw×1, 它是嵌入矩陣L中的一列。(2)BERT 詞嵌入。 使用預(yù)先訓(xùn)練的BERT 生成序列的詞向量。 為了便于BERT 模型的訓(xùn)練和微調(diào),將給定的上下文和目標(biāo)分別轉(zhuǎn)換為“[CLS]+上下文文本+SEP”和“[CLS]+方面序列+SEP”,從而作為文本序列的詞嵌入進行模型訓(xùn)練。
通過詞嵌入模塊,將全局文本序列映射為S ={vs1,vs2,…,vsn},將方面序列映射為T ={vt1,vt2,…,vtm},將局部文本序列映射為L ={vl1,vl2,…,vlk}。其中vti∈Rdw,vsi∈Rdw,vli∈Rdw,dw為詞嵌入維度。
圖2 網(wǎng)絡(luò)框架圖Fig. 2 The framework chart of our algorithm
特征提取層。 多頭自注意是一種同時執(zhí)行多次自注意力的操作。 為了對文本進行特征提取,利用多頭自注意力機制分別對全本文本序列、方面詞序列以及局部文本序列進行建模。 注意函數(shù)將Key 序列K ={k1,k2,…,kn} 和Query 序列Q ={q1,q2,…,qm} 映射到輸出序列,其中對全局文本自注意力計算方式如公式(1),局部文本的自注意力計算方式如公式(2),方面序列的自注意力計算方式如公式(3)。
多頭自注意力就是平行地進行多詞注意力計算,將結(jié)果拼接到一起作為最終的結(jié)果,其中三個序列的計算方式是一樣的,這里只以全局文本為例子,具體計算如公式(4)和公式(5):
除了多頭注意力之外,每一次注意力計算后都包含一個全連接的逐點前饋網(wǎng)絡(luò)(Point-wise Feed Forward,PFF)。 共包括兩個線性轉(zhuǎn)換,以及一個relu激活。 公式如(6)和(7)。
其中:W1∈Rdw×dw,W2∈Rdw×dw是兩個可學(xué)習(xí)權(quán)重,b2∈Rdw,b2∈Rdw是兩個偏置參數(shù)。relu為激活函數(shù)。
注意力層。 在這一層中,將利用特征提取層得到的結(jié)果,以方面序列的輸出作為新的注意力中的Query,全局文本序列的輸出作為新的注意力計算中的Key 以及Value,計算方面序列對全局文本的注意力分?jǐn)?shù),如公式(8)。 同樣地,以方面序列作為Query,以上一層中局部文本序列的輸出作為Key 和Value,采用多頭注意力的方式計算方面序列對局部文本的注意力分?jǐn)?shù),并更新局部文本表示,如公式(9)。 之后將更新后的全局文本表示rs以及局部文本表示rl分別作為輸入,通入到PFF 函數(shù)中,如公式(10)和公式(11),從而得到最終的全局文本表示以及局部文本序列的表示。
分類層。 將注意力層輸出的全局文本表示和局部文本表示連接到一起,如公式(11),由于分類結(jié)果分為積極、消極和中性三個類別,所以將連接后的向量輸入一個三個神經(jīng)元的全連接層,如公式(12),然后送入SoftMax 函數(shù)得到和為1 的三個概率值,如公式(13),概率最大的即為最終的情感類別。
其中:Wl∈R3×2dw和bl∈R3×1分別表示權(quán)重矩陣和偏差。
實驗的數(shù)據(jù)集來自Semeval2014 語義評測任務(wù)的任務(wù)4 的第四個子任務(wù):方面級別情感分類。 該任務(wù)給定一個句子以及句子中包含的一個或多個方面類別,輸出每個方面類別對應(yīng)的情感分類。 分類分為積極,消極和中性。 數(shù)據(jù)集一共包括餐廳評論數(shù)據(jù)集以及筆記本電腦數(shù)據(jù)集。 本文用到的數(shù)據(jù)集還包括ACL 14 Twitter 數(shù)據(jù)集。
“All the money went into the interior decoration ,none of it went to the chefs”,對于這個句子,當(dāng)方面序列為“interior decoration”時,情感分類為積極;當(dāng)方面序列為“chefs”時,情感分類為消極。 這些數(shù)據(jù)集被大多數(shù)提出的模型所采用,是方面級別情感分析任務(wù)中最流行的數(shù)據(jù)集,表1 展示了3 個數(shù)據(jù)集中訓(xùn)練集和測試集的細(xì)節(jié)。
表1 數(shù)據(jù)集統(tǒng)計表Tab. 1 The statistics of dataset
為了能夠評估不同的情感分析算法的行能,對算法的泛化性能進行評估,本文采用該領(lǐng)域常用的評價指標(biāo): 準(zhǔn)確率(Accuracy) 和綜合指標(biāo)(F1),其中準(zhǔn)確率計算方式如公式(14),F(xiàn)1 計算方式如公式(15):
其中:TP表示被模型預(yù)測為正的正樣本;FP表示被模型預(yù)測為正的負(fù)樣本;FN表示被模型預(yù)測為負(fù)的正樣本;TN表示被模型預(yù)測為負(fù)的負(fù)樣本。N表示總的樣本數(shù)量。
詞嵌入中Glove 的嵌入方法的詞嵌入維數(shù)設(shè)置為300。 BERT 詞嵌入方法,隱藏層維度設(shè)置為768。LSTM 網(wǎng)絡(luò)隱藏狀態(tài)的維度同樣設(shè)置為300,并在訓(xùn)練期間固定。 為了確保在訓(xùn)練過程可以學(xué)到有用的信息,參數(shù)梯度不為0,模型的權(quán)重是用Glorot 隨機初始化的[2]。 L2 正則化項的系數(shù)λ 為10-3,dropout設(shè)置為0.1,Batchsize 設(shè)置為32,Adam you 優(yōu)化器用于更新所有參數(shù)。
本文在損失函數(shù)中使用了標(biāo)簽平滑正則化(Label smoothing Regularization, LSR)的。 它懲罰了低熵輸出分布[3]。 LSR 可以通過防止網(wǎng)絡(luò)在訓(xùn)練期間為每個訓(xùn)練示例分配全0 或全1 概率來減少過度擬合,用平滑的值替換分類器的0 和1 目標(biāo),如用0.1 或者0.9 替代0 和1。 利用公式(17)中的q′(k |x) 代替原本的標(biāo)簽分布q(k |x)。 令u(k) 服從簡單的均勻分布,如公式(16)。
其中,c為情感分類的類別數(shù)3,得到了新的標(biāo)簽分布,如公式(17)。
最終的損失函數(shù)依舊采用交叉熵?fù)p失函數(shù),但是將真實標(biāo)簽換成平滑后的標(biāo)簽,如公式(18)。
其中,q′為平滑后的標(biāo)簽,p為預(yù)測標(biāo)簽,q為真實標(biāo)簽。 λ 為l2 正則化項系數(shù),θ為參數(shù)。
首先針對局部文本序列的長度進行了實驗,分別取k =1,2,3,4,5。 對應(yīng)的局部文本序列長度位:3,5,7,9,11。 如表2 所示,可以發(fā)現(xiàn)當(dāng)k =2 或3時,結(jié)果最好,也就是局部文本序列的長度為5 或者7 時,模型的效果最佳。 當(dāng)序列長度過長時,局部文本序列的長度趨近于全局文本序列長度,本文的模型失去了意義;當(dāng)序列長度過短時,局部文本序列幾乎等于方面序列。 因此,在后續(xù)的實驗中, 都采用k =2 來訓(xùn)練。
表2 局部文本序列長度K 不同取值的對比Tab. 2 Comparison of K in local context length
為了證明本文提出的基于局部注意力的方面級別情感分析網(wǎng)絡(luò)(Local Attention Network, LAN)的優(yōu)越性,將其與以下模型進行了比較,結(jié)果如表3 所示。
表3 模型對比結(jié)果Tab. 3 Model comparison results
LSTM。 使用一個LSTM 網(wǎng)絡(luò)對句子進行建模,最后一個隱藏狀態(tài)作為句子的表示形式進行最終分類;TD-LSTM:使用兩個LSTM 網(wǎng)絡(luò)來模擬,圍繞方面術(shù)語的前后上下文,這兩個LSTM 網(wǎng)絡(luò)的最后隱藏狀態(tài)被連接起來,以預(yù)測情感極性。 ATAELSTM:通過將方面嵌入到每個詞向量中來進一步擴展T-LSTM;IAN:使用兩個LSTM 網(wǎng)絡(luò)分別對句子和方面項進行建模,利用句子中隱藏的狀態(tài)為方面生成一個注意向量,反之亦然。 基于這兩個注意向量,輸出用于分類的句子表示和方面表示;MGAN:提出了一種細(xì)粒度的注意機制,捕獲方面和上下文之間的詞級交互;PBAN:關(guān)注方面術(shù)語的位置信息,并通過雙向注意相互模擬方面術(shù)語和句子之間的關(guān)系;TNet:提出了一個特定目標(biāo)的轉(zhuǎn)換組件,用于生成基于特定目標(biāo)的詞向量,并利用上下文信息保留機制維持原有信息;TransCap:提出了一種將文檔級知識轉(zhuǎn)移到方面級情感分類的轉(zhuǎn)移膠囊網(wǎng)絡(luò)模型;IACapsNet:提出利用膠囊網(wǎng)絡(luò)構(gòu)造基于向量的特征表示,并通過EM 尋路算法對特征進行聚類。 此外,在膠囊尋路過程中,引入了交互注意機制,以建立方面和上下文之間的語義關(guān)系。 結(jié)果顯示本文的模型在推特數(shù)據(jù)集上略低于IACapsNet 和TNet,餐廳數(shù)據(jù)集以及筆記本電腦數(shù)據(jù)集上準(zhǔn)確率和F1 都取得了最好的結(jié)果。
本文提出了一種基于局部注意力的網(wǎng)絡(luò)框架,由于距離越近,上下文對方面序列情感傾向影響可能越大,考慮到上下文與方面序列之間的位置關(guān)系,提出了局部序列的定義,局部文本序列的構(gòu)建取決于方面序列。 同時本文提出了用標(biāo)簽平滑正則化修正損失函數(shù),并在詞嵌入分別為Glove 和BERT 的基礎(chǔ)上進行了實驗。 最終結(jié)果顯示,本文的模型在前兩個數(shù)據(jù)集上都超越了先前的模型。