姚 奕,尹瑞江,陳朝陽
(中國人民解放軍陸軍工程大學 指揮控制工程學院,江蘇 南京 210000)
問答系統[1-2](Question Answering,QA)是根據用戶提問的問題,利用自然語言處理方法對其進行分析,在知識庫或語料庫中查找最符合要求的答案。自2011年美國一問答機器人在智力節目上擊敗人類選手起,知識問答就在全球內掀起了一片熱潮。其經歷了五個發展階段,經歷閱讀理解系統到大規模文檔集的問答,雖然實現了由限定領域向開放領域的跳躍,但還不能應用到商業當中。隨后,科技手段的進步促使著諸如蘋果等公司推出Siri智能助手等服務產品,以及近期爆火的ChatGPT[3]給各行各業帶來的便捷,這都是問答系統對人們生活的影響。
問答系統在國外發展的較為迅速,并且已經應用到了很多產業。相較之下,國內在此方面的研究起步較晚,并且由于中文的特殊性,對此方面的產品研究也受到一定的限制。不過,近幾年來國內問答系統研究有一定進步,一些大公司都相繼推出服務類智能機器人。但是對問答系統來說,如何能更靈活地處理問題,也是當前需要著重研究的方面。并且近年來中文數據庫[4]構建也在加快進行,為問答任務的進行提供更高質量的保障。
隨著問答難度的提升,答案的準確率需有所提高,存在對復雜的問題(多跳或者庫中沒有明確的關系)處理能力不足。因此需要推理技術改進問答系統完成問答任務。問答推理是問答系統根據復雜問題在知識庫中對節點進行更新表示,根據信息推斷出每個實體節點之間的隱藏信息,獲得節點之間更密切的聯系,更有利于問答系統處理復雜的問題,并且可以對知識庫的補全提供一些幫助,更加豐富知識庫中的數據信息。因此對于日益增長的需求來說,對于復雜類型的問題,問答系統要有較強的推理能力,才能更好地提供給用戶滿意的答案。
該文介紹了基于語義解析、基于信息檢索的問答系統構建方法并針對涉及問答推理的復雜問答,介紹問答推理技術的研究。
1960年,基于模板匹配的知識圖譜問答系統構建方法誕生,此方法是問答系統中最基本的方法。通過問句中關鍵字的匹配找到相應的規則,生成關鍵字的Sparql語句,在知識庫查詢結果。但是這種依靠規則匹配關鍵字的方法會過于依賴設定的模板,缺乏靈活性。隨著深度學習模型研究的不斷展開,將深度學習用到自然語言處理領域取得了比較好的結果,也對問答系統的構建提供了幫助。
深度學習的迅速發展,使得越來越多的深度學習模型應用于問答系統的構建,例如卷積神經網絡(CNN)、注意力機制(Attention)、長短時記憶(LSTM)以及預訓練模型等,這些模型在問答任務的不同方面發揮著重要的作用,為問答系統的構建提供了強有力的支撐。
卷積神經網絡將問題和答案映射到低維向量空間進行處理,獲取它們的特征向量。問題分析是問答系統運作的第一步,將經過詞嵌入(Word Embedding)后的自然語言輸入到卷積神經網絡中,對文本的每個部分的局部信息建模,提取文本中的特征信息輸出特征向量。因此借助卷積神經網絡對問題和答案等文本信息處理既節省了人力的工作、提高了對文本分析的質量,又方便問題和答案之間后續的聯系。圖1為卷積神經網絡對輸入的自然語言解析成特征向量的結構圖。

圖1 卷積神經網絡計算輸入問題的特征向量
預訓練模型的出現為自然語言處理提供了不一樣的幫助,比如Bert模型,不需要大量的數據集來訓練模型并且通過模型微調就可以完成下游的任務。Bert模型重要組件是編碼器(Encoder)和解碼器(Decoder)。
在問答任務中,使用編碼器對輸入的詞向量與位置編碼進行相加以便處理問句當中的時序信息,將處理后的詞向量經過自注意力機制計算得到帶有權重信息的向量,再經過殘差網絡與正則化使得模型更加精確,最后數據通過全連接層后再進行相加并歸一化得到輸出,傳給下一個編碼器。
圖2是編碼器處理文本數據的結構圖。

圖2 編碼器處理文本數據
基于語義解析的方法旨在將自然語言問題轉化成可執行的查詢語言。通常將非結構化的問題映射到結構化的邏輯形式,然后通過手工制定的規則將其轉化為可執行的查詢。圖3為基于語義解析方法的問答系統構建流程。

圖3 基于語義解析方法的構建流程
知識庫中存儲的數據是以三元組的形式保存的,使用基于模板的方法將拆分的語句按照三元組數據進行查找并不能表示語句的深層意思,生成的答案不能反饋真實的意思。Berant等人[5]提出一種直接對自然語言問句進行解析操作的方法,將輸入問題中出現的短語完成到知識庫中謂詞的映射,然后使用一個橋接操作來基于相鄰的謂詞生成額外的謂詞。將構建的詞匯表中代表知識庫實體以及實體關系的信息代替問句中的單詞或者短語自底向上的通過求交集、聚合等操作得到代表整個問句查詢意圖的邏輯語言,進而在知識庫中查詢出結果。Reddy等人[6]通過一個共同的基于圖的表示來利用自然語言和Freebase之間的結構和概念上的相似性。工作的關鍵是將語義解析概念化為一個圖匹配問題,使用組合范疇法(CCG)將句子轉換為語義圖,并隨后將其轉化為自由基礎。因此不需要人工注釋或問答對。
為了可以將問題與知識庫建立更好的聯系,Yao等人[7]將問題特征與由Freebase描述的答案模式聯系起來。通過ClueWeb,使得知識庫中的關系信息能夠與自然語言問句之間形成映射,因此對問答中關系預測和答案提取提供了重要的幫助,還能處理域不匹配以及過擬合的問題。Lan等人[8]利用“匹配-聚合”框架匹配候選答案和問題。進一步利用特定于問題的上下文關系來增強候選答案實體的表示。并引用注意力機制來權衡問題中的關系及與候選相關的潛在關系,達到優化效果的作用。
Yin等人[9]使用實體鏈接器得到更高的真實實體覆蓋率,通過字符級卷積神經網絡(char-CNN)將輸入的自然語言問句中得到的實體與知識庫中的候選實體進行匹配,知識庫中與之相關的謂詞和單詞級CNN(word-CNN)的自然語言問句相互匹配,將一種新的注意最大池堆疊在word-CNN上,使謂詞表示能夠更有效地與以謂詞為中心的問題表示相匹配以得到更準確的候選答案。
問答系統對于單關系的問題可以將答案的準確率保持在一個較高的水準。但是隨著問題難度的增加,導致問答系統并不能保證查詢結果的準確率。
Abujabal等人[10]提出了一個QUINT系統,只通過學習用戶輸入的問題和用戶給出的答案自行學習用于查詢的模板,進而根據得到的模板將用戶輸入的問題在知識庫中映射成三重模式來進行查詢。并且,QUINT可以在不單獨制定模板的情況下利用語言組合性來完成復雜的問句的問答任務。節省工作量的同時,也提高了復雜問題的查詢準確率。
Zheng等人[11]使用二進制模板(問題模式和SPARQL查詢模式)代替語義解析器對自然語言進行解析處理。對輸入的問題使用模板拆分成一組子問題,拆分后子問題隨之形成依賴圖。回答復雜問題的任務建模為模板選擇和裝配問題。另外通過考慮查詢語義的有效策略來執行實體級歧義和結構級歧義的消歧工作。該方法在精度和召回率方面都顯著優于最先進的方法。但對于語義解析和依賴的方法處理復雜問題得到的準確率并不令人滿意,因此Sun等人[12]提出了一種骨架語法,通過使用粗粒度形式和基于Bert的解析算法可以提高下游細粒度語義解析的準確性。并且為了將問題的結構與知識庫的結構相結合,使用的多策略方法結合了句子級和單詞級的語義,更好地將問題和答案建立連接。
Zhang等人[13]實現了一個基于分解和繼承思想的層次語義解析(HSP)結構,該模型將復雜的問句先進行分解,分解成多個子句,從生成的子句里面提取答案的類型和謂詞,再將多個子句的信息整合,生成原始問題的邏輯形式,去知識庫中搜索答案。Luo等人[14]使用編碼的方法將復雜的查詢結構轉換成一個向量表示,獲得組件之間的交互信息。首先通過分階段生成的方法利用查詢圖中的隱式類型信息和知識庫中的時間間隔信息生成候選查詢圖,然后對復雜的查詢結構進行編碼使用深度神經網絡來測量問題和每個查詢圖之間的語義相似性。
Hu等人[15]提出一個基于狀態轉換的方法,使用語義查詢圖來表示用戶輸入的復雜問句,并且通過語義查詢圖和底層的知識圖之間的匹配查詢得到問題的答案,使用獎勵函數對獲取的特征打分排序,選擇答案輸出。Maheshwari等人[16]針對知識圖上的復雜問題回答任務的神經查詢圖排序方法,提出了一種新的基于自注意的插槽匹配模型,利用了查詢圖的固有結構,即所選擇的邏輯形式。并且通過生成核心鏈候選排序、核心鏈候選排序及預測輔助約束三部分完成查詢圖的構建和排序任務。
Bhutani等人[17]提出MULTIQUE,可以將一個復雜的問題映射到一個復雜的查詢模式,每個簡單的查詢序列針對一個特定的查詢庫。它使用一個基于神經網絡的模型找到簡單的查詢,該模型能夠對提取的知識庫中的文本關系和經過管理的知識庫中的本體關系進行集體推斷。Kapanipathi等人[18]提出神經符號問題回答(NSQA),利用抽象意義表示(AMR)解析來實現任務獨立的問題理解,每個模塊都為自己的任務分別進行訓練。并且將AMR解析轉換為與KB對齊的候選邏輯進行答案查詢。
基于語義解析的方法減少了基于模板方法大量的工作,增加了自然語言問句與知識庫之間的聯系,提高了問答查詢的準確率。但是這類方法的可解釋性不足,并且在訓練數據時浪費了大量的時間。
基于信息檢索的方法首先要在自然語言問題中確定最接近用戶意圖的主題實體,并將這些實體與知識庫聯系起來。然后,通過主題實體以及句子中出現的約束形成子圖,并將子圖中的所有節點作為候選答案。基于從問題和候選答案中提取的特征,使用分數函數對其語義相關性進行建模,并預測最終答案。如圖4所示。

圖4 基于信息檢索方法的構建流程
Li等人[19]使用卷積神經網絡獲取問題的分布式表達,再通過與答案路徑、答案上下文信息及答案類型的分布式表達點積求和得到對應的問題答案對得分,取得分高的作為答案。Bordes等人[20]提出在記憶網絡(MemNNs)內,建立存放數據、訓練、連接反響三個階段的工作流,通過輸入模塊將數據存放在內存中,對輸入的數據進行訓練,訓練完成后在記憶中增加混響的新事實,測試處理新事實的能力,使用泛化模塊與存儲的事實連接起來,最后通過輸入、輸出和響應模塊完成問答。
為了更加強調問題的表示,Hao等人[21]提出了一個端到端神經網絡模型,通過交叉注意機制,對每個問題,將對應答案的重點和注意力權重到回答上,然后根據處理后得到的候選答案動態地表示問題及其相應的分數。Chen等人[22]提出通過一種新的雙向注意記憶網絡,不需要外部資源和很少的手工特性,直接建模問題和知識庫之間的雙向交互流,提取與回答問題和知識庫兩邊的問題最相關的信息。
對于輸入的復雜自然語言問題來說,由于問句中存在多實體和多關系的限制,在問句中找到主題實體是比較困難的,此前基于信息檢索的問答系統構建方法也出現一些處理能力的不足。
建立能夠學習僅基于問答對的知識圖QA系統是一項挑戰。對于輸入問題文本中的拼字錯誤導致的與知識圖不匹配等問題,QA的處理能力不足。Zhang等人[23]提出了一種深度學習架構以及一種端到端變分學習算法,可以處理輸入的復雜問題以及解決問題中存在的噪音問題,并且還能完成復雜問題的問答任務。
對于直接回答涉及多個實體和關系的問題,Lu等人[24]提出了一種基于群斯坦納樹的動態檢索文本語料庫的無監督方法,計算來自不同文檔的部分結果的相似性連接。QUEST通過動態檢索的實體名稱和關系短語構建了一個噪聲知識庫,然后用類型和語義對齊來增強知識圖,并通過一個關于群斯坦納樹的算法來計算最佳答案。
當遇到一個不完整的知識庫時,需要建立不完整知識庫和完整鏈接文本組合上的問答系統。Sun等人[25]提出了移植網,對由知識庫實體和文本文檔參數組成的子圖的節點進行分類,并且從包含文本和知識庫實體和關系的問題特定子圖中提取答案。并且Sun等人[26]提出一個PullNet集成框架來學習檢索和使用異構信息完成問答。它會通過迭代過程生成一個子圖,并且這個子圖僅針對于當前特定的問題,生成的子圖中包含著問題的信息。在每次迭代中,都使用一個圖卷積網絡(GCN)來識別子圖的節點。在子圖的構建完成后,使用類似的GCN從子圖中提取答案。Xiong等人[27]提出了一種端到端的問題回答模型,從一個不完整的知識庫和一組檢索到的文本片段中學習聚合答案證據。首先在知識庫中查找與問題中的實體相關的知識信息,累積該實體的知識;然后在潛在空間中實現問題的重新制定,用上一步中積累的實體知識讀取文本。
Miller等人[28]在原本記憶網絡的基礎上結合鍵值對,提出鍵值記憶網絡模型(KV-MemNNs),通過在內存讀取操作的尋址和輸出階段使用不同的編碼,更新鍵值對的記憶槽,使讀取文檔更加可行。對問題和三元組進行計算得到向量表示,并在知識庫中得到查詢子圖,作為鍵值記憶槽,并對尾實體進行相似度和加權計算來更新問題的向量表示。
使用深度圖神經網絡(GNNs)來捕獲結構信息,這可能無法在特別長的距離內建模節點關系。針對此類問題,Wang等人[29]提出了全局圖,該框架從節點類型相似度和節點與問題之間相關性兩個角度建模遠程節點關系:通過全局類型標簽相似度建模遠程節點關系并且通過兩個節點的和得分建模長距離節點關系。
基于信息檢索的構建方法主要是抽取自然語言問題中的主題詞,形成查詢圖在知識庫中完成查詢任務返回結果,不需要較多的人工干預,節省時間。但是語義的復雜程度在增加,對此準確率的要求還要提升。
智能問答推理[30]技術是對于復雜問題的處理手段,相比于單跳問答,由于復雜問題的多實體多關系等的條件限制需要多次跳躍找到目標,如何根據這些條件在知識庫中查找答案是當前研究的重點。并且,根據條件在知識庫中查找答案并不一定就能找到對應的實體或關系。因此,利用已有信息結合隱含的信息進行問答推理找到最終的結果是當前問答任務中處理復雜問題的主要方向。多跳推理需要根據給出的問題信息結合知識庫中的多個三元組進行歸納推導。
多關系問答需要對知識庫中的問題進行詳細的分析,并對問題進行多個事實三倍體的推理。Zhou等人[31]提出了一個可解釋推理網絡,在推理過程中動態地決定在每一跳中分析輸入問題的哪一部分,以及通過預測可以得到與當前解析結果對應的關系;然后再利用預測后得到的關系來更新問題的表示和推理過程的狀態,進而促進接下來推理工作的進行。
Saxena等人[32]提出了一個系統EmbedKGQA。EmbedKGQA在稀疏知識圖上執行多跳問答系統時特別有效,利用知識圖嵌入的鏈路預測屬性來減輕知識圖的不完全性問題,而不使用任何額外的數據。另外還訓練知識圖實體嵌入,并使用它來學習問題嵌入,在評估過程中,再次對所有實體進行評分,并選擇得分最高的實體作為答案。
將記憶網絡改進用于推理問題是很可行的方案。Xu等人[33]基于傳統的KV-MemNNs設計了一種查詢更新策略,從查詢表示中屏蔽先前處理的內存信息,并引入了一種新的STOP策略,在多跳內存讀取過程中獲得具有靈活查詢三元組數量的結構化查詢,因此這也使KV-MemnNN能夠生成結構化查詢,并以語義解析的方式工作。Jain[34]引入了事實記憶網絡,可以對給定問題中命名實體生成的事實進行處理,在相同的單詞向量空間中生成問題和知識庫的分布式表示,提取初始候選事實的子集,然后嘗試使用多跳推理和細化找到回答實體的路徑。
對于復雜多跳的問題,需要將實體以及它們之間的關系緊密結合,Sorokin[35]提出用門控圖神經網絡(GGNNs)來編碼語義解析的圖結構,通過對語義的解析挖掘深層的隱含信息有助于問答推理。對于每個輸入問題,構造了一個顯式的結構語義解析(語義圖),語義解析可以被確定性地轉換為一個查詢,以從知識庫中提取答案。Han等人[36]提出了一種利用文本信息增強不完全知識庫的問答系統方法。在文本中挖掘相關的語義信息增加實體的表示,然后利用這些表示信息使用圖卷積網絡(GCN)來更新實體狀態。并且還利用文本的潛在結構信息,將文本視為連接實體的超邊,用來填補知識庫中缺失的關系,并將超圖卷積網絡進一步應用于超圖形成文本的推理。然而,此方法是針對無向圖的,并不考慮信息傳輸的方向。Han等人[37]提出了一種基于有向超圖卷積網絡(DHGCN)的可解釋問答系統模型,即基于動態關系的兩向超圖推理,首先更新關系狀態并為關系分配動態權值,然后自適應地學習節點表示。這樣可以明確地更新關系信息,動態地關注不同跳下的不同關系。Schlichtkrull等人[38]在問答任務中引入了關系圖卷積網絡(R-GCNs),應用于兩個標準的知識庫完成任務:鏈接預測和實體分類以完成缺失事實的恢復和缺失實體屬性的恢復,因此可以在推理中充分利用補全的信息完成推理任務。Teru[39]提出了一個基于圖神經網絡的關系預測框架GraIL,使用注意力機制對兩個相鄰的實體以及它們之間的關系處理得到實體的向量表示以及關系的向量表示,根據目標處理得到的表示預測打分,得到最高分的作為最終的輸出。GraIL在訓練后可以推廣到看不見的實體和圖,利用這些信息完成問答推理任務。
Xiong等人[40]提出學習多跳關系路徑的強化學習框架,基于知識圖嵌入的連續狀態的策略代理,訓練一個RL代理在知識庫中尋找推理路徑,RL模型允許控制所找到路徑的屬性,與圍繞KG設計的環境進行交互。Hua等人[41]提出了一種元強化學習方法,基于從訓練數據中檢索到的最相似的問題,快速有效地使元學習程序員適應新的問題。然后使用元學習策略來學習優秀的編程策略,利用試驗軌跡及其獎勵設置類似的問題,實現了對未知問題的快速反應以及推理回答。
He等人[42]提出了一種師生方法中的多跳問答系統任務。學生網絡的目標是找到查詢的正確答案,而教師網絡則試圖學習中間監督信號,以提高學生網絡的推理能力。特別是教師網絡的設計,同時利用正向和反向的推理來增強對中間實體分布的學習。通過考慮雙向推理,教師網絡可以產生更可靠的中間監督信號,從而緩解虛假推理的問題。Hu等人[43]提出將邏輯查詢和KG聯合嵌入到一個低維空間,充分利用類型信息,增強了查詢中的實體和關系表示,并且同時提高了泛化、演繹和歸納推理,更有利于問答推理任務的進行。
在知識圖推理中,需要識別大型候選實體集中的答案,但其大小隨著推理跳數的增加呈指數增長。Cai等人[44]提出了深層認知推理網絡(DCRN),通過無意識和有意識兩個階段減少工作量。Shi等人[45]利用神經符號問答的方法,將自然邏輯推理集成到深度學習架構中,將問答視為文字蘊含任務,問題和候選答案被串聯起來形成假設,模型按照自然邏輯推理步驟,逐步將假設和候選前提連接起來以構建證明路徑并測量二者之間的蘊涵分數以確定前提是否包含假設。
Li等人[46]在普通的編解碼器訓練中增加一個后向推理步驟,以雙向方式訓練生成模型,解決在問答中編碼器和解碼器通過預測得到的不是最合適的反應的問題。前向生成步驟的輸出被用于向后推斷對話上下文,因而后向推理步驟推動模型可以生成更加信息豐富和一致的內容,方便雙向優化。Xu等人[47]動態構造語義圖并對其進行推理,使用抽象語義表示(AMR)作為語義圖表示,基于AMR語義圖構建AMR-SG,揭示問題、答案和多個事實之間的任何跳關系。利用AMR-SG從一個大的事實庫中提取活躍的事實來回答問題。Feng等人[48]提出由NumGNN和NumTransformer組成的預訓練數值推理模型,并由顯式的自我監督信號引導。這兩個模塊被預先訓練來分別編碼數字的大小和序數性質,并且作為任何基于信息檢索的問答系統模型無關插件來增強其數值推理能力。
問答推理技術方法提供了對復雜多跳限制問題的解決方案,提高了多跳復雜問題的查詢準確率,并用多種方法對其進行探索。表1為問答推理方法的匯總。

表1 問答推理的方法匯總
該文主要介紹了基于語義解析和基于信息檢索的兩種問答系統構建方法,以及隨著深度學習的進步,研究結合深度學習模型改進問答系統并提高問答的準確率和處理復雜問題的能力。另外針對多跳問題的問答,闡述了問答系統利用隱含信息推理以及拓展推理路徑等的多跳限制問答的推理方法。
基于語義解析的方法一些模型會存在解釋性不足的問題,并且利用詞匯映射等的操作會對數據產生依賴性無法完成復雜關系上的組合映射影響問答的結果。未來的發展方向應該改進深度學習模型增強方法的可解釋性,以及減少對數據的依賴性?;谛畔z索的方法在面對復雜的問題構建查詢子圖時存在子圖構建不準確的問題以及龐大的數據集往往會挑選大量的候選實體的問題,需要處理好實體和關系的信息構建精確關系的查詢子圖,以及篩選答案時在大量的數據中降低候選實體集合大小,因此未來需要提升處理復雜問題時的查詢準確率,通過預訓練模型等增強對自然語言的處理分析各實體的關系,減小對正確答案召回率的影響。對于智能問答多跳推理方法,在一些信息缺失的知識庫中進行推理還是有很大的挑戰,暴露出不能處理缺失信息以及處理能力不足的問題,未來需要結合鏈接預測等方法解決在鏈接缺失的知識庫中進行推理以及擺脫長語句問題推理的限制和提升多次跳躍推理的能力。
隨著知識圖譜的發展,問答推理工作也可以在知識圖譜中進行,在今后的發展中利用好知識圖譜上的數據信息完成問答任務是接下來研究的一個方向。近年來對圖神經網絡的研究以及其在文本處理上取得了很大的進展,將圖神經網絡等方法加入到問答系統推理任務也將是接下來一段時間的研究方向,而且可以和知識圖譜結合處理缺失信息補全等的問題,推動問答系統推理工作的發展。