王守會,覃 飆
(中國人民大學(xué) 信息學(xué)院,北京 100872)
隨著網(wǎng)絡(luò)資源的不斷豐富,人們獲取信息和知識的方式越來越多,如何從海量的信息中快速、精準(zhǔn)的獲取用戶所需要的信息是一個巨大挑戰(zhàn),智能問答系統(tǒng)的出現(xiàn)使得該問題得到了部分解決.問答系統(tǒng)(Question Answering,QA)在接收到自然語言問題后,通過解釋大量的結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)返回一個精準(zhǔn)的答案[1].在QA的發(fā)展過程中,出現(xiàn)了以下幾種問答形式:1)基于知識的問答.該方法將自然語言問題映射為數(shù)據(jù)庫上的結(jié)構(gòu)化查詢(如SQL、SPARQL),然后經(jīng)查詢后得到問題的答案.BaseBall系統(tǒng)[2]是最早的發(fā)布于1961年的問答系統(tǒng),主要用于回答在美國聯(lián)賽中一個賽季內(nèi)的有關(guān)棒球比賽的問題.該系統(tǒng)通過人工定義一些模板和規(guī)則,將自然語言問題進行結(jié)構(gòu)化語義表示,進而查詢數(shù)據(jù)庫并返回問題答案;2)基于信息檢索的問答.基于用戶輸入的關(guān)鍵字或短語,從大量語料庫中檢索出與之相關(guān)的文檔或段落,并使用相關(guān)算法(如閱讀理解算法)來理解文本并返回最相關(guān)的答案[3,4].如文本檢索會議(Text Retrieval Conference,TREC)(1)http://trec.nist.gov發(fā)起的問答跟蹤系統(tǒng);3)基于混合方法的問答.該方法通常使用文本數(shù)據(jù)集和結(jié)構(gòu)化知識庫相結(jié)合來回答問題.如IBM沃森的DeepQA系統(tǒng)[5],首先從知識庫和文本資源中找到很多的候選答案,進而使用知識資源(如地理空間數(shù)據(jù)庫、文本資源)為每個候選答案打分.
谷歌在2012年提出知識圖譜(Knowledge Graph,KG)的概念后迅速得到了廣泛的關(guān)注和應(yīng)用.知識圖譜是以圖的形式來表示客觀世界中的實體及其之間關(guān)系的知識庫,能夠更好地組織、管理和理解互聯(lián)網(wǎng)的海量信息[6],其應(yīng)用包括語義理解、精準(zhǔn)搜索、智能問答、輔助決策.基于知識庫的問答系統(tǒng)(Knowledge Base Question Answering,KBQA)是隨著知識庫(如WordNet[7]、Freebase[8]、YAGO[9]、DBpedia[10]等)的不斷發(fā)展而產(chǎn)生和發(fā)展起來的,通過對自然語言問題進行語義分析、知識抽取、知識推理等操作使得用戶能夠更精準(zhǔn)、更直接的得到問句的答案.
知識庫中的每條知識以SPO(Subject,Predicate,Object)三元組的形式存儲在知識庫中,也被稱為事實.其結(jié)構(gòu)為
圖1 知識庫示例
基于知識庫的問答是指給定一個由n個單詞組成自然語言問題Q,Q={w1,w2,…,wn}.問答系統(tǒng)通過對自然語言問題進行語義分析和理解,并在給定的知識庫中進行查詢和推理,最后得到該問題的答案.例如對于自然語言問題“What is christinagabrielle′s profession?”,其中 Christina Gabrielle為實體,profession為屬性.其目的是利用短語檢測、資源映射、語義組合等方法,最終對知識庫進行查詢并用一個事實(christinagabrielle,/people/people/profession,singer &writer)來回答該問題,那么singer&writer即為該問題的答案.KBQA任務(wù)通常被劃分為命名實體識別(Named Entity Recognition,NER),實體鏈接(Entity Linking,EL),關(guān)系檢測(Relation Detection,RD),以及查詢生成(Query Generation,QG)幾個子任務(wù).目前KBQA的主流方法有1)基于模板的方法;2)基于語義解析的方法;3)基于深度學(xué)習(xí)的方法.
接下來在第2部分我們將對KBQA現(xiàn)有的主流方法進行介紹并對目前的研究進展情況進行總結(jié),在第3部分我們將對KBQA任務(wù)所面臨的問題和挑戰(zhàn)進行總結(jié),第4部分對本文進行總結(jié).
基于模板方法(Query Template)的知識庫問答其最終目的是將自然語言問題映射為能夠在知識庫中執(zhí)行的查詢模板(如SPARQL),進而根據(jù)查詢語句在知識庫中進行查詢、排序并返回最終的查詢結(jié)果.之前的問答系統(tǒng)是將問題轉(zhuǎn)換為三元組,然后將其與知識庫中的數(shù)據(jù)進行匹配以檢索答案.該方法主要依賴于相似度的度量,不能很好的表示問題的語義結(jié)構(gòu),且不能對復(fù)雜問題進行有效回答,因此Unger等[11]提出了一種新的方法TBSL.該方法通過對問句進行語義解析,構(gòu)建一個能夠完整映射問題語義結(jié)構(gòu)的SPARQL查詢模板,然后使用實體識別和謂詞檢測操作進行模板實例化,最后利用該查詢在知識庫中進行查詢排序并得到答案,其處理過程如圖2所示.TBSL方法的主要弊端是需要手工制作海量模板,代價巨大且模板覆蓋范圍有限.那么能否通過學(xué)習(xí)來自動生成模板呢?Abujabal等[12]針對這一問題提出了QUINT方法,該方法利用問答對結(jié)合依存樹來自動學(xué)習(xí)utterance-query模板,而且該方法能夠利用語言的組織特點來回答復(fù)雜問題,無需為整個問題提供模板.同樣的Cui等[13]從一個百萬級的QA語料庫中去學(xué)習(xí)模板,基于這些模板使得KBQA無論在二元事實性問題或是復(fù)雜問題上都取得了較好的效果.
圖2 基于模板的SPARQL查詢[11]
目前基于模板的方法人工成本高且處理問題單一,基于神經(jīng)網(wǎng)絡(luò)的方法通過向量化的方式來表示一個問題雖然比較靈活,可以理解各種各樣的問題,但其解釋性較差.因此Cui等[14]提出一種兼?zhèn)鋬烧邇?yōu)點的方法,通過從QA語料庫中來自動學(xué)習(xí)模板,其中大量的QA語料也保證了模型可以理解不同的問題.此外作者還提出了一個生成模型(概率圖模型)來解釋如何為一個問題找到答案.
現(xiàn)有KBQA方法需要大量的標(biāo)記數(shù)據(jù)集且無法對訓(xùn)練集中未涉及的領(lǐng)域進行有效回答.為了克服這些局限性,Abujabal等[15]提出了KBQA的持續(xù)學(xué)習(xí)框架NEQA.在離線訓(xùn)練過程中,NEQA會從少量訓(xùn)練集(問答對)中自動學(xué)習(xí)出能夠?qū)⒕浞ńY(jié)構(gòu)映射到語義結(jié)構(gòu)的模板.在線問答過程中,當(dāng)遇到模板未覆蓋的問題時,會觸發(fā)持續(xù)學(xué)習(xí)模型,對訓(xùn)練集中未覆蓋問題的語法結(jié)構(gòu)進行學(xué)習(xí)得到新的模板,通過不斷擴充模板庫來提高模板的覆蓋范圍.
基于語義解析方法(Semantic Parsing)的知識庫問答是指將自然語言問句解析為相應(yīng)的邏輯表達式(如Lambda-DCS[16]等),再將該邏輯表達映射為能夠在知識庫上支持的結(jié)構(gòu)化查詢(如SPARQL、SQL等),最后從知識庫中查詢并得到答案,基本步驟如圖3所示.目前流行的語義解析方法包括組合范疇語法(Combinatory Categorical Grammar,CCG)解析[17-22]和語義成分解析(Dependency-based Compositional Semantics,DCS)[23,24].
圖3 傳統(tǒng)語義解析方法基本步驟
語義解析器的訓(xùn)練需要標(biāo)注大量的邏輯表達并進行有監(jiān)督學(xué)習(xí),如果遇到未學(xué)習(xí)過的樣本時會導(dǎo)致系統(tǒng)的表現(xiàn)很差,特別是在限定領(lǐng)域中邏輯謂詞數(shù)量較少的情況下[25,26].為了解決解析器在監(jiān)督學(xué)習(xí)中遇到的問題,Cai等[21]提出了基于標(biāo)準(zhǔn)監(jiān)督學(xué)習(xí)算法、模式匹配算法和模式學(xué)習(xí)算法的大型知識庫語義解析器開發(fā)技術(shù).該方法雖然相較于純監(jiān)督學(xué)習(xí)方法有了提高,但仍然無法完全擺脫對人工標(biāo)注數(shù)據(jù)的依賴.學(xué)習(xí)一個可擴展到大型開放領(lǐng)域問題的語義解析器可能存在邏輯表達與知識庫中的本體概念無法匹配的情況,Kwiatkowski等[22]提出了一種新的方法來學(xué)習(xí)兩階段語義解析器,使得該解析器支持可擴展的、動態(tài)的本體匹配,解決了在本體上可能存在的不匹配問題.解析器首先使用CCG將問句映射為一個領(lǐng)域無關(guān)的邏輯表達,進而使用本體匹配模型將該表達轉(zhuǎn)換為目標(biāo)領(lǐng)域的能夠與知識庫中的本體相匹配的邏輯表達.Berant等[23]提出一種不依賴大量標(biāo)注數(shù)據(jù)而是從問答對中學(xué)習(xí)邏輯表達.自然語言短語到邏輯謂詞的映射,之前是通過手工規(guī)則、遠程監(jiān)督、模式匹配相結(jié)合的方法[27].文中使用大量的文本語料和知識庫來構(gòu)建短語到邏輯謂詞的粗略映射語料庫,并提出橋接(Bridging)操作來克服一詞多義、輕動詞和介詞難以對齊的問題.Berant等[24]隨后又對該問題做了進一步研究,給定一個問題先通過簡單語義分析生成一些候選邏輯表達式.其次為每個候選邏輯表達式生成一個自然語言問句.最后利用候選邏輯表達及其對應(yīng)的生成問句來訓(xùn)練模型,以尋找最優(yōu)的邏輯表達.Reddy等[28]通過引入Lambda算法從依存樹中推導(dǎo)出neo-Davidsonian邏輯形式,使用該邏輯形式對自然語言問句進行語義解析.最后在Free917和WebQuestions數(shù)據(jù)集上進行驗證,結(jié)果表明該方法優(yōu)于原始的依存樹,并且比基于CCG方法得到的邏輯表達更健壯.
此外針對Freebase知識庫精度高但覆蓋范圍低,而基于開放信息提取(Open Information Extraction)的知識庫其覆蓋范圍廣但精度普遍較低的問題,F(xiàn)ader等[29]提出了同時利用了兩種類型知識庫的開放式問答系統(tǒng)(Open QA,OQA).OQA通過將完全開放的QA問題分解為更小的子問題(包括問題釋義和查詢重構(gòu))來實現(xiàn)系統(tǒng)的魯棒性.Bao等[30]通過引入CYK解析方法,將自然語言問題到語義表達的轉(zhuǎn)換和從知識庫中檢索答案兩個任務(wù)在統(tǒng)一框架內(nèi)解決.大多數(shù)的KBQA任務(wù)都只針對一個知識庫,但實際情況中單一知識庫往往不能覆蓋所有的問題,如果問題集屬于多個領(lǐng)域則需要多個知識庫.考慮到對齊結(jié)構(gòu)和查詢結(jié)構(gòu)是相互作用的兩個部分,Zhang等[31]使用整數(shù)線性規(guī)劃(Integer Linear Programming,ILP)將對齊結(jié)構(gòu)和查詢結(jié)構(gòu)整合成統(tǒng)一框架.
自2006年Hinton等[32]提出深度置信網(wǎng)絡(luò)(Deep Belief Network,DBN)以來,深度學(xué)習(xí)得到了快速發(fā)展,涌現(xiàn)了諸多深度學(xué)習(xí)模型.如卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)[33]和循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[34]等,并在多個領(lǐng)域得到了廣泛應(yīng)用[35-37].在知識庫問答領(lǐng)域,將深度學(xué)習(xí)用于KBQA任務(wù)成為當(dāng)今的研究熱點[38].包括利用深度學(xué)習(xí)對傳統(tǒng)KBQA方法進行提升和完全基于深度學(xué)習(xí)的端到端(End-to-End)的研究方法,且都取得了較好的研究進展.
2.3.1 深度學(xué)習(xí)與傳統(tǒng)KBQA方法相結(jié)合
在KBQA任務(wù)中需要用到很多自然語言處理技術(shù),包括命名實體識別、實體鏈接、關(guān)系檢測等.該方法主要利用深度學(xué)習(xí)對KBQA任務(wù)中的某一環(huán)節(jié)進行提升,如利用深度學(xué)習(xí)進行實體識別、關(guān)系檢測、實體鏈接等[39-45],從而提高知識庫問答的整體效果.Zhang等[42]提出了基于注意力機制的字詞級(Word-level)交互模型(ABWIM)用于關(guān)系檢測以緩解在比較前將序列聚合為固定緯度大小的向量時所造成的信息丟失問題,從而提高了關(guān)系檢測的準(zhǔn)確率.在KBQA子任務(wù)的處理過程中,Petrochuk等[46]使用BiLSTM-CRF進行命名實體識別,利用BiLSTM進行關(guān)系分類.Wu等[47]將FOFE編碼和深度神經(jīng)網(wǎng)絡(luò)相結(jié)合提出了FOFE-net算法用于KBQA任務(wù).Yu等[48]提出一種新的關(guān)系檢測模型Hierarchical Residual BiLSTM(HR-BiLSTM),實現(xiàn)了問題與關(guān)系之間的分層匹配.在關(guān)系檢測模型中,作者將問句與關(guān)系的字詞層面(Word-level)和關(guān)系層面(Relation-level)兩個維度進行編碼并計算兩者之間的相似度,提高了關(guān)系識別的準(zhǔn)確率.Zhang等[49]提出了一種改進的多路徑多尺度的關(guān)系檢測算法AdvT-MMRD,以提高KBQA任務(wù)的性能.其中作者將Bi-GRU用于語義相似度匹配,將CNN用于學(xué)習(xí)問題和關(guān)系之間文字層面的相似度.Qu等[50]針對大規(guī)模知識庫中的簡單關(guān)系問題提出了AR-SMCNN模型,其利用RNN和CNN的優(yōu)勢互補來獲取語義和文字層面的相關(guān)信息.
此外針對傳統(tǒng)語義解析方法可能存在的邏輯表達與知識庫中的本體無法匹配的問題,Yih等[51]提出了一種基于知識庫的新型語義分析框架,其可以將查詢圖直接映射到邏輯形式.因此語義解析過程被簡化為查詢圖生成,并被表述為分階段搜索問題.作者通過實體鏈接系統(tǒng)和卷積神經(jīng)網(wǎng)絡(luò)來提升自然語言問題到知識庫中謂詞序列的映射.Luo等[52]使用神經(jīng)網(wǎng)絡(luò)將復(fù)雜的查詢結(jié)構(gòu)編碼成統(tǒng)一的向量化表示,從而能夠成功捕捉復(fù)雜問題中各語義成分之間的相互作用,以此來解決復(fù)雜的KBQA任務(wù).Yang等[53]提出了基于詞嵌入技術(shù)的新方法,利用詞嵌入技術(shù)將問句和候選邏輯表達映射為低維向量,通過對二者之間的相似性進行排序,最終使用選定的邏輯表達從知識庫中檢索答案.
由于自然語言問題表達的靈活性,理解自然語言并回答一些事實性問題仍面臨著挑戰(zhàn),Dai等[54]針對大規(guī)模知識庫的單事實問題提出了CFO(Conditional Focused Neural-network-based)方法.對于單事實問題,只需從問題中提取相應(yīng)的實體和關(guān)系,即可利用找到的和對去知識庫中尋找答案.因此作者將該問題轉(zhuǎn)換為在給定問題時,找出最大化條件概率的實體關(guān)系對,并利用神經(jīng)網(wǎng)絡(luò)模型對該問題進行了處理.Zhao等[55]提出了一種子圖排序和聯(lián)合評分的方法以提高KBQA的性能.在子圖排序中作者綜合考慮了文字和語義層面的相似度,進而使用聯(lián)合評分CNN模型在子圖中尋找正確事實.Lukovnikov等[56]選擇BERT作為用于微調(diào)的預(yù)訓(xùn)練模型并在KBQA任務(wù)中進行了應(yīng)用.Gupta等[57]不再將KBQA任務(wù)分解為幾個子任務(wù)(實體檢測、實體鏈接、關(guān)系預(yù)測)進行處理,而是基于信息檢索的思想將任務(wù)分為兩個階段,即候選答案的產(chǎn)生和候選答案的排序.Wu等[58]針對現(xiàn)有的KBQA算法無法對具有隱含時間約束的問題進行建模,提出了通過引入外部知識從問題中獲取時間信息的方法.該方法基于雙向注意力記憶網(wǎng)絡(luò)模型,通過注意力機制和外部知識獲取問題中的時間信息,以增強在具有隱含時間約束問題上的性能.
2.3.2 基于深度學(xué)習(xí)的End-to-End方法
該方法首先通過命名實體識別技術(shù)得到問題的實體詞,并通過實體鏈接找到其在知識庫中所對應(yīng)的實體,以該實體為中心向外擴展(一跳或多跳)后得到知識庫子圖,子圖中的實體即為候選答案.其次分別將問題和候選子圖映射為低緯向量,經(jīng)過不斷訓(xùn)練使得正確答案與問句之間的相似度(計算兩者點積)要大于錯誤答案與問句之間的相似度.最后在模型訓(xùn)練完成后則可根據(jù)候選答案和問題兩者之間的得分進行篩選,并得到最終答案.
在端到端的知識庫問答中比較經(jīng)典的是Bordes等[59]提出的方法.該方法首先通過實體鏈接得到問句中所識別到的實體在知識庫中所對應(yīng)的實體.然后從該實體出發(fā)通過一跳或二跳擴展后得到知識庫子圖,其中子圖中的每個實體都是候選答案.最后將問題和答案子圖分別映射為向量表達,并通過點積操作獲得問題和候選答案之間的相似度分值.其中作者分別從單一實體、路徑表示和子圖表示3個方面出發(fā)更加細化和全面的表示了候選答案的低緯向量,整體思路如圖4所示.
圖4 子圖嵌入模型[59]
Li等[60]在文獻[59]的研究基礎(chǔ)上提出了一種多列卷積神經(jīng)網(wǎng)絡(luò)的模型,并分別從候選答案實體的關(guān)系路徑(Answer Path),上下文關(guān)系(AnswerContext)和答案類型(AnswerType)3個不同的方面來比較問題和答案的相似性.最后分別計算問題與候選答案3個方面的得分并將結(jié)果相加,綜合得分最高的即為最佳答案.通過對文獻[60]的實驗結(jié)果分析發(fā)現(xiàn)答案類型和候選答案實體的關(guān)系路徑對最終的結(jié)果影響較大,而候選答案實體的上下文關(guān)系對最終的結(jié)果影響較小.因此Hao等[61]在此基礎(chǔ)上做了進一步研究.首先對神經(jīng)網(wǎng)絡(luò)模型進行了調(diào)整,使用了Bi-LSTM模型.其次因為候選答案實體的關(guān)系路徑、上下文關(guān)系和答案類型對最終結(jié)果的影響是不同的,因此引入了交叉注意力機制,對答案的不同部分給予不同的權(quán)重.最后作者從候選答案的實體、關(guān)系、答案類型、答案上下文關(guān)系4個方面進行了考慮.Chen等[62]也從多個方面進行考慮提出了一個新的雙向注意記憶網(wǎng)絡(luò)BAMnet.通過注意力機制捕捉問句與知識庫信息兩兩間的相關(guān)性,并利用此相關(guān)性增強問句的表示,希望能夠結(jié)合到更多的知識庫信息,以提升復(fù)雜問題的處理能力.
由于利用神經(jīng)網(wǎng)絡(luò)模型在對問題和答案進行建模時往往忽略背景信息的重要性,導(dǎo)致錯誤答案的得分會高于正確答案的得分,于是Shen等[63]提出了具有知識感知能力的雙向長短記憶模型KABLSTM,通過引入背景知識來豐富問答的表征學(xué)習(xí).該方法使用上下文引導(dǎo)的帶注意力機制的CNN模型將背景知識嵌入到句子表示中,同時使用知識感知注意力機制將問答對的各部分進行相互關(guān)聯(lián).Huang等[64]針對簡單問答提出了基于知識嵌入的問答系統(tǒng)框架(KEQA).KEQA的思想是在知識嵌入空間中聯(lián)合恢復(fù)問題的頭實體、謂詞、尾實體的向量化表示,并根據(jù)作者提出的聯(lián)合距離度量標(biāo)準(zhǔn),將與知識庫中的事實最接近的3個學(xué)習(xí)到的向量作為答案返回.由于自然語言的靈活性、多樣性和模糊性,很難將問句的語義信息與答案進行匹配,Wang等[65]提出了一種基于知識圖表示學(xué)習(xí)的問答方法TransE-QA,以端到端的方式來解決簡單問答.該方法一共分為3個模塊:問題模塊、實體模塊和關(guān)系模塊.它將知識圖表示學(xué)習(xí)算法(TransE)和問題分布式表示方法(TextCNN)相結(jié)合對問題和知識圖進行聯(lián)合訓(xùn)練.最后使用文中設(shè)計的評分函數(shù),將排序后的Top-1實體作為問題的答案返回給用戶.Tan等[66,67]針對知識庫問答任務(wù)建立了基于雙向長短期記憶網(wǎng)絡(luò)(Bi-LSTM)的問題和答案的嵌入,并通過余弦相似度來衡量它們之間的相似度.Lukovnikov等[68]使用GRU網(wǎng)絡(luò)并以端到端的方式來訓(xùn)練模型,只是作者在做詞嵌入時采用了單詞級別(Word-level)和字符級別(Character-level)兩種級別的編碼.He等[69]提出了一個字符級的編碼框架用于KBQA任務(wù)中,并針對學(xué)習(xí)過程中遇到的3個關(guān)鍵問題進行解決.首先對于同一個問題有多種解釋的問題,作者使用LSTM來對問題進行編碼.其次使用字符級的編碼方式來解決訓(xùn)練過程中可能出現(xiàn)的未登錄詞的問題.最后為了處理大規(guī)模知識庫中數(shù)以百萬計的實體和謂詞,作者沒有使用大的輸出層來直接預(yù)測實體和謂詞,而是將問題和KB的語義相似度作為結(jié)果輸出.
目前在知識庫問答中使用較多的標(biāo)準(zhǔn)數(shù)據(jù)集是SimpleQuestions和WebQuestions數(shù)據(jù)集[70].由于之前的問答數(shù)據(jù)集比較小且問題的類型比較局限,于是Bordes等[71]構(gòu)造了一個新的數(shù)據(jù)集SimpleQuestions.該數(shù)據(jù)集包含了10W多條問答對并被分成了訓(xùn)練集(79590條)、驗證集(10845條)、測試集(21687條),該數(shù)據(jù)集只包含簡單問題,也稱為single-relation問題.WebQuestions是由Berant在2013年提出的[23],其中訓(xùn)練集包含3782條問答對,測試集包含2037條問答對.由于SimpleQuestions和WebQuestions數(shù)據(jù)集中都是相對簡單的問題,于是在2016年Bao等[72]提出一種將多限制問題轉(zhuǎn)換為多限制查詢圖的KBQA方法,并提供了一個多限制問題的數(shù)據(jù)集ComplexQuestions,用以測評復(fù)雜問題的KBQA系統(tǒng)性能,其中包含了2100條問答對.對目前KBQA系統(tǒng)在不同數(shù)據(jù)集上的研究進展進行總結(jié),如表1所示.
表1 不同KBQA方法在標(biāo)準(zhǔn)數(shù)據(jù)集下的性能比較
對KBQA目前比較流行的3種方法進行總結(jié),如表2所示.
表2 KBQA方法優(yōu)缺點總結(jié)
基于模板的KBQA方法最大的優(yōu)點是查詢響應(yīng)速度快、準(zhǔn)確率高,只要能夠為自然語言問句編寫模板就能夠?qū)栴}進行回答.但是由于自然語言的靈活性和多樣性,一個問題可能有多種表述方式,若盡可能對所有問句進行匹配,則需要構(gòu)建龐大的模板庫,這樣不僅耗時耗力而且會降低查詢效率.基于語義解析的方法也能夠回答較為復(fù)雜的問題,但為了盡可能提高KBQA系統(tǒng)的表現(xiàn),需要人工編寫規(guī)則和標(biāo)注大量的邏輯表達并進行有監(jiān)督學(xué)習(xí),否則如果遇到?jīng)]有學(xué)習(xí)過的樣本時就會導(dǎo)致系統(tǒng)的表現(xiàn)很差.基于深度學(xué)習(xí)的方法其優(yōu)點是大大降低了人工成本,但對于簡單問題(單邊關(guān)系問題)表現(xiàn)較好,對于復(fù)雜問題不如前面兩種方法.而且對一些時序敏感性問題也無法進行很好的處理,例如對于問題“who is johnny cash′s first wife?”,最終答案可能是第2任妻子的名字,模型只關(guān)注到了wife而忽略了first的含義.基于深度學(xué)習(xí)的方法是如今的研究重點,克服了傳統(tǒng)知識庫問答中的很多弊端,但如何將其用以解決復(fù)雜問答和提高問答系統(tǒng)的最終效果仍需要做進一步研究.
基于知識庫的自動問答系統(tǒng)仍然存在著一些亟待解決的問題,接下來我們分別從以下幾個方面對KBQA所面臨的問題和挑戰(zhàn)進行總結(jié).
1)問題與知識的理解與匹配.由于自然語言問題具有靈活性和多樣性,而知識庫中的知識是以結(jié)構(gòu)化存儲的.因此將多樣化的自然語言問題和結(jié)構(gòu)化的知識庫之間進行語義匹配是知識庫問答所面臨的一個挑戰(zhàn).在語義解析的方法中,先要通過對問句進行語義理解和解析并將其轉(zhuǎn)換成為一種邏輯表達,進而將邏輯表達轉(zhuǎn)換為可在知識庫中執(zhí)行的查詢語句.但是在問句和知識庫中的表達之間存在差異,并不是從問句中得到的所有信息(實體、關(guān)系)都能和知識庫中的相關(guān)表達完全匹配,甚至對于一些概念在知識庫中可能存在多種表達方式.比如對于問句“Where was Johannes Messenius born?”,問題是問“Johannes Messenius”的出生地是哪里,在知識庫中對應(yīng)的關(guān)系表示是“people/person/place_of_birth”.關(guān)鍵字“where ……born”和“place_of_birth”雖然在字符層面沒有完全匹配,但其語義表達是相同的,因此在自然語言表達和知識庫中的知識表達之間存在語義鴻溝問題.怎么將兩者進行映射是解決該問題的關(guān)鍵.組合范疇語法(CCG)[21]通過定義詞典的方法使得該問題得到了一定程度的解決,但是其中又會涉及到詞典的構(gòu)建、數(shù)據(jù)的消歧等,特別是在知識庫非常龐大的情況下,如Freebase(2)https://developers.google.com/freebase知識庫包含19億個事實.隨著深度學(xué)習(xí)的發(fā)展,更多的開始使用深度學(xué)習(xí)的方法來解決該問題.通過將不同的符號表示都映射到一個低緯向量表示,進而通過計算向量之間的相似度來得到我們想要的答案.通過深度學(xué)習(xí)的方法在一定程度上解決了語義鴻溝的問題,但其在一些復(fù)雜邏輯推理問題上表現(xiàn)并不是很好.
2)復(fù)雜問題的推理.對于SimpleQuestions這種單關(guān)系問題(single-relation)的問答,只要找到問題在知識庫中所對應(yīng)的事實就可以對該問題進行回答,由此我們需要做實體識別、實體鏈接、關(guān)系預(yù)測、推理[76].對于邏輯比較復(fù)雜的問題,就可能無法僅僅通過一個事實來得到答案而需要一跳或多跳的查詢才能找到問題的答案.因此在知識庫問答過程中需要知識推理和預(yù)測才能對復(fù)雜問題進行回答.傳統(tǒng)的方法一般使用更復(fù)雜的語義匹配技術(shù)來匹配具有高表達能力的查詢,使其能夠?qū)?shù)據(jù)進行最高級、聚合等操作,而用戶無需了解其內(nèi)部表示.但是傳統(tǒng)的基于謂詞邏輯的推理策略存在覆蓋度低、推理速度慢的問題,如何利用表示學(xué)習(xí)自動學(xué)習(xí)推理規(guī)則是一個難點[77].也有學(xué)者對此做了系統(tǒng)的研究,如Yang et al.文獻[78]提出了一種用于學(xué)習(xí)參數(shù)以及知識庫推理邏輯規(guī)則結(jié)構(gòu)的端到端的可微方法NeuralLP(Neural Logic Programming).目前的基于表示學(xué)習(xí)的KBQA方法大多針對簡單問題和單邊關(guān)系問題,對于復(fù)雜問題效果并不理想.例如帶限制條件的問題(Who was vice president after kennedy died?),聚合問題(How many languages do they speak in spain?),最高級(Which of the following does Australia export the most?).
3)事實的選擇.解決簡單關(guān)系問答的核心是在知識庫中找到能夠與該問題相匹配的事實,該事實就包含了問題的答案.在知識庫中能夠唯一表示一個實體的并不是實體的名字而是實體ID,因此對于單關(guān)系問題我們只要確定了實體ID和關(guān)系對(entity-relation pairs),就相當(dāng)于找到了問題的答案.但在對候選事實進行選擇的時候可能會遇到如表3中的情況.經(jīng)過實體鏈接后我們發(fā)現(xiàn)最高得分的候選答案不止一個,其中候選實體的名字相同,也都具有相同的關(guān)系.那么怎樣將包含正確實體m.012_0k9的事實選擇出來而不是包含實體m.019xs5r的事實,目前并沒有很好的解決方法.Modammed et al.文獻[39]指出可以使用實體節(jié)點在知識庫中的度(in-degree)來代表該節(jié)點的流行度,認(rèn)為度比較高的節(jié)點比較常見,更可能是問題中所提到的實體.進而通過度對候選答案進行排序,排名Top-1的即為正確的事實.事實證明該方法在一定程度上解決了該問題,但還有相當(dāng)一部分情況無法通過該方法得到有效的解決.
表3 事實選擇示例
4)深度學(xué)習(xí)技術(shù)的局限.知識庫問答系統(tǒng)的基礎(chǔ)是自然語言處理,而隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,也使得知識庫問答取得了長足進步.但由于自然語言本身的復(fù)雜性和算法的局限性,使得問答系統(tǒng)的準(zhǔn)確度還遠不能滿足實際需求.例如利用深度學(xué)習(xí)技術(shù)在對問句“who is johnny cash′s first wife?”進行學(xué)習(xí)時,就很難學(xué)習(xí)到問句中first這種帶有簡單推理情況的含義而對最終的結(jié)果造成影響.又如目前深度學(xué)習(xí)應(yīng)用于知識庫問答系統(tǒng)主要是通過人工標(biāo)注數(shù)據(jù)并有監(jiān)督的學(xué)習(xí),這就會面臨問答系統(tǒng)對于新內(nèi)容、新知識無法處理的情況.由此我們要不斷的標(biāo)注新數(shù)據(jù)來應(yīng)對該情況的發(fā)生,但自然語言具有多樣性和復(fù)雜性,通過人工標(biāo)注的方法顯然是不能滿足實際需求的.因此,利用深度學(xué)習(xí)對新知識、新內(nèi)容能夠進行自主學(xué)習(xí)的無監(jiān)督學(xué)習(xí)方法,才是實現(xiàn)知識庫問答系統(tǒng)的關(guān)鍵技術(shù)難題.
本文首先對問答系統(tǒng)及其發(fā)展進行簡單介紹,通過對知識圖譜的介紹進而引出基于知識庫的問答系統(tǒng)(KBQA).隨后對知識庫問答系統(tǒng)的研究方法包括基于模板的方法、基于語義解析的方法和基于深度學(xué)習(xí)的方法進行了較為全面的介紹,并對常用數(shù)據(jù)集和最新研究進展進行了總結(jié).在最后部分我們對目前的知識庫問答系統(tǒng)在實現(xiàn)過程中可能面臨的問題與挑戰(zhàn)進行了闡述.通過對KBQA各類方法較為全面的介紹和總結(jié),為讀者能夠快速進入該領(lǐng)域展開研究提供幫助.