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