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