李世寶 殷樂樂 劉建航 黃庭培
(1.中國石油大學(華東)海洋與空間信息學院 青島 266580)(2.中國石油大學(華東)計算機科學與技術學院 青島 266580)
自然語言推理(Natural Language Inference,NLI)是自然語言理解任務中的一項基礎性研究,又稱文本蘊含識別(Textual Entailment)[1]。對于給定的文本,通常稱為前提和假設,主要目標是判斷前提與假設之間存在的推理關系,包括蘊含、矛盾和中立三種關系。自然語言推理任務的特殊性在于僅僅依靠訓練數據并不能將模型準確率提升到理想的程度,融合外部知識庫的自然語言推理模型能夠發揮更好的性能。
知識圖譜以結構化的方式描述客觀世界中的概念、實體、事件及其之間的關系,將互聯網的信息表達成更接近人類認知世界的形式[2]。大型知識圖譜的應用在為模型提供更多的結構化知識信息的同時也不可避免地引入大量噪聲,為了盡可能提取出與前提或假設文本相關度更高的知識子圖,提出路徑最優化的子圖構建方法,引入權重信息過濾掉相關度較低的節點路徑,降低噪聲對模型準確率的影響。同時為了更進一步獲取子圖中的知識信息,采用圖神經網絡編碼前提和假設構成的子圖,將得到的定長向量融入基于文本的推理模型做訓練,從而構建出文本與圖聯合訓練的推理模型,為基于文本的推理模型豐富了外部知識信息。
這一類推理模型專注于從前提和假設文本獲取推理信息,Bowman 等[3]首次將LSTM 句子模型帶入NLI領域,具體做法是將句子中的每個詞依次輸入LSTM 網絡,以最終輸出的狀態作為句子的表示。Rockt?schel等[4]使用兩個LSTM 對前提和假設文本分別建模,同時提出Word-by-word Attention機制,實現了前提文本和假設文本對應部分的軟對齊。mLSTM[5]的設計機制更符合人類的感知習慣,將前提文本中的單詞和假設文本中的單詞進行匹配,無匹配詞則與NULL 進行匹配,通過門控制記錄匹配信息從而判定文本對是否為蘊含關系。ESIM[6]使用句子間的注意力機制(intra-sentence attention),模型主要包括三個部分:輸入編碼,局部推理模型和推理增強,該模型在SNLI(Stanford Natural Language Inference)數據集[3]下優于以前所有句子編碼模型,為后續相關研究提供了很高的參考價值。
近幾年的自然語言推理研究開始對訓練文本之外的知識庫進行深入探索,Chen等[7]驗證了外部知識庫能夠增強推理模型,從WordNet中提取了五個特征作為前提和假設詞對的特征擴充。文獻[8]面向醫學領域,把對齊后的詞分別應用文本嵌入和圖嵌入方法,將得到的文本向量和圖向量拼接送入ESIM模型做訓練。Wang等[9]提出基于文本的推理模型和基于圖的推理模型相融合的概念,在構建知識子圖的過程中分別考慮了純概念子圖、一跳鄰域子節點和兩跳鄰域子節點的情況。(KG-augmented Entailment System,KES)[10]在此基礎上使用(Personalized PageRank,PPR)排序算法對提取的包含一跳鄰域子節點的知識子圖進行過濾。
目前中文領域融合知識圖譜的自然語言推理研究還較少,中文知識圖譜推理語料庫大多存在規模較小,質量較差等問題,ConceptNet[11]集合了超過十種核心語言的知識圖譜,中文詞匯量達到24萬,包含中文三元組關系60 萬條。我們首先提取ConceptNet 中所有中文數據構建中文知識圖譜,然后分別對前提和假設文本進行分詞并去停用詞后得到token 集合P={p1,p2,p3…pn},H={?1,?2,?3…?n},再由P 和H 構建前提到假設的關系子圖,在關系子圖中pi和?i我們稱為核心節點,與pi和?i直接相連的稱為鄰節點,受限于ConceptNet中文知識圖譜數據的規模,若只考慮一跳鄰節點會使部分核心節點之間找不到有效的連接路徑,若考慮兩跳或者更多跳數的鄰節點則會引入更多的噪聲,這些噪聲是指未出現在上下文中的實體節點,并且不作為中間節點出現在前提到假設的路徑當中,為了濾除這些無用的節點,我們同時考慮節點間路徑長度信息和路徑權重信息設計一種優選路徑的子圖構建方法,實現了不定跳數的節點路徑選取,使得知識子圖盡可能的涵蓋前提和假設中的實體概念。如圖1 所示,對于得到的token 集合P 和H,給定起始節點u,終止節點i,其中u∈P,i∈H。對于(u,i)對之間的知識圖譜路徑P(u,i)={P1,P2,P3…Pk},首先對路徑長度取最小值,見式(1):

圖1 子圖構建流程圖
得到初步過濾的路徑集合P(u,i)={P1,P2,P3…Pm},其中Pm滿足lengt?(Pm)=?,若多條路徑長度相同,則分別計算每條路徑中關系的權值,見式(2):
保留權值最大的作為最終路徑,舍棄其余路徑,最終將所有token 對的路徑集合構成子圖Gp,?(Ep,?,Rp,?),其中Ep,?為圖中包含的所有實體節點,Rp,?為節點之間存在的關系。
推理模型結構圖如圖2所示。

圖2 推理模型框圖
我們首先使用ConceptNet Numberbatch[11]對子圖中的節點進行嵌入初始化,對于圖數據來說,實體之間含有非常豐富的依賴關系,GCN[12]能夠同時對節點特征信息與結構信息進行端對端學習,GCN逐層更新公式為
對構建的子圖Gp,?(Ep,?,Rp,?)使用式(3)融合知識子圖中邊的權重信息進行編碼,然后使用式(4)得到定長向量作為圖的表示,其中wj為第j個節點編碼后的向量表示,N為圖中節點的個數。
設前提語句p=[p1,p2,p3,…,pl] ,假設語句h=[?1,?2,?3,…,?m] ,其中pi,?j∈EN,EN為N 維預訓練的詞向量,使用BiLSTM網絡分別對p和h進行編碼(式(5)~(6)),得到上下文相關的隱藏層向量,
繼續使用BiLSTM 網絡整合局部推斷信息,對編碼結果分別應用平均池化和最大池化,拼接處理后得到定長向量作為最終文本編碼的結果。
將圖編碼層和文本編碼層得到的定長向量拼接送入多層感知器做分類(式(12)),多層感知器包括tanh 激活函數和softmax 隱含層,引入dropout 函數緩解訓練過程的過擬合問題。
本文采用CNLI(Chinese Natural Language Inference)數據集做相關實驗,CNLI由SNLI數據集通過機器翻譯和人工篩選得來。使用jieba 分詞工具對原始語料做分詞處理,初始化向量采用騰訊AI實驗室發布的200 維中文預訓練詞向量,對于未包含詞則使用高斯分布的隨機數進行初始化。
首先BiLSTM 網絡隱藏層維度設置為300,dropout 隨機丟棄比例設置為0.5,訓練批量大小設置為32,采用Adam[13]優化器,初始化學習率設置為0.0004。圖編碼網絡部分,GCN 網絡隱藏層維度設置為128,節點向量維度為300,未包含詞同樣使用高斯分布的隨機數進行初始化。
為了探究不同子圖提取方案對最終模型性能的影響,我們設定平均句內詞數量和平均句外詞數量的比值以表示子圖的上下文相關度σ,式(13)。
其中Si代表所有子圖節點中出現在原上下文的數量,Kj代表所有子圖節點中未出現在原上下文的數量,M代表前提假設對的數量,實驗結果如表1所示。

表1 節點間不同跳數對提取子圖上下文相關度的影響
在分別考慮一跳鄰節點[10]、兩跳鄰節點[9~10]和不定跳數鄰節點的情況下,平均句內詞數量分別為2.8,3.5和4.0,在動態選擇節點跳數的情況下,平均句外詞數量為4.8,上下文相關度達到0.83,而兩跳情況下最差,上下文相關度只有0.33,說明兩跳情況下引入了更多的噪聲。在測試集下對三種方法訓練的模型進行對比發現,在不定跳數的情況下能夠得到更高的測試準確率,綜合以上分析,在動態選擇節點跳數的情況下能夠獲得上下文相關度更高的子圖,減少了子圖構建過程中引入的噪聲,實現了節點路徑的優化。
我們對比了不同模型在CNLI數據集下的準確率,其中包括DiSAN 模型[14],雙向LSTM 模型[15],HBMP模型[16]和ESIM模型。實驗結果如表2所示。

表2 不同模型在CNLI數據集下訓練集和測試集準確率
實驗結果表明,本文提出的模型在CNLI 數據集下識別準確率優于對比的基線模型,有1.2%~4.4%的提升,為純文本模型增加了結構化的知識信息。
此外,為了節省子圖查詢與構建的時間,我們限制了節點路徑的最大查詢條目為60,并在此基礎上以最高識別準確率為目標,調整核心節點間的跳數的最大值,經過多組對比實驗,當設置最大跳數為3,最小跳數為1的情況下,模型訓練集準確率可以達到89.1%,測試集準確率可以達到81.8%,模型訓練過程如圖3所示。

圖3 不同跳數范圍和ESIM的訓練過程對比
本文針對ConceptNet 中文知識圖譜數據規模的限制,提出基于知識圖譜路徑最優化的自然語言推理方法,有效減少子圖構建過程中引入的噪聲,并驗證了方法的有效性。模型架構分為文本編碼和圖編碼兩部分,其中圖編碼部分根據所提取的知識子圖應用GCN 學習圖的結構化知識信息,最后將編碼后的圖向量與文本向量相融合送入推理模型,從而實現文本和圖的聯合訓練,為基于文本的推理模型增加了結構化知識信息。