梁登玉,劉大明
(上海電力大學計算機科學與技術學院,上海 200090)
傳統的文本匹配方法主要從詞匯層面衡量2 個文本的匹配程度,即2 個文本中出現相同詞的個數越多,詞序列的排序越接近,則相似度越高,典型的方法有TF-IDF、BM25 等。由于詞與詞之間相互獨立,沒有考慮上下文語境,因此這種基于詞匯重合度的匹配方法有很大的局限性,例如“蘋果”在不同語境下有不同的意義,可能表示水果,也可能表示公司。近年來,文本匹配的深度學習方法取得了一定進展[1-3],使用深度學習方法的文本匹配模型首先對輸入文本進行分詞,然后使用詞嵌入技術將分好的詞轉化為詞向量,將待比較的2 個句子向量通過同一個深度神經網絡編碼器映射到相同的向量空間中,最后使用分類技術計算2 個句子的匹配程度。通過詞嵌入技術訓練詞向量的常用方法是Word2Vec[4]和Glove[5],其本質是基于共現信息訓練詞向量,這種詞向量表示增強了詞的上下文信息表示,但沒有解決句子語義表示問題,因此需要將詞向量輸入到深度神經網絡,即編碼器中,獲取句子級的上下文語義信息。例如,Text-CNN[6]使用卷積神經網絡編碼每個句子,基于雙向的長短期記憶網絡(Bi-directional Long Short Term Memory,BiLSTM)的文本匹配模型[7]使用雙向長短期記憶神經網絡實現對句子的編碼表征。單純的句子編碼方法將每個句子編碼成一個固定長度的向量,然后直接計算句子的相似度,模型設計簡單、易于應用推廣。但研究發現,通過增強句子間的交互能夠提高文本匹配效果。句子對交互方法將單詞對齊和句子對之間的交互考慮在內,并且通常在域內數據上訓練時表現得更好。BiMPM[8]是一種雙邊多視角匹配模型,通過使用BiLSTM 神經網絡對每個句子進行編碼,從多角度匹配2 個句子。ESIM 模型[9]采用2 個BiLSTM神經網絡分別對句子進行編碼以及融合2 個句子間的詞對齊信息。ESIM 模型在各匹配任務上取得了較好的效果。
然而,以上幾乎所有模型最初都是為英文文本匹配提出的。如果將其應用于中文文本匹配,通常有兩種方法,一種是以漢字作為模型的輸入,另一種是先把每個句子分割成單詞,然后把這些單詞作為輸入。雖然基于字符的模型可以克服數據在一定程度上的稀疏[10]問題,但這些模型也存在一些缺點,比如沒有充分利用詞匯的語義信息,而這些信息可能對文本語義匹配有用。然而,基于詞的模型經常遭受一些由詞分割引起的潛在問題。例如,字符序列“南京市長江大橋”因為分詞不同而產生2 個不同意思,第1 個“南京市長江大橋”指的是一座橋,另一個“南京市長江大橋”指的是一個人。這句話的模糊性可以通過使用更多的上下文信息來消除。此外,不同工具的細分粒度也不同。比如“長江大橋”可以分為“長江”和“大橋”2 個詞。鑒于這種情況,文獻[11]使用詞格長短期記憶網絡(Lattice LSTM)來表示一個句子,能夠在沒有分詞的情況下利用單詞信息獲取多粒度的句子表示。Lattice LSTM 模型將輸入的字符和所有能在詞典匹配的單詞一起編碼輸入到模型中,在詞典中選出與字符最相關的單詞,降低歧義發生的概率,同時考慮了字符和詞2 種粒度的輸入,該模型在多個NLP 任務中取得了顯著提升效果。尤其是命名實體識別任務中,基于Lattice LSTM 的模型[12]編碼了一系列輸入字符以及所有匹配詞典的潛在單詞,以獲得更好的NER 結果。文獻[13-15]分別展示了Lattice LSTM 模型在命名實體識別領域的應用。在神經機器翻譯領域,文獻[16]提出一種基于詞格的遞歸神經網絡編碼器以壓縮編碼多個標記詞格作為輸入,不僅減輕了最佳標記方式標記錯誤的負面影響,而且具有更強的表達性和嵌入輸入句子的靈活性。文獻[17]使用Lattice LSTM 模型獲取多粒度信息用于中文分詞任務,文獻[18]使用Lattice LSTM 模型融合外部知識,用于中文關系提取任務中。
受到Lattice 結構在自然語言處理領域獲得成功的啟發,在文本匹配任務中,文獻[19]引入Lattice 結構,提出Lattice-CNN 模型,利用基于Lattcie 結構的CNN 神經網絡在詞格上提取句子級特征。該模型不依賴于字符或單詞級序列,而是將單詞格作為輸入,其中每個可能的單詞和字符都將得到平等對待,并擁有自己的上下文信息,以便它們可以在每一層進行交互。對于每一層中的每個詞,可以通過池方法以不同的粒度捕獲不同的上下文詞。雖然Lattice-CNN 模型利用了詞格,但它只關注了局部信息,缺乏全局的句子語義信息表示及句子之間的交互信息。文獻[20]提出一種用于中文短文本匹配的神經圖匹配方法,該方法以一對詞格圖作為輸入,根據圖匹配注意機制更新節點的表示。這種方法既處理了多粒度信息,又關注句子間的交互信息,該模型優于之前的模型效果。文獻[19]和文獻[20]證明了多粒度信息對文本匹配的重要性。
由于漢語詞匯的多義性給語義理解帶來了很大困難,因此短文本中的一詞多義帶來的問題比長文本中的一詞多義問題更嚴重。在通常情況下,短文本的上下文信息較少,因此模型極難捕獲正確的語義信息。例如“落后”,有落后和不如的意思,這2 個句子“她的成績落后于他”和“她的成績不如他”應該是相似的,但如果不對“落后”這個詞的多義性進行解釋,模型將很難判定這2 個句子是相似的。
本文提出一種融合多粒度信息和外部知識的短文本匹配模型,使用Lattice LSTM 模型融合字符和單詞級別的多粒度信息,降低因為分詞錯誤導致的誤差傳播。引入知網HowNet[21]作為外部知識庫,解決單詞的多義性帶來的語義干擾問題,并將HowNet 與Lattice LSTM 相結合,豐富Lattice LSTM 詞語級粒度的語義表示。此外,使用軟注意力機制獲取句子間的交互信息,利用BiLSTM 融合2 個句子的上下文信息,并通過最大池化和均值池化進一步提取特征信息,獲取句子級語義表示,經過拼接之后輸入預測層,使用softmax分類函數計算2 個句子相似的概率。
圖1 所示為本文模型的框架。其中,輸入層輸入2 個句子A和Q,使用Word2Vec 將原始字符序列轉化為嵌入表示;融合外部知識的Lattice LSTM 層對字符,單詞序列以及使用HowNet 釋義后的詞匯信息進行編碼表示;模型使用軟注意力機制捕獲句子間的交互信息;BiLSTM 層用于綜合全局上下文語義信息;池化層用于使用最大池化和均值池化進一步提取特征信息,獲取句子級向量表示,并進行拼接;預測層使用前饋神經網絡和softmax 分類函數計算2 個文本的相似度概率輸出。

圖1 本文模型框架Fig.1 Framework of the model in this paper
本文并未使用基于Bert 等有更強語義能力的預訓練語言模型來設計模型,主要考慮到以下幾點:
1)在詞向量表示方面,本文使用了Word2Vec 來訓練詞向量,因為Bert 等預訓練語言模型雖然具有更好的語義表示能力,但模型參數多,加載速度慢,內存、時間等消耗較大,而Word2Vec 簡單高效,特別適合從大規模、超大規模的語料中獲取高精度的詞向量表示。
2)在與詞格和外部知識結合方面,本文使用Lattice LSTM 模型。因為類似于Bert 這樣的大型預訓練語言模型通常采用一系列細粒度單元(漢字)作為輸入,并且是按位置排序的序列,這使得利用單詞格和保留位置關系變得困難。同時,傳統的掩蔽語言模型(Masked Language Model,MLM)可能會使基于單詞格的預訓練語言模型學習到錯誤的語義表示。原因是這樣的詞格可能會引入冗余,即一個字符可以包含在多個文本單元中。在掩蔽語言模型中,模型可能引用與隨機屏蔽的文本單元重疊的其他文本單元,而不是真實的上下文,導致信息泄漏。而Lattice LSTM 模型結構相對簡單,且不會造成信息泄露。
因此,綜合考慮到實驗效果、內存消耗等原因,本文沒有使用基于Bert 等有更強語義能力的預訓練語言模型。
本文模型的輸入為基于字符的2 個句子,輸入層采用訓練好的Word2Vec 模型將每個字符轉換為低維實數向量,這個過程通過查找字符嵌入矩陣,即可對字符進行編碼。
雖然模型將字符序列作為直接輸入,但為了充分捕捉單詞級特征,還需要輸入句子中所有潛在單詞的信息。一個潛在的單詞是任何字符子序列,它與詞典D中的一個單詞相匹配,詞典D建立在分割的大原始文本之上。1.2.1 節將介紹如何使用Lattice LSTM 融合字符和單詞兩個粒度的信息。
為更好地理解Lattice LSTM 模型的結構,首先給出每個LSTM 單元的計算公式,如式(1)所示:

其中:ft表示遺忘門 限;it表示輸入門 限表示t時刻細胞狀態的候選值;ct表示cell 狀態(這里是循環發生的地方);ct-1表示t?1 時刻的細胞狀態,ot表示輸出門限;ht表示當前單元的輸出;ht-1表示前一時刻單元的輸出;xt表示當前時刻記憶單元的輸入;tanh 為雙曲正切函數;帶角標的W和B為模型參數;σ 為sigmoid 激活函數。
1.2.1 Lattice LSTM 模型
Lattice LSTM 模型的結構如圖2 所示。

圖2 Lattice LSTM 模型的結構Fig.2 Structure of Lattice LSTM model

最終隱藏層的計算公式如式(9)所示:

1.2.2 融合外部知識的Lattice LSTM 編碼器
雖然基于Lattice LSTM 的編碼器可以利用字符和單詞信息,但不能充分考慮中文的歧義性。例如圖2 中,單詞“落后”有“落后”和“不如”2 種含義,但在基本的Lattice LSTM 編碼器中只有一種表示。因此,通過引入外部知識改進Lattice LSTM 模型,可以構建一個更全面的詞匯。


最終隱藏層的計算公式與式(9)相似。
通過計算得到隱藏層的所有輸出向量(h1,h2,…,hl),其中l為句子長度,即字向量的個數。

其中:lm和ln分別為2 個句子的長度。
在Attention 層比較2 個句子的軟注意力權重,也就是對于句子Sm和Sn序列,分別計算Sm相對于Sn以及Sn相對于Sm的注意力權重,從而得到2 個不同的權重分布,通過這種方式捕獲2 個句子之間的交互信息,計算公式如式(16)所示:

BiLSTM 層用于將2 個匹配向量序列聚合成固定長度的匹配向量。由于單向LSTM 接收某個序列輸入的信息,其網絡中單個單元僅參考了該序列的上文信息,而沒有考慮下文信息。為了彌補這一缺點,充分利用上下文信息,采用BiLSTM 網絡。BiLSTM 的網絡輸出層能夠完整地捕獲輸入序列中每一個點關于過去和未來的上下文信息。
根據LSTM 網絡的結構,每個LSTM 單元根據式(1)進行計算。
使用BiLSTM 神經網絡結構,對來自注意力層的輸出進一步編碼,如式(17)所示:

在池化層中,本文使用最大池化和均值池化進一步捕捉文本的特征信息,計算公式如式(18)所示:

最后將2個向量拼接得到輸出向量,如式(19)所示:

預測層用于評估概率分布p(y|Sm,Sn),衡量2 個句子的相似度。將上一層的輸出向量oout輸入到一個具有2 層結構的前饋神經網絡中,使用softmax激活函數計算2 個文本的相似度概率值,計算公式如式(20)所示:

其中:F(·)代表1 個具有兩層的前饋神經網絡和1 個softmax 激活后輸出層。
最后,使用交叉熵Cross-Entropy 函數作為損失函數,表達式如式(21)所示:

其中:p為預測概率值;y為真實值。
本文在LCQMC 和BQ 中文數據集上進行實驗。LCQMC 是一個用于問題匹配的大規模開放領域語料庫,該數據集中的樣本包含一對句子和一個二進制標簽,該標簽指示這2 個句子是否具有相同的含義或具有相同的意圖,若具有相同的含義或意圖,則標簽為1,反之標簽為0。LCQMC 數據集包含238 766 條訓練集,8 802 條驗證集,12 500 條測試集。LCQMC 數據集示例如表1 所示。

表1 LCQMC 數據集示例Table1 Example of LCQMC dataset
BQ 數據集是一個針對特定領域的大規模銀行問題匹配語料庫,由120 000 個中文句子對組成,包括100 000個訓練樣本、10 000個開發樣本和10 000個測試樣本。每一對還與一個二進制標簽相關聯,該標簽指示兩個句子是否具有相同的含義。
本文的詞典詞匯來自數據集LCQMC 和BQ,對數據集進行清洗處理并去除停用詞之后,使用Jieba分詞工具進行分詞,同時使用知網HowNet 和百度百科詞匯信息加入較新穎的詞匯,例如“去哪兒網”、“余額寶”、“悅詩風吟”等,這些詞即使使用Jieba 分詞工具也不能得到準確分詞。最后,使用Word2vec進行詞匯訓練,獲得詞向量。
本文分別采用準確率(Accuracy,Acc)和F1 值作為測評指標,計算公式如式(22)所示:


其中:TTP為真正例;TTN真負例;FFP為假正例;FFN為假負例。
本文實驗采用型號為RTX 2080S 的GPU 服務器,在Python3.6 和Pytorch1.5 的環境下運行。由于本文采用了基于改進的Lattice LSTM 模型,因此需要設定各個部分的參數。對于字符嵌入和詞格嵌入,嵌入尺寸分別設置為100 維和200 維,2 個LSTM隱藏層的大小設置為200 維,dropout 設置為0.5,學習率設置為0.001。在訓練模型時,損失函數使用交叉熵損失函數,使用Adam 優化器更新參數。使用訓練集訓練模型,并使用測試集評估模型效果。模型參數設定如表2 所示。

表2 模型參數Table 2 Model parameter
本文設計了3 組實驗,分別是不同模型的對比實驗、探究Jieba 分詞和Lattice 詞格對實驗結果的影響實驗、消融實驗。
2.4.1 不同模型的對比實驗
將BiMPM[8]、ESIM[9]、Lattice-CNN[19]與本文模型進行對比,實驗結果如表3 和表4 所示。由表3 和表4 可知,本文模型在2 個數據集上的準確率和F1值均高于其他3 個模型。雖然ESIM 模型綜合BiLSTM 模型和注意力機制,BiMPM 模型利用了更多角度的信息,從多個視角提取句子的特征,但可能因為分詞錯誤影響了模型效果。而Lattice-CNN 模型則因為缺乏全局的句子語義表示和多角度的交互信息,而導致效果更差。

表3 不同模型在數據集LCQMC 下的對比實驗結果Table 3 Comparative experimental results of different models under LCQMC dataset %

表4 不同模型在數據集BQ 下的對比實驗結果Table 4 Comparative experimental results of different models under BQ dataset %
2.4.2 Jieba 分詞和Lattice 詞格對實驗結果的影響
使用Jieba 分詞容易出現錯誤,Jieba 分詞和Lattice 詞格對句子相似性的預測效果如表5 所示。其中,標簽為1 代表兩個句子語義相似,標簽為0 代表兩個句子語義不相似。從表5 可以看出,分詞對句子語義的影響比較大,例如“去哪兒”、“去哪兒網”和“去哪兒網”,“余額寶”和“余額寶”,它們只有被正確分詞,才能提供正確的詞向量信息。綜上所述,分詞的正確與否,對文本語義影響很大,本文融合了Lattice 結構的文本匹配模型,可以獲得比ESIM和BIMPM 模型更好的性能。

表5 Jieba 分詞和Lattice 詞格對句子相似性的預測效果Table 5 Prediction results of sentence similarity based on Jieba and Lattice segmentation
2.4.3 消融實驗
對本文模型的不同方面進行消融研究,評估不同的池化策略(均值、最大值)、注意力層和融合外部知識對實驗結果的影響。實驗結果如表6所示。
由表6 可知,使用均值池化和最大池化對模型的影響相對較小,使用均值池化比使用最大池化的準確率高0.14 個百分點,因此本文綜合使用了最大池化和均值池化策略。在對注意力機制的消融研究發現,有無注意力層對模型的性能影響很大,因為注意力層提供了2 個句子的交互信息,對計算2 個句子的相似度影響很大。由表6 還可知,從HowNet 上引入外部知識豐富詞匯的語義信息,可以提升模型性能??梢钥隙ǖ氖?,一旦數據集中的句子包含更多具有多義性的詞匯,例如“水分”,具有“水汽”和“夸耀”的意思,“落后”除了有落在后面的意思,還具有“不如”的意思,引入外部知識對模型的提升效果更加明顯。

表6 在LCQMC 數據集下的消融實驗結果Table 6 Result of the ablation experiment under LCQMC dataset %
本文提出融合多粒度信息和外部知識的短文本匹配模型,使用由多個分詞假設形成的成對單詞格和外部詞匯知識作為模型輸入,并結合軟注意力機制獲取2 個句子的交互信息。借鑒BiMPM 模型和ESIM 模型的交互機制,充分融合Lattice-CNN 模型的優點,同時引入外部知識獲取更豐富的詞匯表示信息。在短文本問題匹配數據集LCQMC 和BQ 上的實驗結果表明,本文模型能有效提升文本匹配的準確率。后續將考慮使用Bert 等具有更強語義的預訓練模型與詞格結構構建文本匹配模型,在提升模型語義表示能力的同時,進一步降低模型復雜度。