嚴(yán) 明,劉茂福,胡慧君+
(1.武漢科技大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,湖北 武漢 430065;2.武漢科技大學(xué) 智能信息處理與實時工業(yè)系統(tǒng)湖北省重點(diǎn)實驗室,湖北 武漢 430065)
文本蘊(yùn)涵通常是來判斷兩個文本之間的關(guān)系,在給定前提文本P(promise)和假設(shè)文本H(hypothesis)條件下,如果根據(jù)文本P可以推理出文本H是正確的,那么就認(rèn)為這兩個文本之間就存在蘊(yùn)涵關(guān)系,如果推理出文本H是錯誤的,那么它們就是矛盾關(guān)系,如果相互之間沒有關(guān)聯(lián),那么就是獨(dú)立關(guān)系[1]。文本蘊(yùn)涵識別對文本摘要、問答系統(tǒng)、語義檢索等多項自然語言處理任務(wù)都非常重要[2,3]。文本摘要任務(wù)中可以使用文本蘊(yùn)涵方法來精簡文本內(nèi)容,問答系統(tǒng)中可以利用文本蘊(yùn)涵方法來判斷問題和答案之間的因果關(guān)系。
目前文本蘊(yùn)涵識別的方法主要分為3大類,第一類主要是采用傳統(tǒng)機(jī)器學(xué)習(xí)的方法[4-6],例如計算詞語相似度[7]的文本蘊(yùn)涵識別、基于特征抽取的分類方法等;第二類采用句子編碼的深度學(xué)習(xí)方法[8-10]來解決文本蘊(yùn)涵問題,Bowman使用長短時記憶神經(jīng)網(wǎng)絡(luò)(long-short-term memory,LSTM)對句子進(jìn)行編碼,在數(shù)據(jù)集(Stanford natural language inference,SNLI)上可以達(dá)到77.6%的準(zhǔn)確率,驗證了深度學(xué)習(xí)在文本蘊(yùn)涵識別任務(wù)的有效性;第三類為基于注意力機(jī)制[11-14]的方法,通過對假設(shè)句中的每個詞與前提句中的詞分別進(jìn)行關(guān)系處理,來得到編碼向量,這種方法可以捕捉到詞語和短語級別的蘊(yùn)涵關(guān)系,但是這類方法缺點(diǎn)在于都沒有同時考慮到句子間詞語與短語以及句子之間的交互匹配信息。
針對傳統(tǒng)注意力機(jī)制無法捕捉句間交互信息和句子全局信息的問題,本文提出一種基于多層注意力機(jī)制的文本蘊(yùn)涵識別方法,多層注意力的結(jié)合能提升句子在復(fù)雜語義上的表示,彌補(bǔ)單注意力的不足。采用雙向長短時記憶神經(jīng)網(wǎng)絡(luò)(bidirectional long short-term memory,Bi-LSTM)對句子進(jìn)行編碼,這樣可以自動提取文本的相關(guān)特征,避免了人工選擇特征以及使用NLP工具造成的錯誤累計問題,使用自注意力[15](self-attention)得到句子的全局信息,更深層次的捕捉對句子語義有重要作用的詞和短語,并且使用協(xié)同注意力(co-attention)得到句子間詞語與短語交互匹配信息。然后采用最大池化和平均池化得到深度學(xué)習(xí)特征,最后再經(jīng)過全連接層和SoftMax進(jìn)行分類得到識別結(jié)果。
本文利用較少NLP工具對文本進(jìn)行預(yù)處理,然后利用神經(jīng)網(wǎng)絡(luò)自動提取文本特征,結(jié)合多層注意力機(jī)制得到文本的重要信息和文本之間的交互信息,最后經(jīng)過全連接層和SoftMax分類器得到最終識別結(jié)果。系統(tǒng)框架如圖1所示。
圖1 模型框架
在數(shù)據(jù)預(yù)處理部分主要包含文本分詞和去停用詞兩個模塊。在文本分詞這一模塊使用了jieba分詞對數(shù)據(jù)進(jìn)行了分詞處理,停用詞會給文本的有效信息產(chǎn)生噪聲干擾,而且停用詞沒有什么特殊的含義,比如“的”、“啊”、“哦”等詞,這些詞在語料中出現(xiàn)的頻率較高并且很少能表達(dá)出語句的相關(guān)信息。為了減少停用詞對語句造成的噪聲干擾和不必要的運(yùn)算量,文本在進(jìn)行提取特征之前進(jìn)行去除停用詞處理。每個句子經(jīng)過詞嵌入層得到句子的句向量矩陣,然后在訓(xùn)練集上訓(xùn)練多層注意力模型,并選用SoftMax作為模型的分類器,最后利用訓(xùn)練好的模型預(yù)測測試集,得到測試集的分類結(jié)果。
多層注意力機(jī)制的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。輸入的文本首先經(jīng)過詞嵌入層被轉(zhuǎn)化為向量形式,然后經(jīng)過Bi-LSTM層提取文本特征,利用自注意力層獲取文本的全局信息,接著采用協(xié)同注意力層得到文本間的交互信息,最后是融合層與池化層的融合與池化。自注意力層和協(xié)同注意力層相互作用來獲取文本對的推理信息,經(jīng)過拼接層、全連接層和SoftMax來得到文本之間的蘊(yùn)涵關(guān)系。下面來詳細(xì)介紹網(wǎng)絡(luò)結(jié)構(gòu)。
獨(dú)熱編碼(one-hot)的方式詞語與詞語之間沒有任何相關(guān)聯(lián)系,難以捕捉到詞語的句法和語義信息,并且當(dāng)詞庫非常大時,浪費(fèi)了大量的存儲資源。不同于獨(dú)熱編碼,詞嵌入層是將預(yù)處理后得到的詞語映射到向量空間中,并且將意思相近的詞語分組映射到向量空間中的不同部分,讓詞語與詞語之間能產(chǎn)生相應(yīng)的關(guān)聯(lián),得到詞語之間的內(nèi)在關(guān)系。前提文本p=(wp1,…,wpi,…,wpm)和假設(shè)文本h=(wh1,…,whj,…,whn),經(jīng)過詞嵌入層轉(zhuǎn)化為向量形式分別為ep=(ep1,…,epi,…,epm)和eh=(eh1,…,ehj,…,ehn),其中ep∈Rm×d,m表示前提文本的句子長度,d表示詞向量的維度。
LSTM[16]是RNN(recurrent neural network)的一種變體,因為RNN在文本過長導(dǎo)致前面的文本信息幾乎消失,不能很好解決文本信息的長期依賴問題,而且RNN在神經(jīng)網(wǎng)絡(luò)反向傳播時容易造成梯度消失或者梯度爆炸等問題,所以許多研究人員都用LSTM神經(jīng)網(wǎng)絡(luò)代替RNN神經(jīng)網(wǎng)絡(luò)。與RNN神經(jīng)網(wǎng)絡(luò)不同,LSTM通過設(shè)置輸入門、遺忘門、輸出門來解決文本的長期依賴問題和RNN的損失函數(shù)關(guān)于時刻隱藏層變量的梯度比較容易出現(xiàn)消失或爆炸的問題。所謂的“門”,就是通過sigmoid激活函數(shù)輸出一個0到1之間的數(shù)值,這樣來表示信息得到通過的程度,1表示全部保留,0表示全部舍棄。
在文本蘊(yùn)涵識別中,文本包含的語義不僅和之前的狀態(tài)有關(guān),也和之后的狀態(tài)有關(guān)。LSTM只能記住文本的上文,但是觸及不到文本的下文,這樣對機(jī)器來說,不能很好判斷整個的文本的含義,所以在LSTM的基礎(chǔ)上提出了Bi-LSTM[17]。Bi-LSTM能夠同時保留文本的“過去”和“未來”的信息,是真正利用了文本的上下文語義信息,使神經(jīng)網(wǎng)絡(luò)能更好提取文本特征。Bi-LSTM的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖2 網(wǎng)絡(luò)結(jié)構(gòu)
圖3 Bi-LSTM神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
從圖3中可以看出,X為輸入序列,h為前向?qū)拥碾[藏層節(jié)點(diǎn),h′為后向?qū)拥碾[藏層節(jié)點(diǎn),Y為輸出序列,Bi-LSTM模型是由兩個LSTM模型上下反向疊加在一起組成的,總共分為4層,分別是輸入層、前向?qū)?、后向?qū)雍洼敵鰧印F渲?,輸入層和傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)一樣,對應(yīng)著文本數(shù)據(jù)的輸入序列。前向?qū)邮且粋€由前向后傳播的LSTM結(jié)構(gòu),后向?qū)邮且粋€由后向前傳播的LSTM層,這兩層的節(jié)點(diǎn)連接的都是輸入層的節(jié)點(diǎn)和各層次中上一時刻的歷史狀態(tài)。輸出層則是對應(yīng)于輸出序列的節(jié)點(diǎn),由這兩個LSTM模型的狀態(tài)共同決定,將前向的LSTM的隱藏層和后向的LSTM隱藏層拼接在一起,作為這一時態(tài)的輸出。當(dāng)向輸入層輸入一個子句時,模型會分別從前向和后向兩個方向進(jìn)行運(yùn)算,從而得到最后的輸出序列。
本文將經(jīng)過詞嵌入層得到的句子向量形式經(jīng)過Bi-LSTM可以表示為
hpi=Bi-LSTM(epi,hpi-1,hpi+1)
(1)
hhj=Bi-LSTM(ehj,hhj-1,hhj+1)
(2)
其中,epi表示當(dāng)前詞,hpi-1表示為文本的“過去”信息,hpi+1表示文本的“未來”信息,這樣可以得到所有的隱藏層信息Hp=(hp1,…,hpi,…,hpm),同樣的也能得到Hh=(hh1,…,hhj,…,hhn),并對所有隱藏層進(jìn)行對齊處理。
注意力機(jī)制來源于人類的視覺研究,由于信息處理的瓶頸,人們總是選擇性的關(guān)注信息中最在意的一部分,同時忽略掉其它不關(guān)心的信息,把有限的計算資源給最重要的部分。自注意力(self-attention)在自然語言處理領(lǐng)域已經(jīng)成功的應(yīng)用在機(jī)器翻譯,它通過對Bi-LSTM的輸出進(jìn)行選擇性的學(xué)習(xí)并且與輸出序列進(jìn)行關(guān)聯(lián),這樣能突出文本中的重要信息,忽略文本中的冗余信息,從而能更好表征文本信息,進(jìn)而得到文本的全局信息。具體計算公式如下所示
upi=tanh(Wwhpi+bw)
(3)
(4)
Vp=∑iαpihpi
(5)
式中:Ww與bw為注意力模型的可調(diào)節(jié)權(quán)重和偏置項,tanh為激活函數(shù),hpi是Bi-LSTM層的輸出,uw也是權(quán)重值,計算的結(jié)果αpi表示句子中每個詞的重要度信息;Vp即為前提文本經(jīng)過注意力模型計算后的輸出向量。同理也可以計算出假設(shè)文本經(jīng)過注意力模型計算后的輸出向量Vh。
本文采用協(xié)同注意力(co-attention)來得到兩個句子之間的交互信息,并且在兩個句子相互時考慮到了單詞順序和句子的上下文信息,這樣能夠?qū)蓚€句子看成一個句子來進(jìn)行語義蘊(yùn)涵分析,而不是把每個句子都獨(dú)立的編碼成一個語義向量,這種方式可以捕捉到成對單詞和短語之間的蘊(yùn)涵關(guān)系。具體計算公式如下所示
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
其中,[;]表示把各個隱藏層拼接在一起,表示對應(yīng)元素相乘,所以fp=(fp1,…,fpi,…,fpm)。同樣的方法可以得到fh。
池化能很好減少特征提取過程中的誤差,常見的池化有最大池化和均值池化,最大池化能減少隱藏層參數(shù)的估計值均值偏移,而均值池化能減少隱藏層的估計值方差增大。本文采用最大池化和均值池化的方法來得到句子最有用的特征信息
(15)
(16)
然后將前面的自注意力層得到Vp和Vh的與池化后的結(jié)果進(jìn)行拼接
V=[fpave;fpmax;Vp;fhave;fhmax;Vh]
(17)
本文使用兩層前饋神經(jīng)網(wǎng)絡(luò),第一層前饋神經(jīng)網(wǎng)絡(luò)使用非線性激活函數(shù)為tanh,第二層前饋神經(jīng)網(wǎng)絡(luò)使用的歸一化函數(shù)SoftMax分類器輸出每個類別的預(yù)測概率
U=tanh(W1+b1)
(18)
P(y|p,h)=SoftMax(W2U+b2)
(19)
其中,W1和b1為第一層前饋神經(jīng)網(wǎng)絡(luò)的權(quán)重和偏置項。W2和b2為第二層SoftMax層的權(quán)重和偏置項。由于SoftMax的輸出結(jié)果是一個概率分布,需要衡量和真實標(biāo)簽的差異,就是訓(xùn)練過程的損失,所以訓(xùn)練過程的目標(biāo)為最小化交叉熵(cross entropy)損失函數(shù),其公式如下所示
(20)
實驗環(huán)境。本文實驗的硬件環(huán)境為NVIDIA-GTX1070,CPU為Inter i5-7500,內(nèi)存為8 G,軟件環(huán)境操作系統(tǒng)Ubuntu16.04,編程語言為python。
本文使用CCL2018中文文本蘊(yùn)涵測評任務(wù)的數(shù)據(jù)集(chinese natural language inference,CNLI)進(jìn)行實驗,并且還在NTCIR-9 RITE數(shù)據(jù)集上測試了本文模型泛化性。CNLI數(shù)據(jù)集用于訓(xùn)練的數(shù)據(jù)有90 000條,驗證數(shù)據(jù)10 000條,測試數(shù)據(jù)10 000條,3種類別的數(shù)據(jù)比較平衡,數(shù)據(jù)具體分析統(tǒng)計見表1。
表1 CNLI數(shù)據(jù)集分析
NTCIR-9 RITE數(shù)據(jù)有1221條,其中包括正向蘊(yùn)涵關(guān)系、逆向蘊(yùn)涵關(guān)系、雙向蘊(yùn)涵關(guān)系、矛盾關(guān)系、獨(dú)立關(guān)系,經(jīng)過處理后,將類別標(biāo)簽處理為蘊(yùn)涵、矛盾、獨(dú)立3種關(guān)系。
評價指標(biāo)選取準(zhǔn)確率(Accuracy)來判斷模型的識別效果的好壞
(21)
其中,accNumber表示預(yù)測正確的數(shù)量,N表示是測試集中文本對的總數(shù)量。
本文采用預(yù)訓(xùn)練好的300維glove中文詞向量,學(xué)習(xí)率設(shè)置為0.0003,dropout設(shè)置為0.2,batch size設(shè)置為32,Bi-LSTM和自注意力的隱藏層個數(shù)都設(shè)置為300維。優(yōu)化方法采用的Adam。主要超參數(shù)見表2。
表2 參數(shù)設(shè)置
為了驗證本文設(shè)計的模型對中文文本蘊(yùn)涵識別任務(wù)的有效性,還實現(xiàn)了Siamese模型[18]、ESIM模型[19]。各模型的在CNLI數(shù)據(jù)集準(zhǔn)確率對比見表3。
表3 CNLI數(shù)據(jù)集上的模型比較/%
(1)Siamese模型:通過兩個Bi-LSTM共享權(quán)重來比較兩個句子的文本相似度方法。
(2)ESIM模型:通過句子間的注意力機(jī)制來實現(xiàn)局部推斷,再利用局部推斷得到全局推斷。
(3)多層注意力模型:本文提出的模型。
從表3中的實驗結(jié)果可以看出,對比Siamese模型,這個模型通過共享兩個句子神經(jīng)網(wǎng)絡(luò)參數(shù)來得到兩個文本的相似性,沒有考慮到短語之間的匹配,在測試集上的準(zhǔn)確率為68.48%,ESIM模型在SNLI上有很好的表現(xiàn),用對齊注意力匹配字與字以及短語之間的匹配,在測試集上的準(zhǔn)確率為72.22%,比Siamese模型提高了3.84%,但是ESIM模型沒有考慮到句子的全局信息的整體匹配。
多層注意力模型利用自注意力來獲取句子的全局信息,并采用協(xié)同注意力來得到句子間的局部信息和推理結(jié)果,在測試集上的準(zhǔn)確率為73.88%,比Siamese模型提高了4.90%,比ESIM模型提高了1.66%。
表4中列為預(yù)測類別,行為真實類別,從各模型的混淆矩陣可以看出,蘊(yùn)涵(entailment)類別的識別效果最好,其次是矛盾(contradiction)類別,獨(dú)立(neutral)類別識別較差。
表4 各模型在CNLI數(shù)據(jù)集上的混淆矩陣
例1:
前提:兩名男子正在談?wù)撘活D飯。
假設(shè):兩名男子在晚餐時談?wù)撜巍?/p>
類別:獨(dú)立。
從例1可以看出兩個文本相似之處比較多, “兩名男子”、“談?wù)摗倍汲霈F(xiàn)在前提文本和假設(shè)文本中,并且出現(xiàn)位置也是一樣的,這樣會使模型認(rèn)為蘊(yùn)涵的概率大一點(diǎn),而前提文本的談?wù)摗耙活D飯”和假設(shè)文本的談?wù)摗罢巍备袷敲艿?,“正在”和“在晚餐時”將前提文本和假設(shè)文本從時間和空間上相互獨(dú)立,所以拋開相似文本和矛盾文本的干擾,所以此類別為獨(dú)立。這類文本的深層語義信息難以捕捉,從而導(dǎo)致各模型錯誤的識別。
例2:
前提:一只大白狗和一只小黑狗坐在雪地里。
假設(shè):地面上有積雪。
類別:蘊(yùn)涵。
在例2中,Siamese模型和ESIM模型均錯誤的識別成了獨(dú)立,而多層注意力模型正確的識別出了兩個文本之間的蘊(yùn)涵關(guān)系。由于兩個文本從詞與詞的相似度匹配,無法得到準(zhǔn)確的識別結(jié)果,所以錯誤判斷成了獨(dú)立,而多層注意力模型不僅從詞與詞的角度進(jìn)行匹配,并且借助全局匹配信息能正確的判斷出兩個文本之間的蘊(yùn)涵關(guān)系。該結(jié)果也表明多層注意力在中文文本蘊(yùn)涵識別上的有效性。
使用CNLI數(shù)據(jù)集上訓(xùn)練出來的模型,針對NTCIR-9 RITE數(shù)據(jù)集,本文將訓(xùn)練集、驗證集和測試集合并,一共1221條數(shù)據(jù)全部作為測試集。該模型在NTCIR-9 RITE數(shù)據(jù)集上的準(zhǔn)確率為67.63%,而SVM模型則選擇976條數(shù)據(jù)作為訓(xùn)練集,245條數(shù)據(jù)作為測試集,最后SVM模型在245條數(shù)據(jù)上的準(zhǔn)確率為62.44%。見表5。表6為多層注意力模型在NTCIR-9 RITE數(shù)據(jù)集的混淆矩陣。其中列為預(yù)測類別,行為真實類別。從表6可以看出,用CNLI上訓(xùn)練好的模型可以很好識別出NTCIR-9 RITE數(shù)據(jù)集上的蘊(yùn)涵關(guān)系,而矛盾關(guān)系和獨(dú)立關(guān)系識別效果不太好。這也說明該模型在其它中文文本蘊(yùn)涵數(shù)據(jù)集上也是有效的。
表5 NTCIR-9 RITE數(shù)據(jù)集上的模型比較/%
表6 多層注意力模型在NTCIR-9 RITE 數(shù)據(jù)集上的混淆矩陣
本文提出了一種基于多層注意力的中文文本蘊(yùn)涵識別方法,首先中文文本對用詞向量表示,并通過Bi-LSTM獲取子句上下文語義特征,同時該方法中用自注意力提取了每個子句的全局信息特征,并使用協(xié)同注意力融合了句子間的局部信息特征,有效地解決了句間交互信息和全局信息的問題,進(jìn)一步提高了中文文本蘊(yùn)涵識別方法的準(zhǔn)確率。在CCL2018中文文本蘊(yùn)涵測評任務(wù)的數(shù)據(jù)集CNLI上準(zhǔn)確率到達(dá)了73.88%,并且在NTCIR-9 RITE數(shù)據(jù)集上的準(zhǔn)確率為67.63%。實驗結(jié)果也驗證了該方法對中文文本蘊(yùn)涵識別的可行性和有效性。
在未來工作中,可以引入知識圖譜和外部語義知識來優(yōu)化網(wǎng)絡(luò),提高文本蘊(yùn)涵識別的準(zhǔn)確率,因為當(dāng)提取出來的信息特征存在某些關(guān)聯(lián)關(guān)系及層次結(jié)構(gòu)時,這是模型識別不到的。