李奕霖,周艷平
(青島科技大學 信息科學技術學院,青島 266061)
計算文本語義相似度是在考慮自然語言表達的可變性和模糊性的同時,確定句子在語義上是否等價,它是自然語言處理領域的一個挑戰性問題,也是智能問答[1,2]、信息檢索[3]、文檔聚類[4]、機器翻譯[5]、簡答評分[6]等任務的重要組成部分.
傳統的機器學習模型進行相似度計算時,可以解決在詞匯層面上文本之間的匹配,但忽略了前后單詞之間所具有的語義關聯以及文本蘊含的語法信息.例如,基于詞袋模型[7]的TF-IDF,把句子作為一個長向量,以詞為單位分開,每一維代表一個詞,對應的權重代表這個詞在文本中的重要程度.但這種方法只能反應字面上的重要程度,詞之間各自獨立,無法反映序列信息和語義信息; Hofmann[8]提出的PLSA 模型引入了主題層,采用期望最大化算法訓練主題,在訓練到不同主題的情況下,避免了同義詞和多義詞對相似度的影響,在一定程度上考慮到了語義問題.
基于深度學習模型的文本相似度計算方法進一步關注到了文本語義層.CNN 和RNN 通過對文本信息進行深層卷積,使模型可以關注到文本的整體信息,相比傳統機器學習模型對文本的語義建模能力更強.
近年來,Transformer 模型[9]因強大的語義建模能力被廣泛應用于NLP 領域,其全局自注意力機制的運用使模型對文本特征的提取更加準確.Google 提出的BERT (bidirectional encoder representations from Transformer)模型[10]在只保留encoder 部分的前提下使用雙向Transformer,這種模型對語境的理解比單向的語言模型更深刻.BERT 模型中每個隱藏層都對應著不同抽象層次的特征,用來提取多維度特征,獨特的相對位置編碼方法使得建模能力更強,可以更準確地把握文本真實語義.
2020年,蘇劍林[11]在BRET 模型的基礎上開源了以詞為單位的中文 WoBERT 模型,基于詞提取文本句向量,相比字義能更好地對文本語義進行整體表達,但是單純的以詞為單位存在一定的稀疏性,會存在有未登錄詞出現的現象,對于未登錄詞能否做到正確的語義理解具有不確定性.Reimers 等基于孿生網絡(Siamese network)和BERT 模型提出了SBERT 模型[12],沿用了孿生網絡的結構,將不同的英文文本輸入到兩個BERT 模型中,這兩個BERT 模型參數共享,獲取到每個句子的表征向量,之后再做分類目標和回歸目標.SBERT 在文本語義相似度匹配任務上明顯優于BERT模型.雖然SBERT 提高了運算效率,但在本質上還是基于表示的BERT 方法,即通過基于字的方法來提取句子表征向量,而且句子的特征交互只在網絡頂層進行,將其運用到語義復雜度高的中文文本中仍會出現語義理解不充分的問題.
本文針對中文文本相似度匹配任務,提出了一種基于孿生網絡和字詞向量結合的文本相似度匹配方法.本文整體框架采用孿生網絡模型,對匹配的兩段文本采用同樣的編碼器和預訓練模型.首先通過BERT 和WoBERT 模型分別獲取字級和詞級的句向量,在字詞向量表示層采用向量并聯的方式得到融合特征向量,BERT+WoBERT 的句向量表征方法改變了僅基于BERT 的表示方法,通過聯合WoBERT 模型基于詞的句向量表征方法,讓句子轉換為具有充分語義信息的高維向量; 其次,將得到的特征向量送入特征信息整合層,得到復雜但富含充分語義信息的文本向量.針對孿生網絡整合過程出現的維度過高的問題,使用PCA 算法壓縮數據空間,將高維數據的特征映射到低維空間,實現對特征向量的降維降噪.通過這種計算方法使模型更有效的關注到文本的深層語義特征,解決了中文數據集中出現的字詞模糊性和差異性問題,提高了文本相似度匹配的準確率.
Google 提出的BERT 是一個預訓練的語言表征模型,將文本中無法直接計算的字轉變為可計算的向量形式,這些向量能夠更好地反映出字在句子中的含義.
BERT 模型使用兩個無監督預訓練任務.
(1)遮蔽語言模型: 隨機選擇句子15%的詞用于預測,其中80%的詞用[MASK]替換,10%的被隨機換掉,剩下的10%保持不變.
(2)下一句預測: 判斷兩句話是否為前后句關系,選擇訓練集里的句子 A 和 B 時,句子B 有 50% 幾率是 A 的下一句,50%是隨機選擇的句子.
BERT 模型的編碼層通過聯合調節所有層中的雙向Transformer 來訓練,使模型能夠充分提取輸入文本的語義信息.圖1 為BERT 模型的結構圖,Trm 為Transformer 編碼器,E1,E2,…,En為模型的輸入向量,T1,T2,…,Tn為輸出向量,經過計算得到句子seq_A的特征向量表示f(seq_A).

圖1 BERT 模型結構圖
BERT 模型只使用了Transformer 架構中的encoder模塊,棄用了decoder 模塊.其中,encoder 模塊的多頭自注意力機制可以從多個維度準確提取文本語義特征,其主要運算過程如下: 首先進行自注意力的計算,將輸入向量E1,E2,…,En與給定的權重矩陣WQ、WK、WV相乘得到向量Q、K、V.Q表示與這個單詞相匹配單詞的屬性,K表示這個單詞本身的屬性,V表示這個單詞所包含的信息本身.
通過attention 計算得到自注意力值:

其中,dk為向量K的維度.將Q、K、V通過線性映射的方式分為n份,對每一份分別進行自注意力的計算,最后通過并聯的方式將n個自注意力模塊結合起來,然后通過左乘權重矩陣的線性映射方法得到最終輸出,完成整個多頭注意力模塊的計算,計算如下:

其中,

WoBERT 是以詞為單位的中文預訓練模型,讓序列變短,處理速度變快,語義更明確.
WoBERT 模型相對BERT 模型做出了如下改進:
(1)加入前分詞操作,進行中文分詞.
(2)使用動態的Mask 操作,將訓練數據重復10次,使得每輪訓練的Mask 的位置不同.
(3)學習任務只有遮蔽語言模型,取消了下一句預測任務.
(4)batch size 從256 擴大為8k.
(5)刪除了BERT 模型自帶詞匯表的中文冗余部分,比如帶##的中文字詞,將結巴分詞自帶的詞匯表中詞頻最高的兩萬個加入詞匯表,減少了未登錄詞的出現概率,最終詞匯表規模為33 586.
孿生網絡定義兩個網絡結構分別表征對應的輸入內容,分為孿生網絡和偽孿生網絡.孿生網絡中的兩個網絡結構相同且共享參數,當兩個句子來自同一領域且在結構上有很大的相似度時可選擇孿生網絡; 偽孿生網絡可以是不同結構的網絡或不共享參數的同結構網絡,計算兩個不同領域的句子相似度時可以選擇偽孿生網絡.本文研究兩個文本的相似度,采用兩個網絡結構相同且共享參數的孿生網絡模型.其模型基礎結構如圖2 所示,孿生網絡結構簡單,訓練穩定,以兩個樣本input1 和input2 為輸入,其兩個子網絡各自接收一個輸入,子網共享權重使得訓練需要更少的參數,這意味著需要更少的數據并且不容易過擬合.

圖2 孿生網絡基礎結構
本文提出的基于孿生網絡和字詞向量結合的文本相似度匹配模型結構如圖3 所示,主要分為4 層: 輸入層、字詞向量表示層、特征信息整合層、輸出層.

圖3 本文模型結構圖
BERT 模型的輸入是將字向量(tokening embeddings)、文本向量(segment embeddings)和位置向量(position embeddings)拼接得到Eci作為模型輸入.如圖4 所示.

圖4 BERT 模型輸入層
由于以字為單位的建模方法在處理中文數據集時存在語義確定性不高的問題,模型往往難以對文本中重復出現的字準確提取真實語義特征.本文引入WoBERT模型,輸入向量用Ewj表示,此模型與BERT 模型建模形式不同的地方在于tokenize 為了分出中文單詞在BERT模型的tokenize 中加入了一個前分詞操作.WoBERT模型的tokenize 方法流程如圖5 所示.

圖5 WoBERT 模型的tokenize 流程圖
對“從青島北站怎么去棧橋”這句話,token embeddings 通過詞匯表使用WordPiece 嵌入,用Etoken表示;字的位置向量用Eposition表示; 由于模型中只有一個輸入句子,所以每一個字所處的某個句子信息是一樣的Esegment.輸入向量的計算公式如下:

經過WoBERT 的tokenize 方法處理之后為[‘[CLS]’,‘從’,‘青島’,‘北站’,‘怎么’,‘去’,‘棧橋’,‘[SEP]’].
使用孿生網絡訓練時的輸入形式為:
[CLS]seq_A[SEP] [CLS]seq_B[SEP]
由于模型運行過程中,內存占用率與輸入模型句子長度l成平方增長,但batch 增加只略微影響到訓練時間,采用孿生網絡的訓練方式可以縮短模型的訓練時間.
采用BERT 和WoBERT 模型分別獲取句子的字向量和詞向量表示,最終得到一個句子的兩種表達方式.
具體步驟如下:
(1)通過BERT 模型在LCQMC 數據集上訓練得到對應文本x的句向量表達.每個句子得到一個二維矩陣chari,行數為文本中字的個數Ci,列數為768 維.
(2)通過WoEBRT 模型在LCQMC 數據集上訓練得到對應文本x的句向量表達.每個句子得到一個二維矩陣wordj,行數為文本中詞的個數Wj,列數為768 維.
(3)對得到的Ci×768 和Wj×768 維度的文本向量分別進行歸一化,對所有特征向量按行取平均作為最終向量f(x)、g(x),維度均為1×768.
(4)對得到的基于字詞級別的文本向量f(x)、g(x)進行并聯操作,得到基于字詞向量結合的文本向量s(x):

降低向量維數會損失原始數據中具有可變性的一些特征向量,但也會帶來一些積極作用,例如減少計算時間、避免過擬合、去除噪聲等.PCA 算法(principal component analysis)是流行的線性降維算法之一,它將一組相關變量(P)轉換為較小的K(K<P)個特征子空間,同時盡可能多地保留原始文本的主要特征.
Su 等人[13]提出,在處理相似度匹配任務時,對BERT模型進行降維操作可以有效去除數據噪聲,提高模型準確率的同時降低計算復雜度.BERT 模型輸出維度為768,在特征信息整合層,并聯組合會使輸出的向量維度達到上千維,冗余信息多且占用內存大.本文用PCA算法對字詞向量結合后的輸出向量進行降維處理:
(1)對輸入的特征向量進行歸一化.
(2)計算輸入樣本特征向量的協方差矩陣.
(3)計算協方差矩陣的特征值和特征向量.
(4)選取協方差矩陣前K列作為降維矩陣.
(5)降維矩陣映射到低維空間完成降維計算.
本文將融合后的向量S(seq_A)、S(seq_B)維度降為384 維,得到兩個輸入句子的特征向量u和v.去除文本噪聲的同時降低模型的整體建模難度,提高了模型的靈活性和準確率.
本文探索了不同的特征整合方式對實驗結果的影響,采用通過字詞向量結合并進行向量降維后得到向量u、v、兩個向量差的絕對值|u-v|和兩個向量乘積的絕對值|u×v|做并聯的整合策略作為最終實驗方案.

Softmax 函數在進行二分類任務時使用二項分布的計算方法,相對于Sigmoid 函數的單一建模方法,它可以對兩個類別進行建模,得到兩個相加為1 的概率預測結果.
本文通過Softmax 函數對輸出的文本向量進行訓練,損失函數采用交叉熵損失.最終輸出結果為0 和1,0 表示進行匹配的兩段文本不相似,1 表示相似.
本文使用的數據集LCQMC 是一個大規模的中文問答數據集,側重于語義匹配而不是簡單的復述,要求模型能夠深度挖掘文本的高層語義信息.語料庫由兩個問題和一個標簽組成,標簽是0 和1 兩種形式,0 表示不相似,1 表示相似.數據集共有260 068 對句子對,其中訓練集238 766,驗證集8 802,測試集12 500.部分數據集樣例如表1 所示.

表1 部分數據集樣例
為驗證本文方法的效果,采用準確率、召回率、精確率、F1 值的評價指標來驗證算法的有效性.
(1)準確率(accuracy),表示預測結果預測正確的比率.

(2)召回率(recall),衡量檢索文本相似度的查全率.

(3)精確率(precision),衡量檢索文本相似度的查準率.

(4)F1 值,對精確率和召回率的整體評價.F1 值越大,說明精確率和召回率更均衡.

本文實驗環境如表2.

表2 實驗環境配置信息
選用BERT 預訓練模型為BERT-Base-Chinese,最大序列長度為128,訓練批次為8,學習率為2E-5,共訓練5 輪.選用WoBERT 預訓練模型為蘇劍林等[11]以RoBERTa-wwm-ext 模型為基礎訓練得到的WoBERT模型,最大序列長度為128,訓練批次為16,學習率為5E-6.
訓練Softmax 分類器時,選用交叉熵損失函數,訓練批次為100,訓練輪數為1 000,學習率為0.01.
在LCQMC 數據集上進行了如下4 組對比實驗:
(1)將字詞向量結合生成句向量的文本相似度計算方法,與單一字向量和單一詞向量生成句向量的方法進行了性能比較.
(2)使用PCA 算法對特征向量降至不同維度對模型性能的影響.
(3)不同的特征向量融合方式對模型性能的影響.
(4)將本文模型與已發表的方法進行性能比較.
在文本句向量表達模塊中,使用如下3 種方法提取文本句向量:
(1)使用BERT 得到基于字級別的句向量表示.
(2)使用WoBERT 得到基于詞級別的句向量表示.
(3)使用BERT+WoBERT 得到基于字詞向量結合的句向量表示.
在分別得到兩個句向量表示之后,通過并聯操作進行特征向量融合然后輸入Softmax 分類器進行實驗驗證,實驗結果如表3 所示.

表3 字詞向量結合方法(%)
由表3 可見,盡管字詞向量結合的文本句向量提取方法在召回率上稍低,但在準確率、精確率和F1 值上較BERT 和WoBERT 模型都有所提升,證明了字詞向量結合方法的語義表征能力.
為了對BERT 及WoBERT 模型進行評估,繪制了兩種模型在數據集上訓練過程中的loss 變化以及驗證集的準確率曲線,如圖6-圖8.從圖中可見,BERT 模型相對WoBERT收斂更快,雖然兩個模型單次訓練時輸入網絡的數據量不同,但WoBERT 模型最終loss 值更低,且在驗證集上的最高準確率值優于BERT 模型.

圖6 LCQMC 數據集上BERT 模型訓練的loss 曲線

圖7 LCQMC 數據集上WoBERT 模型訓練的loss 曲線

圖8 LCQMC 數據集上驗證的 accuracy 值變化圖
孿生網絡在進行相似度計算時,將兩段文本分為兩個batch 分別提取句向量,需要對兩段特征向量進行融合.本文對不同特征融合方法進行了對比實驗,經過BERT+WoBERT 字詞向量結合方法得到的兩個輸入文本的特征向量u、v,采用如下多種方式進行實驗:
(1)向量相加:

(2)向量相乘:

(3)向量并聯:

(4)向量并聯組合1:

(5)向量并聯組合2:

本文針對不同向量融合方式進行了5 組實驗,由表4 可見,u+v的融合方式較(u,v)方法準確率提高了0.28%,而u×v融合方式的實驗效果不佳.當采用(u,v,|u-v|,|u×v|)的融合方式時,準確率和F1 值分別達到了88.86%和88.42%,有著不錯的匹配效果.

表4 不同向量融合方式實驗結果(%)
為證明采用PCA 算法進行適當降維操作可以有效去除數據噪聲,提高模型的識別準確率且加快訓練速度,本文以BERT 模型作為baseline 在LCQMC 數據集上進行了對比實驗,指定PCA 的n_components 參數也就是主成分分別為整數384、256 和100,求得對應的貢獻率,實驗如下:
由表5 可見,將BERT 輸出的768 維向量降至384 維使得輸入Softmax 的向量維度由1 536 降至原來一半,模型識別準確率達到最高.再降至256 維會損失一些特征值,導致準確率降低.說明在輸入分類器的向量維度較高時,使用PCA 算法降維降噪的有效性.

表5 不同向量維度的對比實驗(%)
將本文方法在LCQMC 數據集上與已發表的方法在準確率、精確率、召回率和F1 值上做了對比實驗,實驗結果如表6 所示.

表6 不同方法的測試結果(%)
本文的對比模型如下.
(1)BiLSTM-char: 以字向量作為輸入的雙向LSTM文本相似度匹配模型.
(2)BiLSTM-word: 以詞向量作為輸入的雙向LSTM文本相似度匹配模型.
(3)BiMPM-char: 以字向量作為輸入,基于 BiLSTM的雙邊多角度文本相似度匹配模型.
(4)BiMPM-word: 以詞向量作為輸入,基于 BiLSTM的雙邊多角度文本相似度匹配模型.
(5)MSEM: 結合文本編碼模型和近似最近鄰搜索技術的通用語義檢索框架.
(6)Siamese- LSTM[14]: 基于孿生網絡和雙層雙向LSTM 的文本相似度匹配模型.
(7)BERT: 以字為單位的預訓練模型,可以完成適用于文本匹配的下游任務.
(8)SBERT[15]: 基于孿生網絡和BERT 的文本相似度匹配模型.
(9)WoBERT: 以詞為單位的中文預訓練模型,可以完成適用于文本匹配的下游任務.
從表6 的結果可見,BiLSTM 和BiMPM 只使用字或詞單粒度下的特征提取方法,不足以充分捕獲中文文本的特征信息.MSEM 考慮詞和字嵌入到一起作為文本表示,準確率相對之前方法有所提高,但沒有捕捉不同粒度之間的相關特征,表達能力仍然有限.BERT模型憑借強大的建模能力相對之前方法取得了較大提升.SBERT 模型使用了最大池化和全連接層的Siamese-BERT 模型,在LCQMC 數據集上的準確率與BERT模型相當,驗證了基于BERT 的孿生網絡模型的有效性.WoBERT 模型較BERT 模型在準確度上有所提高,說明以中文文本為基礎的基于詞粒度的預訓練語言模型能更充分的理解中文語義.本文在孿生網絡的基礎上,基于字粒度和詞粒度融合特征對文本進行建模,解決了只使用BERT 模型或WoBERT 模型提取句子特征向量表達單一的問題,驗證了多角度獲取文本特征信息方法的有效性,進一步提高模型性能,在LCQMC 數據集上通過與其他模型的對比實驗證明了本文模型在文本相似度匹配任務上的有效性.
本文提出了一種基于孿生網絡和字詞向量結合的文本相似度匹配方法,采用字詞向量結合的BERTWoBERT 模型解決了傳統模型難以關注到中文文本語義語法信息的問題,通過孿生網絡和PCA 算法探索多種融合方式以及降維降噪對相似度匹配結果的影響,然后通過Softmax 分類器進行二分類,最終在LCQMC數據集上取得了不錯的相似度匹配結果.
然而本文模型存在參數量過大,計算時間復雜度過高的缺點,下一步嘗試將預訓練模型進行知識蒸餾,在不降低準確率的前提下加快模型速度,解決資源占用率較大的問題.