嚴 明,劉茂福,胡慧君+
(1.武漢科技大學 計算機科學與技術學院,湖北 武漢 430065;2.武漢科技大學 智能信息處理與實時工業系統湖北省重點實驗室,湖北 武漢 430065)
文本蘊涵通常是來判斷兩個文本之間的關系,在給定前提文本P(promise)和假設文本H(hypothesis)條件下,如果根據文本P可以推理出文本H是正確的,那么就認為這兩個文本之間就存在蘊涵關系,如果推理出文本H是錯誤的,那么它們就是矛盾關系,如果相互之間沒有關聯,那么就是獨立關系[1]。文本蘊涵識別對文本摘要、問答系統、語義檢索等多項自然語言處理任務都非常重要[2,3]。文本摘要任務中可以使用文本蘊涵方法來精簡文本內容,問答系統中可以利用文本蘊涵方法來判斷問題和答案之間的因果關系。
目前文本蘊涵識別的方法主要分為3大類,第一類主要是采用傳統機器學習的方法[4-6],例如計算詞語相似度[7]的文本蘊涵識別、基于特征抽取的分類方法等;第二類采用句子編碼的深度學習方法[8-10]來解決文本蘊涵問題,Bowman使用長短時記憶神經網絡(long-short-term memory,LSTM)對句子進行編碼,在數據集(Stanford natural language inference,SNLI)上可以達到77.6%的準確率,驗證了深度學習在文本蘊涵識別任務的有效性;第三類為基于注意力機制[11-14]的方法,通過對假設句中的每個詞與前提句中的詞分別進行關系處理,來得到編碼向量,這種方法可以捕捉到詞語和短語級別的蘊涵關系,但是這類方法缺點在于都沒有同時考慮到句子間詞語與短語以及句子之間的交互匹配信息。
針對傳統注意力機制無法捕捉句間交互信息和句子全局信息的問題,本文提出一種基于多層注意力機制的文本蘊涵識別方法,多層注意力的結合能提升句子在復雜語義上的表示,彌補單注意力的不足。采用雙向長短時記憶神經網絡(bidirectional long short-term memory,Bi-LSTM)對句子進行編碼,這樣可以自動提取文本的相關特征,避免了人工選擇特征以及使用NLP工具造成的錯誤累計問題,使用自注意力[15](self-attention)得到句子的全局信息,更深層次的捕捉對句子語義有重要作用的詞和短語,并且使用協同注意力(co-attention)得到句子間詞語與短語交互匹配信息。然后采用最大池化和平均池化得到深度學習特征,最后再經過全連接層和SoftMax進行分類得到識別結果。
本文利用較少NLP工具對文本進行預處理,然后利用神經網絡自動提取文本特征,結合多層注意力機制得到文本的重要信息和文本之間的交互信息,最后經過全連接層和SoftMax分類器得到最終識別結果。系統框架如圖1所示。

圖1 模型框架
在數據預處理部分主要包含文本分詞和去停用詞兩個模塊。在文本分詞這一模塊使用了jieba分詞對數據進行了分詞處理,停用詞會給文本的有效信息產生噪聲干擾,而且停用詞沒有什么特殊的含義,比如“的”、“啊”、“哦”等詞,這些詞在語料中出現的頻率較高并且很少能表達出語句的相關信息。為了減少停用詞對語句造成的噪聲干擾和不必要的運算量,文本在進行提取特征之前進行去除停用詞處理。每個句子經過詞嵌入層得到句子的句向量矩陣,然后在訓練集上訓練多層注意力模型,并選用SoftMax作為模型的分類器,最后利用訓練好的模型預測測試集,得到測試集的分類結果。
多層注意力機制的網絡結構如圖2所示。輸入的文本首先經過詞嵌入層被轉化為向量形式,然后經過Bi-LSTM層提取文本特征,利用自注意力層獲取文本的全局信息,接著采用協同注意力層得到文本間的交互信息,最后是融合層與池化層的融合與池化。自注意力層和協同注意力層相互作用來獲取文本對的推理信息,經過拼接層、全連接層和SoftMax來得到文本之間的蘊涵關系。下面來詳細介紹網絡結構。
獨熱編碼(one-hot)的方式詞語與詞語之間沒有任何相關聯系,難以捕捉到詞語的句法和語義信息,并且當詞庫非常大時,浪費了大量的存儲資源。不同于獨熱編碼,詞嵌入層是將預處理后得到的詞語映射到向量空間中,并且將意思相近的詞語分組映射到向量空間中的不同部分,讓詞語與詞語之間能產生相應的關聯,得到詞語之間的內在關系。前提文本p=(wp1,…,wpi,…,wpm)和假設文本h=(wh1,…,whj,…,whn),經過詞嵌入層轉化為向量形式分別為ep=(ep1,…,epi,…,epm)和eh=(eh1,…,ehj,…,ehn),其中ep∈Rm×d,m表示前提文本的句子長度,d表示詞向量的維度。
LSTM[16]是RNN(recurrent neural network)的一種變體,因為RNN在文本過長導致前面的文本信息幾乎消失,不能很好解決文本信息的長期依賴問題,而且RNN在神經網絡反向傳播時容易造成梯度消失或者梯度爆炸等問題,所以許多研究人員都用LSTM神經網絡代替RNN神經網絡。與RNN神經網絡不同,LSTM通過設置輸入門、遺忘門、輸出門來解決文本的長期依賴問題和RNN的損失函數關于時刻隱藏層變量的梯度比較容易出現消失或爆炸的問題。所謂的“門”,就是通過sigmoid激活函數輸出一個0到1之間的數值,這樣來表示信息得到通過的程度,1表示全部保留,0表示全部舍棄。
在文本蘊涵識別中,文本包含的語義不僅和之前的狀態有關,也和之后的狀態有關。LSTM只能記住文本的上文,但是觸及不到文本的下文,這樣對機器來說,不能很好判斷整個的文本的含義,所以在LSTM的基礎上提出了Bi-LSTM[17]。Bi-LSTM能夠同時保留文本的“過去”和“未來”的信息,是真正利用了文本的上下文語義信息,使神經網絡能更好提取文本特征。Bi-LSTM的神經網絡結構如圖3所示。

圖2 網絡結構

圖3 Bi-LSTM神經網絡結構
從圖3中可以看出,X為輸入序列,h為前向層的隱藏層節點,h′為后向層的隱藏層節點,Y為輸出序列,Bi-LSTM模型是由兩個LSTM模型上下反向疊加在一起組成的,總共分為4層,分別是輸入層、前向層、后向層和輸出層。其中,輸入層和傳統的神經網絡結構一樣,對應著文本數據的輸入序列。前向層是一個由前向后傳播的LSTM結構,后向層是一個由后向前傳播的LSTM層,這兩層的節點連接的都是輸入層的節點和各層次中上一時刻的歷史狀態。輸出層則是對應于輸出序列的節點,由這兩個LSTM模型的狀態共同決定,將前向的LSTM的隱藏層和后向的LSTM隱藏層拼接在一起,作為這一時態的輸出。當向輸入層輸入一個子句時,模型會分別從前向和后向兩個方向進行運算,從而得到最后的輸出序列。
本文將經過詞嵌入層得到的句子向量形式經過Bi-LSTM可以表示為
hpi=Bi-LSTM(epi,hpi-1,hpi+1)
(1)
hhj=Bi-LSTM(ehj,hhj-1,hhj+1)
(2)
其中,epi表示當前詞,hpi-1表示為文本的“過去”信息,hpi+1表示文本的“未來”信息,這樣可以得到所有的隱藏層信息Hp=(hp1,…,hpi,…,hpm),同樣的也能得到Hh=(hh1,…,hhj,…,hhn),并對所有隱藏層進行對齊處理。
注意力機制來源于人類的視覺研究,由于信息處理的瓶頸,人們總是選擇性的關注信息中最在意的一部分,同時忽略掉其它不關心的信息,把有限的計算資源給最重要的部分。自注意力(self-attention)在自然語言處理領域已經成功的應用在機器翻譯,它通過對Bi-LSTM的輸出進行選擇性的學習并且與輸出序列進行關聯,這樣能突出文本中的重要信息,忽略文本中的冗余信息,從而能更好表征文本信息,進而得到文本的全局信息。具體計算公式如下所示
upi=tanh(Wwhpi+bw)
(3)
(4)
Vp=∑iαpihpi
(5)
式中:Ww與bw為注意力模型的可調節權重和偏置項,tanh為激活函數,hpi是Bi-LSTM層的輸出,uw也是權重值,計算的結果αpi表示句子中每個詞的重要度信息;Vp即為前提文本經過注意力模型計算后的輸出向量。同理也可以計算出假設文本經過注意力模型計算后的輸出向量Vh。
本文采用協同注意力(co-attention)來得到兩個句子之間的交互信息,并且在兩個句子相互時考慮到了單詞順序和句子的上下文信息,這樣能夠將兩個句子看成一個句子來進行語義蘊涵分析,而不是把每個句子都獨立的編碼成一個語義向量,這種方式可以捕捉到成對單詞和短語之間的蘊涵關系。具體計算公式如下所示
(6)
(7)
(8)
(9)
(10)


(11)
(12)
(13)
(14)
其中,[;]表示把各個隱藏層拼接在一起,表示對應元素相乘,所以fp=(fp1,…,fpi,…,fpm)。同樣的方法可以得到fh。
池化能很好減少特征提取過程中的誤差,常見的池化有最大池化和均值池化,最大池化能減少隱藏層參數的估計值均值偏移,而均值池化能減少隱藏層的估計值方差增大。本文采用最大池化和均值池化的方法來得到句子最有用的特征信息
(15)
(16)
然后將前面的自注意力層得到Vp和Vh的與池化后的結果進行拼接
V=[fpave;fpmax;Vp;fhave;fhmax;Vh]
(17)
本文使用兩層前饋神經網絡,第一層前饋神經網絡使用非線性激活函數為tanh,第二層前饋神經網絡使用的歸一化函數SoftMax分類器輸出每個類別的預測概率
U=tanh(W1+b1)
(18)
P(y|p,h)=SoftMax(W2U+b2)
(19)
其中,W1和b1為第一層前饋神經網絡的權重和偏置項。W2和b2為第二層SoftMax層的權重和偏置項。由于SoftMax的輸出結果是一個概率分布,需要衡量和真實標簽的差異,就是訓練過程的損失,所以訓練過程的目標為最小化交叉熵(cross entropy)損失函數,其公式如下所示

(20)

實驗環境。本文實驗的硬件環境為NVIDIA-GTX1070,CPU為Inter i5-7500,內存為8 G,軟件環境操作系統Ubuntu16.04,編程語言為python。
本文使用CCL2018中文文本蘊涵測評任務的數據集(chinese natural language inference,CNLI)進行實驗,并且還在NTCIR-9 RITE數據集上測試了本文模型泛化性。CNLI數據集用于訓練的數據有90 000條,驗證數據10 000條,測試數據10 000條,3種類別的數據比較平衡,數據具體分析統計見表1。

表1 CNLI數據集分析
NTCIR-9 RITE數據有1221條,其中包括正向蘊涵關系、逆向蘊涵關系、雙向蘊涵關系、矛盾關系、獨立關系,經過處理后,將類別標簽處理為蘊涵、矛盾、獨立3種關系。
評價指標選取準確率(Accuracy)來判斷模型的識別效果的好壞
(21)
其中,accNumber表示預測正確的數量,N表示是測試集中文本對的總數量。
本文采用預訓練好的300維glove中文詞向量,學習率設置為0.0003,dropout設置為0.2,batch size設置為32,Bi-LSTM和自注意力的隱藏層個數都設置為300維。優化方法采用的Adam。主要超參數見表2。

表2 參數設置
為了驗證本文設計的模型對中文文本蘊涵識別任務的有效性,還實現了Siamese模型[18]、ESIM模型[19]。各模型的在CNLI數據集準確率對比見表3。

表3 CNLI數據集上的模型比較/%
(1)Siamese模型:通過兩個Bi-LSTM共享權重來比較兩個句子的文本相似度方法。
(2)ESIM模型:通過句子間的注意力機制來實現局部推斷,再利用局部推斷得到全局推斷。
(3)多層注意力模型:本文提出的模型。
從表3中的實驗結果可以看出,對比Siamese模型,這個模型通過共享兩個句子神經網絡參數來得到兩個文本的相似性,沒有考慮到短語之間的匹配,在測試集上的準確率為68.48%,ESIM模型在SNLI上有很好的表現,用對齊注意力匹配字與字以及短語之間的匹配,在測試集上的準確率為72.22%,比Siamese模型提高了3.84%,但是ESIM模型沒有考慮到句子的全局信息的整體匹配。
多層注意力模型利用自注意力來獲取句子的全局信息,并采用協同注意力來得到句子間的局部信息和推理結果,在測試集上的準確率為73.88%,比Siamese模型提高了4.90%,比ESIM模型提高了1.66%。
表4中列為預測類別,行為真實類別,從各模型的混淆矩陣可以看出,蘊涵(entailment)類別的識別效果最好,其次是矛盾(contradiction)類別,獨立(neutral)類別識別較差。

表4 各模型在CNLI數據集上的混淆矩陣
例1:
前提:兩名男子正在談論一頓飯。
假設:兩名男子在晚餐時談論政治。
類別:獨立。
從例1可以看出兩個文本相似之處比較多, “兩名男子”、“談論”都出現在前提文本和假設文本中,并且出現位置也是一樣的,這樣會使模型認為蘊涵的概率大一點,而前提文本的談論“一頓飯”和假設文本的談論“政治”更像是矛盾的,“正在”和“在晚餐時”將前提文本和假設文本從時間和空間上相互獨立,所以拋開相似文本和矛盾文本的干擾,所以此類別為獨立。這類文本的深層語義信息難以捕捉,從而導致各模型錯誤的識別。
例2:
前提:一只大白狗和一只小黑狗坐在雪地里。
假設:地面上有積雪。
類別:蘊涵。
在例2中,Siamese模型和ESIM模型均錯誤的識別成了獨立,而多層注意力模型正確的識別出了兩個文本之間的蘊涵關系。由于兩個文本從詞與詞的相似度匹配,無法得到準確的識別結果,所以錯誤判斷成了獨立,而多層注意力模型不僅從詞與詞的角度進行匹配,并且借助全局匹配信息能正確的判斷出兩個文本之間的蘊涵關系。該結果也表明多層注意力在中文文本蘊涵識別上的有效性。
使用CNLI數據集上訓練出來的模型,針對NTCIR-9 RITE數據集,本文將訓練集、驗證集和測試集合并,一共1221條數據全部作為測試集。該模型在NTCIR-9 RITE數據集上的準確率為67.63%,而SVM模型則選擇976條數據作為訓練集,245條數據作為測試集,最后SVM模型在245條數據上的準確率為62.44%。見表5。表6為多層注意力模型在NTCIR-9 RITE數據集的混淆矩陣。其中列為預測類別,行為真實類別。從表6可以看出,用CNLI上訓練好的模型可以很好識別出NTCIR-9 RITE數據集上的蘊涵關系,而矛盾關系和獨立關系識別效果不太好。這也說明該模型在其它中文文本蘊涵數據集上也是有效的。

表5 NTCIR-9 RITE數據集上的模型比較/%

表6 多層注意力模型在NTCIR-9 RITE 數據集上的混淆矩陣
本文提出了一種基于多層注意力的中文文本蘊涵識別方法,首先中文文本對用詞向量表示,并通過Bi-LSTM獲取子句上下文語義特征,同時該方法中用自注意力提取了每個子句的全局信息特征,并使用協同注意力融合了句子間的局部信息特征,有效地解決了句間交互信息和全局信息的問題,進一步提高了中文文本蘊涵識別方法的準確率。在CCL2018中文文本蘊涵測評任務的數據集CNLI上準確率到達了73.88%,并且在NTCIR-9 RITE數據集上的準確率為67.63%。實驗結果也驗證了該方法對中文文本蘊涵識別的可行性和有效性。
在未來工作中,可以引入知識圖譜和外部語義知識來優化網絡,提高文本蘊涵識別的準確率,因為當提取出來的信息特征存在某些關聯關系及層次結構時,這是模型識別不到的。