楊德志,柯顯信,余其超,楊幫華
(上海大學(xué)機(jī)電工程與自動(dòng)化學(xué)院,上海 200444)
自然語言處理NLP(Natural Language Processing)技術(shù)是當(dāng)今最前沿的研究熱點(diǎn)之一,文本語義相似度計(jì)算作為NLP的基礎(chǔ),得到了廣泛的關(guān)注。文本語義相似度計(jì)算,不像機(jī)器翻譯MT(Machine Translation)、問答系統(tǒng)QA(Question Answering System)等屬于端到端(end-to-end)型任務(wù),通常以文本匹配、文本相關(guān)性計(jì)算的形式,在某應(yīng)用系統(tǒng)中起核心支撐作用,比如搜索引擎、智能問答、知識(shí)檢索和信息流推薦等[1]。在檢索系統(tǒng)中計(jì)算查詢項(xiàng)和文檔的匹配度、問答系統(tǒng)中計(jì)算問題與候選答案的匹配度、對話系統(tǒng)中計(jì)算對話和回復(fù)的匹配度等,都是基于文本語義相似度計(jì)算技術(shù),所以對文本語義相似度計(jì)算進(jìn)行研究具有重要的意義。
然而文本語義相似度計(jì)算是一項(xiàng)具有挑戰(zhàn)性的任務(wù),由于人類語言學(xué)是一門非常深?yuàn)W的學(xué)問,簡短的幾個(gè)字就能包含復(fù)雜、微妙的內(nèi)容,表面看起來不同的問句可以表達(dá)非常相似的含義,以至于不僅要從不同的文本處理粒度(字粒度或詞粒度)對文本語義進(jìn)行分析,還要結(jié)合具體的語言環(huán)境進(jìn)行更深層次的語義分析。以往的研究局限于使用傳統(tǒng)模型進(jìn)行文本相似度計(jì)算,如基于字面匹配的TF_IDF模型、BM25(Best Match)模型和基于語義匹配的潛在語義分析LSA(Latent Semantic Analysis)模型等[2]。但是,這些模型基于關(guān)鍵詞信息進(jìn)行匹配,只能提取到一些淺層的語義信息,并不能提取深層語義信息。近些年來,基于深度學(xué)習(xí)的方法在文本語義相似度計(jì)算中取得了很大的成功,是現(xiàn)在文本語義相似度計(jì)算技術(shù)的主流研究方法。
當(dāng)前比較2個(gè)問句相似性的方法主要分為3種:孿生網(wǎng)絡(luò)框架SNF(Siamese Network Framework)、交互型網(wǎng)絡(luò)框架INF(Interactive Network Framework)和微調(diào)預(yù)訓(xùn)練語言模型PLM(Pre-trained Language Model)[3]。使用孿生網(wǎng)絡(luò)框架處理句子相似度任務(wù)的相關(guān)研究[4,5],將待比較的2個(gè)句子通過同一個(gè)編碼器映射到相同的向量空間中。這種利用孿生網(wǎng)絡(luò)共享參數(shù)的方法可以大幅度降低在線計(jì)算耗時(shí),但是沒有考慮問句編碼向量之間的交互關(guān)系,失去了語義焦點(diǎn),易發(fā)生語義漂移,難以衡量詞的上下文重要性,往往準(zhǔn)確率不佳。使用交互型網(wǎng)絡(luò)框架處理問句相似度任務(wù)的相關(guān)研究如ESIM(Enhanced Sequential Inference Model)[6]、BiMPM(Bilateral Multi-Perspective Matching)[7]和DIIN(Densely Interactive Inference Network)[8]等,首先將2個(gè)問句用神經(jīng)網(wǎng)絡(luò)編碼進(jìn)行語義表示,再通過一些復(fù)雜的注意力機(jī)制計(jì)算文本的詞序列之間的相似度構(gòu)造出交互矩陣,最后進(jìn)行交互信息的整合。這種方法利用注意力機(jī)制來捕捉2個(gè)問句編碼向量之間交互的信息,能對上下文重要性進(jìn)行更好的建模,更好地把握語義焦點(diǎn),但是忽略了句法、句間對照等全局信息。使用微調(diào)預(yù)訓(xùn)練語言模型的方法處理文本相似度任務(wù)也可以取得很好的效果,相關(guān)的研究如BERT(Bidirectional Encoder Representations from Transformers)[9]和XLNet(Transformer-XL Network)[10]等, 在大規(guī)模語料上訓(xùn)練好的語言模型放到特定領(lǐng)域的目標(biāo)數(shù)據(jù)集上微調(diào),這種方法效果顯著,但是模型參數(shù)龐大,在線上應(yīng)用時(shí)耗時(shí)較長。
本文基于Siamese網(wǎng)絡(luò)結(jié)構(gòu)提出了一種CNN和LSTM結(jié)合的RCNN問題相似度計(jì)算方法,利用雙向的LSTM網(wǎng)絡(luò)來提取問句的上下文信息;然后使用1D卷積神經(jīng)網(wǎng)絡(luò)將詞嵌入信息與上下文信息融合;接著用全局最大池化來提取問句的關(guān)鍵特征信息,得到問句的語義特征表示;最后通過余弦相似度計(jì)算兩問句的語義相似度。實(shí)驗(yàn)結(jié)果表明,本文提出的RCNN問句相似度計(jì)算方法相比于其他使用孿生網(wǎng)絡(luò)框架計(jì)算問句相似度的方法,性能有所提升。
本文采用孿生網(wǎng)絡(luò)框架來計(jì)算兩問句間的語義相似度,首先將兩問句以序列的形式輸入到網(wǎng)絡(luò)中,然后通過RCNN模型完成問句的語義編碼,最后利用余弦相似度來度量兩問句之間的語義相似度,網(wǎng)絡(luò)框架如圖1所示
Figure 1 Siamese network structure based on RCNN
輸入層對2個(gè)問句進(jìn)行預(yù)處理,包括詞元化、去除標(biāo)點(diǎn)、拼寫矯正、縮寫改寫和刪除停止詞。預(yù)處理后得到干凈的詞序列,然后將問句整理成相同的長度L,長度不足在句首補(bǔ)零,問句長的截?cái)唷?/p>
嵌入層將輸入文本在低維空間進(jìn)行向量化表示。即通過一個(gè)隱藏層,將One-hot編碼的詞投影到一個(gè)低維空間中,在指定維度中編碼語義特征。嵌入層將預(yù)處理后的詞序列在低維空間進(jìn)行向量化表示。即通過一個(gè)隱藏層,將one-hot編碼的詞向量投影到一個(gè)低維空間中,在指定維度中編碼語義特征。本文對比了谷歌開源的word2vec預(yù)訓(xùn)練的詞向量[11]、斯坦福開源的GloVe預(yù)訓(xùn)練的詞向量[12]和本文基于實(shí)驗(yàn)數(shù)據(jù)集訓(xùn)練的詞向量3種不同詞向量表示方式對實(shí)驗(yàn)效果的影響。實(shí)驗(yàn)結(jié)果表明,基于實(shí)驗(yàn)數(shù)據(jù)集訓(xùn)練的詞向量表示的實(shí)驗(yàn)效果更好。
本文使用的詞嵌入模型是word2vec,訓(xùn)練方法是Skip_gram,向量維度為300,窗口大小為5,采用負(fù)采樣優(yōu)化算法進(jìn)行加速訓(xùn)練。
循環(huán)神經(jīng)網(wǎng)絡(luò)是處理序列問題最常用、最有效的方法。通過隱藏層節(jié)點(diǎn)之間的相互連接,將前面的信息記憶應(yīng)用到當(dāng)前的輸出中,以實(shí)現(xiàn)捕捉上下文信息的目的。但是,訓(xùn)練過程中會(huì)出現(xiàn)梯度消失和梯度爆炸的問題,因此只能捕捉少量的上下文信息。LSTM網(wǎng)絡(luò)利用不同的函數(shù)處理隱藏層的狀態(tài),實(shí)現(xiàn)對重要信息的篩選,能很好地解決梯度問題,捕捉更多的上下文信息,是當(dāng)前文本處理的主流方法。
卷積神經(jīng)網(wǎng)絡(luò)通過固定大小的卷積核提取文本局部信息,用池化層減少數(shù)據(jù)處理量并保留關(guān)鍵的信息。因?yàn)榫矸e核是一個(gè)固定的窗口,所以同時(shí)可能會(huì)丟失一些重要的信息,雖然可以通過多個(gè)不同大小的窗口來彌補(bǔ)信息缺失,但是會(huì)增大計(jì)算量,并且不能捕捉上下文信息。
本文方法結(jié)合LSTM網(wǎng)絡(luò)能捕捉更多上下文信息和CNN網(wǎng)絡(luò)能保留關(guān)鍵信息的特點(diǎn),首先利用雙向LSTM網(wǎng)絡(luò)提取單詞的上下文信息;然后利用1D卷積神經(jīng)網(wǎng)絡(luò)將上下文信息與詞嵌入信息進(jìn)行信息融合;最后通過全局最大池化提取關(guān)鍵信息。具體實(shí)現(xiàn)過程如下所示:
(1)雙向LSTM網(wǎng)絡(luò)提取上下文信息。
通過嵌入層得到等長的問句序列S=(w1,w2,…,wL),其中,L為問句詞序列長度,wi,i∈[1,L]表示問句中第i個(gè)詞。
用cL(wi)表示詞wi左側(cè)的上下文信息,cR(wi)表示詞wi右側(cè)的上下文信息,cL(wi)的特征表示是通過前向單層的LSTM訓(xùn)練得到的,cR(wi)的特征表示是通過后向單層的LSTM訓(xùn)練得到的,如式(1)和式(2)所示:
cL(wi)=tanh(WL*cL(wi-1)+WSL*e(wi-1))
(1)
cR(wi)=tanh(WR*cR(wi-1)+WSR*e(wi+1))
(2)
其中,e(wi-1)表示單詞wi-1的詞嵌入,cL(wi-1)是單詞wi-1的左側(cè)上下文信息向量表示,WL是將上一個(gè)上下文信息向量轉(zhuǎn)化成下一個(gè)上下文信息向量的轉(zhuǎn)化矩陣,WSL是將當(dāng)前單詞向量與下一個(gè)單詞的左側(cè)上下文向量進(jìn)行結(jié)合的矩陣,cR(wi)的計(jì)算反之。實(shí)現(xiàn)過程如圖2所示。
Figure 2 Processing of bidirectional LSTM extracts context information
其中,通過雙向LSTM網(wǎng)絡(luò)提取上下文信息之后,將上下文信息與詞嵌入信息進(jìn)行拼接得到此時(shí)問句詞序列中第i個(gè)詞wi的語義表示為[cL(wi);e(wi);cR(wi)]。
(2) 1D卷積進(jìn)行信息融合。
接著利用1D卷積神經(jīng)網(wǎng)絡(luò)對拼接后的詞序列語義表示進(jìn)行信息融合,其計(jì)算過程如式(3)所示:
yi=CNN(xi),i∈[1,L]
(3)
其中,yi表示1D卷積處理后xi對應(yīng)的特征表示,具體處理過程如圖3所示。
Figure 3 1D convolution and global maximum pooling
圖3中,n為卷積核的個(gè)數(shù)。
(3)最大池化提取關(guān)鍵特征信息。
為提取問句中的關(guān)鍵特征信息,本文對比了平均池化與最大池化,實(shí)驗(yàn)結(jié)果表明最大池化效果更優(yōu)。池化層采用的是全局最大池化,即取每個(gè)序列特征在單個(gè)維度上的最大值,提取出關(guān)鍵特征信息,即得到整個(gè)句子的語義特征表示。具體計(jì)算過程如式(4)所示:
(4)
得到問句對的語義表示后,在問句的語義空間中計(jì)算2個(gè)向量的相似度,從而判斷2個(gè)文本是否語義相同。本文選取余弦相似度作為評價(jià)函數(shù),如式(5)所示:
(5)
其中,sL和sR是問句對的語義向量,n表示語義向量的維度。相似度的值域?yàn)閇0,1]。
本文選取Quora Question Pairs數(shù)據(jù)集[13]進(jìn)行驗(yàn)證與測試,數(shù)據(jù)來源于Quora網(wǎng)站,包含404 351個(gè)問句對,具有相同語義的2個(gè)問句的標(biāo)簽為1,反之為0。通過分析數(shù)據(jù)集可知,問句對中具有相同語義比例的有36.92%,單詞個(gè)數(shù)為68 469,98%的問句長度分布在50以下,所以本文取問句統(tǒng)一長度L=50。
評價(jià)指標(biāo)采用準(zhǔn)確率(Accuracy)和F1-score,F(xiàn)1-score的計(jì)算如式(6)所示:
(6)
其中,P表示精確度(Precision),R表示召回率(Recall)。
為了驗(yàn)證本文提出的問題相似度計(jì)算方法的有效性,分別與常見的幾種使用孿生網(wǎng)絡(luò)框架的方法進(jìn)行了對比實(shí)驗(yàn)。
(1)對比方法參數(shù)設(shè)置。
基于CLSTM網(wǎng)絡(luò)[14]的方法:卷積核大小分別設(shè)置為1,2,3,濾波器數(shù)量設(shè)置為256,每一個(gè)卷積層后接單層的LSTM網(wǎng)絡(luò),隱藏層節(jié)點(diǎn)個(gè)數(shù)設(shè)置為256,只保留最終的語義向量,將3個(gè)網(wǎng)絡(luò)的語義向量拼接,經(jīng)過全連接層,全連接節(jié)點(diǎn)數(shù)設(shè)置為256。
LSTM與CNN組合網(wǎng)絡(luò)[15]:CNN網(wǎng)絡(luò)卷積核大小設(shè)置為3,卷積核個(gè)數(shù)設(shè)置為256,采用全局最大池化;LSTM網(wǎng)絡(luò)隱節(jié)點(diǎn)個(gè)數(shù)設(shè)置為256,只保留最終的語義特征向量;然后將2個(gè)網(wǎng)絡(luò)的語義特征向量進(jìn)行拼接傳入全連接層,全連接層節(jié)點(diǎn)數(shù)設(shè)置為256。
(2)本文方法參數(shù)設(shè)置。
詞嵌入是基于實(shí)驗(yàn)數(shù)據(jù)集訓(xùn)練的300維向量表示,循環(huán)網(wǎng)絡(luò)采用單層LSTM,隱藏層節(jié)點(diǎn)數(shù)量設(shè)置為256,激活函數(shù)用tanh函數(shù);1D卷積神經(jīng)網(wǎng)絡(luò)的卷積核個(gè)數(shù)設(shè)置為128,激活函數(shù)為ReLU函數(shù)優(yōu)化算法選取Adam(Adaptive moment estimation)[16],學(xué)習(xí)率為0.01,損失函數(shù)用均方誤差MSE(Mean Squared Error),訓(xùn)練過程批處理參數(shù)設(shè)置為512,訓(xùn)練輪數(shù)設(shè)置為6。
將數(shù)據(jù)集按照8∶2比例分割成訓(xùn)練集與測試集,將訓(xùn)練集按照9∶1分出驗(yàn)證集。不同方法對比實(shí)驗(yàn)的結(jié)果如表1所示。
Table 1 Experimental results of different methods
從表1的序號(hào)1,2和3,4可以看出,使用多視角的CNN或LSTM方法比使用單一的CNN或LSTM方法的準(zhǔn)確率要高;從序號(hào)1,3可以看出,在本實(shí)驗(yàn)的數(shù)據(jù)集上采用LSTM網(wǎng)絡(luò)的方法表現(xiàn)能力更強(qiáng);從序號(hào)1,2,3,4,7可以看出,本文提出的RCNN問題相似度計(jì)算方法的準(zhǔn)確率是最高的,準(zhǔn)確率為83.57%。所以,使用CNN網(wǎng)絡(luò)和LSTM網(wǎng)絡(luò)結(jié)合的方法可以提取更多的文本語義特征信息,對文本的表示能力更強(qiáng)。
另外,本文對比了CNN網(wǎng)絡(luò)與LSTM網(wǎng)絡(luò)不同的結(jié)合方式對實(shí)驗(yàn)效果的影響,分別使用串聯(lián)和并聯(lián)的結(jié)合方式進(jìn)行了實(shí)驗(yàn)對比。從序號(hào)5,6,7可以看出,本文采用的先使用雙向LSTM提取上下文信息并與詞嵌入信息結(jié)合,然后使用1D卷積進(jìn)行信息融合的方式相較于串聯(lián)和并聯(lián)的結(jié)合方式具有更好的實(shí)驗(yàn)效果。同時(shí),在實(shí)驗(yàn)中發(fā)現(xiàn)1D卷積進(jìn)行特征信息融合還起到了降維的作用,使得本文提出的方法在使用時(shí)具有更好的實(shí)時(shí)性。
本文基于Siamese網(wǎng)絡(luò)框架,提出了一種基于RCNN的問題相似度計(jì)算方法,首先利用雙向的LSTM網(wǎng)絡(luò)提取問句的上下文信息;然后使用1D卷積將上下文信息和詞嵌入信息進(jìn)行融合;接著采用全局最大池化提取問句的關(guān)鍵信息,完成問句的語義特征表示;最后通過余弦相似度計(jì)算兩問句在語義空間上的相似度。相比于其他使用Siamese網(wǎng)絡(luò)框架的文本相似度計(jì)算方法在Quora Question Pairs數(shù)據(jù)集的表現(xiàn),本文提出的方法具有較高的準(zhǔn)確率和F1-score。