仇韞琦,王元卓,白 龍,尹芷儀,沈華偉,白 碩
(1.中國科學院計算技術研究所數(shù)據智能系統(tǒng)研究中心,北京 100190;2.中國科學院大學計算機科學與技術學院,北京 101408;3.中科大數(shù)據研究院,河南鄭州 450046;4.中國科學院計算技術研究所網絡數(shù)據科學與技術重點實驗室,北京 100190)
隨著人工智能技術的快速發(fā)展,人機交互的現(xiàn)實應用日益廣泛.知識庫問答(Knowledge Base Question Answering,KBQA)作為人機交互的重要支撐,成為工業(yè)界與學術界共同關注的研究熱點之一.相較于基于非結構化文本數(shù)據的問答(如文檔檢索、閱讀理解等),知識庫問答能借助知識庫中精度高、關聯(lián)性強的結構化知識,為給定的復雜事實型問句提供精確的語義理解或解析,并在知識庫中查詢推理來得到準確、簡短的答案.如問句“法國在第一次世界大戰(zhàn)時的總統(tǒng)是誰?”中需要對法國歷任總統(tǒng)的就任與卸任時間分別同第一次世界大戰(zhàn)的開始與結束時間進行數(shù)值比較,從而得到答案“雷蒙·普恩加萊”.
目前主要有兩類知識庫問答方法:一類基于語義解析(semantic parsing)[1~3],將自然語言問句按照特定文法(grammar)或者處理步驟映射為結構化的語義表征(meaning representation),再將其改寫為知識庫查詢從而獲得最終答案;另一類基于信息檢索(information retrieval)[4~6],首先通過實體鏈接,識別出問句中關心的實體作為主題實體(topic entity),并獲取以主題實體為中心的知識庫子圖,將子圖中的每個節(jié)點都視作候選答案,再學習問句和候選答案的向量表示,最后通過排序模型或分類模型對候選答案進行篩選,從而獲得最終答案.基于語義解析的方法以符號化表征表示問句的語義,基于信息檢索的方法以稠密向量表示問句的語義.相比基于信息檢索的方法,語義解析的方法能夠應對更多類型的問句,例如含有實體約束、類別約束、數(shù)值比較、數(shù)值排序等的問句,從而有更好的應用前景.
早期的知識庫問答系統(tǒng)以基于符號和規(guī)則的專家系統(tǒng)為主,具有代表性的如BASEBALL[7],將問句解析為規(guī)格列表(specification list),從而回答美國棒球比賽相關的問句.但是專家系統(tǒng)的核心是強依賴領域專家的規(guī)則,這導致其應用領域狹窄,可回答問句類型受限等問題.
近年來,隨著自然語言處理和機器學習技術的進步,這些問題逐步得到緩解,面向知識庫問答的語義解析技術也涌現(xiàn)出了大量高水平研究論文,在諸多評測數(shù)據集上顯示出良好的性能.盡管如此,現(xiàn)有方法依舊面臨了如下挑戰(zhàn).
(1)如何選擇合適的語義表征形式以表達問句的語義.語義解析的第一步是為問句選擇具體的語義表征形式,現(xiàn)有方法采用了多種不同形式的語義表征.有些語義表征的表達能力強,能覆蓋多數(shù)類型的自然語言問句,但結構復雜,構造困難;有些語義表征的結構緊湊,構造相對容易,但表達能力有所欠缺.因此,采用合適的語義表征才能平衡好表達完備性與構造便捷性,在覆蓋更多類型的問句的同時,降低模型構造該語義表征的難度.
(2)如何解析問句的復雜語義并輸出相應的語義表征.復雜問句的語義豐富,包含了知識庫中的多個關系,實體或類別約束,比較或排序等函數(shù)算子等.同時,相同的語義成分按照不同的順序或結構組合,表達的語義則大不相同.因此,準確地識別出問句包含的語義成分,并將不同的語義成分按照特定順序和結構組合,才能準確地反映問句的真實語義.
(3)如何應對特定領域中數(shù)據標注成本高昂、高質量數(shù)據匱乏的問題.現(xiàn)有方法主要是數(shù)據驅動,但是給問句標注相應的語義表征或最終答案需要標注人員熟悉知識庫的本體(ontology)和實例(instance),高昂的標注成本導致特定領域僅有少量標注數(shù)據,甚至沒有標注數(shù)據,從而讓問答模型訓練困難.因此,在標注樣本匱乏的情況下實現(xiàn)模型的有效訓練與泛化,是知識庫問答落地的必要條件.
現(xiàn)有的部分知識庫問答綜述[8~11]對語義表征的分析較少,對語義解析方法的介紹較籠統(tǒng),未能體現(xiàn)不同解析方式的特點與適用場景.為了更好地幫助領域內研究者,本文通過梳理面向知識庫問答的語義解析研究,總結和分析當前方法應對上述挑戰(zhàn)的途徑和發(fā)展趨勢,為實現(xiàn)高質量的知識庫問答系統(tǒng)提供可借鑒的思路.
知識庫是用于存儲結構化事實信息的計算機系統(tǒng).早期的知識庫以關系型數(shù)據庫(Relational Data-Base,RDB)為主,將現(xiàn)實世界的實體、實體本身的屬性、實體之間的聯(lián)系以表格形式的關系模型來表示.近年來,以語義網絡(semantic web)和知識圖譜(knowledge graph)為根基的圖數(shù)據庫(Graph DataBase,GDB)成為知識庫的研究主流,其中,實體、類別、屬性值作為節(jié)點,分別以特定的關系或屬性邊相連.圖1給出的圖數(shù)據庫實例展示了中國部分省份的相關信息,如三元組“(Jiangsu,capital,Nanjing)”表明江蘇的省會是南京.典型的知識庫包括WordNet[12],DBpedia[13],F(xiàn)reebase[14],Wikidata[15]等.
圖1 圖數(shù)據庫示意圖
基于知識庫中的結構化信息,知識庫問答系統(tǒng)能針對用戶給定的自然語言問句,給出簡潔、準確的回答.目前主要有基于語義解析和基于信息檢索這兩類知識庫問答方法.以問句“Which provinces border Jiangsu?”為例,基于語義解析的方法將該問句映射為結構化的語義表征,如λ演算(lambda calculus)表達式[16,17]λx.province(x)∧border(x,Jiangsu),再將其改寫為知識庫查詢得到答案,如SPARQL查詢[18]SELECT?xWHERE{Jiangsu border?x.?xtype province.};基于信息檢索的方法將圖1所示的以主題實體(即Jiangsu)為中心的知識庫子圖中的每個節(jié)點都視作候選答案,學習問句和候選答案的向量表示,再通過排序模型計算二者之間的相似度,或者通過分類模型對候選答案進行分類,從而得到答案.
早期的基于信息檢索的方法[4]以詞袋(bag-ofwords)模型表示問句,以候選答案及其關聯(lián)子圖內的實體和關系作為答案特征,并分別通過兩個線性映射得到問句和候選答案的向量表示,再以向量點積作為相似度得分.隨著深度學習的發(fā)展,基于信息檢索的方法廣泛使用神經網絡模型學習問句和候選答案的向量表示[5,19~23].例如,Dong等人[5]提出多列卷積神經網絡,從主題實體到候選答案的路徑、候選答案的鄰居子圖、候選答案的類別這3個方面考慮候選答案的特征,并為問句同樣學習了3個向量與之對應.Hao等人[20]通過長短時記憶網絡[24](Long Short-Term Memory,LSTM)獲得問句的表示,并利用交叉注意力(cross-attention)機制建模候選答案與問句之間的關聯(lián)性.Sun等人[22,23]結合外部文本(如維基百科)和知識庫子圖,構建問句相關的子圖,并利用圖神經網絡在該子圖上更新候選答案的向量表示.部分工作[6,25~28]引入多跳推理(multi-hop reasoning)機制,迭代更新問句或候選答案的向量表示,從而更好地應對多關系問句.例如,Miller等人[6]提出鍵值記憶網絡(key-value memory network),將問句關聯(lián)的三元組存入鍵值記憶網絡中,迭代計算存儲的三元組與問句的關聯(lián)性,并利用三元組信息更新問句的向量表示.
由此可見,基于信息檢索的方法無需研究者了解問句語義表征和知識庫查詢語言的細節(jié),較為便捷,但是可回答問句的類型受限,難以回答帶有實體約束或函數(shù)算子的問句.如問句“Which is the largest province that borders Jiangsu?”需要對江蘇省相鄰省份的面積進行排序操作.而基于語義解析的方法生成的語義表征可以包含問句中的約束和算子,并利用知識庫本身的查詢引擎獲得準確答案.本文主要介紹面向知識庫問答的語義解析方法,對信息檢索方法不做進一步展開.
語義解析是將自然語言句子映射為結構化語義表征,解析得到的語義表征通??梢栽谀硞€環(huán)境中被執(zhí)行并獲得相應的結果,如知識庫問答中查詢知識庫獲得問句的答案.除知識庫問答外,語義解析技術在其他多種人機交互場景中也得到廣泛應用,如機器人引導(robot instruction)、任務導向型對話(task-oriented dialogue)等.相較于這些場景,面向知識庫問答的語義解析要求輸出的語義表征中所有語義成分與知識庫中的信息對應.圖2給出了面向知識庫問答的語義解析的一般流程:首先為問句選擇具體的語義表征形式;然后根據該語義表征形式設計相應的語義解析方法,從而完成自然語言問句到其對應的語義表征的映射;最后將生成的問句語義表征改寫為知識庫查詢,從知識庫中獲取問句的最終答案.
圖2 面向知識庫問答的語義解析的一般流程
面向知識庫問答的語義解析方法按照解析方式可以分為兩類:枚舉排序和編碼解碼.如圖3所示,基于枚舉排序的方法是通過特定文法或者人工設計的處理步驟枚舉所有候選語義表征,再通過一個打分函數(shù)對枚舉的所有候選排序,篩選高分候選輸出.考慮到候選的搜索空間巨大,一部分工作采用迭代式枚舉排序,每輪迭代基于上一輪篩選得到的語義表征子式進行擴展,再進入下一輪迭代.最終輸出的語義表征被改寫為相應的知識庫查詢.相比枚舉排序這類方法依賴特定文法、人工規(guī)則或者模板,編碼解碼的方法采用基于編碼器-解碼器(encoder-decoder)架構的模型直接學習自然語言到語義表征的映射,首先利用編碼器得到問句的向量表示,再利用解碼器根據問句向量輸出符號化的語義表征.
圖3 面向知識庫問答的語義解析方法分類
在語義表征到知識庫查詢的改寫階段,語義表征中的成分需要與知識庫對應,即語義表征中的實體需要被鏈指到知識庫中的對應實體,語義表征中實體間的關系需要被映射到知識庫中對應實體間的關系.一部分工作在解析得到語義表征時已經完成與特定知識庫的對應,因此可直接將其改寫為知識庫查詢,這類語義表征被稱為有根基的語義表征(grounded meaning representation).相比直接生成有根基的語義表征,一部分工作認為先將問句解析為知識庫無關的通用表征能夠實現(xiàn)解析模型在不同知識庫上的遷移與復用,因為通用表征的實體和關系沒有與特定知識庫對應,所以稱之為無根基的語義表征(ungrounded meaning representation).無根基的語義表征在改寫為知識庫查詢時,往往通過結構修改、實體鏈指及關系映射等方式先獲得有根基的語義表征,再將其改寫為知識庫查詢.不同解析方式的實現(xiàn)方法和優(yōu)缺點將在第4節(jié)和第5節(jié)進一步展開介紹.
在數(shù)十年的發(fā)展中,知識庫問答領域涌現(xiàn)了大量的數(shù)據集.早期以關系型數(shù)據庫為基準知識庫的階段,被廣泛采用的問答數(shù)據集包括面向美國地理領域的GEO880(https://www.cs.utexas.edu/users/ml/nldata/geoquery.html)、面向工作領域的JOBS640(https://www.cs.utexas.edu/users/ml/nldata/jobquery.html)、面向旅行計劃領域的ATIS[29]等.近年來,以圖數(shù)據庫為基準知識庫的問答數(shù)據集成為知識庫問答領域的主流.表1列舉了近年來被廣泛采用的以圖數(shù)據庫為基準的英文知識庫問答數(shù)據集[2,25,30~44],分別介紹了各數(shù)據集名稱、采用的基準知識庫、數(shù)據集的樣例規(guī)模、是否含有需要多個三元組查詢或函數(shù)約束的復雜問句、每個問句的具體標注形式、樣例中問句的來源.
表1 以圖數(shù)據庫為基準知識庫的部分英文知識庫問答數(shù)據集
表1列舉了現(xiàn)有知識庫問答數(shù)據集主要采用的基準知識庫,分別為Freebase,DBpedia,Wikidata和Wikimovies[6],均為圖數(shù)據庫.從構建方式上,F(xiàn)reebase,DBpedia和Wikidata均為眾包模式構建,即允許用戶創(chuàng)建、修改、查詢,同時也采用信息抽取模型進行自動擴充(Freebase已于2015年停止更新,原數(shù)據遷移至Wikidata);而Wikimovies來源于已有電影數(shù)據庫Open Movie DataBase(OMDB).從面向領域上,F(xiàn)reebase,DBpedia和Wikidata為通用領域,即包含多個特定領域的事實信息;而Wikimovies僅面向電影領域.從數(shù)據規(guī)模上,F(xiàn)reebase包含超過4 600萬個實體和5 323種關系,共計31億個三元組;DBpedia的最新發(fā)布版本(2016-10版)包含600萬個實體和9億個三元組;當前Wikidata包含超過9 000萬個實體和超過9 000種關系,共計超過100億個三元組;Wikimovies為小規(guī)模知識庫,包含43 234個實體和9種關系,共計13萬個三元組.
從表1可以看出,知識庫問答數(shù)據集的構造方法主要分兩種:(1)先有問句,再有答案,即通過人工撰寫或者現(xiàn)有網站獲取真實的自然語言問句,再通過人工標注獲得問句的最終答案或問句相應的知識庫查詢[2,30~35];(2)先有答案,再有問句,即先從知識庫中構造出語義表征,再通過預定義模板或規(guī)則將其轉變?yōu)槟0鍐柧?,考慮到這些模板問句表述單一且可能存在語法錯誤,部分工作再通過眾包,將模板問句復述為具有相同含義且表述更自然的問句[25,36~44].這兩種構造方法中,前者需要標注人員熟悉基準知識庫的本體概念與具體實例,在以大規(guī)模知識庫為基準時,因實體和關系數(shù)量龐大,標注難度較高,且收集來的部分問句可能無法用知識庫中的事實信息來回答;后者需要構造合適的語義表征,從而才能生成有實際意義的問句,同時需要標注人員提供盡可能多的表述方式,防止單一的問句使得解析模型過擬合且缺乏泛化性.
除了構造方式,不同數(shù)據集的區(qū)別主要在樣例規(guī)模和是否含有復雜問句上.遵循現(xiàn)有工作[9~11]的定義,知識庫問答中的復雜問句指問句對應的知識庫查詢中含有多個知識庫關系、實體或類別約束、比較或排序等函數(shù)算子,例如問句“When’s the last time the Mets won the World Series?”需要對紐約大都市棒球隊奪冠的日期進行排序操作.與之相對的,簡單問句僅依賴單個三元組查詢,例如問句“What city was Alex Golfis born in?”只需要(Alex Golfis,place_of_birth,?a)組成的知識庫查詢即可回答.為了更全面地檢驗知識庫問答模型的能力,新近構造的數(shù)據集往往呈現(xiàn)出規(guī)模越來越大、復雜問句的種類越來越多、難度越來越高的趨勢.例如,Berant等人[2]指出Free917人工撰寫問句并標注的方式難以進一步擴展數(shù)據集規(guī)模,因此利用Google suggest API搜集事實性問句,并提交給眾包平臺直接標注問句的最終答案,從而得到數(shù)據集WebQuestions,數(shù)據規(guī)模超過Free917的5倍;Yih等人[32]刪去WebQuestions中無法利用Freebase回答的問句,并為每個問句提供了SPARQL標 注,形 成 數(shù) 據 集WebQuestionsSP;Bao等人[33]和Talmor等人[40]指出WebQuestionsSP中復雜問句偏少,因此按照不同約束類別添加了新的復雜問句,其中Bao等人[33]將復雜問句中的約束條件細化分類,并人工撰寫一部分問句作為補充,形成數(shù)據集Complex-Questions,而Talmor等人[40]則是在WebQuestionsSP標注的SPARQL中加入額外約束條件,再通過模板填充與人工復述得到更加復雜的問句,形成數(shù)據集Complex-WebQuestions.
表1展示了知識庫問答數(shù)據集為每個問句提供的具體標注形式.一部分數(shù)據集僅標注了問句的最終答案,例如WebQuestions;一部分數(shù)據集采用知識庫查詢語言SPARQL作為標注形式,并且標注的SPARQL可在對應的基準知識庫中查詢得到問句的最終答案,例如數(shù)據集WebQuestionsSP中,問句“When’s the last time the Mets won the World Series?”對應的SPARQL查詢標注是SELECT?xWHERE{New_York_Mets championships?x.?xend_date?sk0.}ORDER BY DESC(datetime(?sk0))LIMIT 1.少量數(shù)據集采用問句涉及的具體三元組作為標注形式,問句的最終答案為標注的三元組或三元組序列的尾實體,例如數(shù)據集SimpleQuestions中,問句“What city was Alex Golfis born in?”對應的三元組為(Alex Golfis,place_of_birth,Athens)(數(shù)據集的實際標注中,實體及關系均以其在知識庫中的ID形式呈現(xiàn),本文將ID替換為其具體名稱,以便理解).基于上述數(shù)據集衡量一個知識庫問答模型的效果時,通常以問句的最終答案作為評價標準,并且要將模型生成的問句語義表征改寫為基準知識庫可讀的查詢,獲取模型預測的答案.而數(shù)據集Free917以λ演算作為問句的標注形式,并且以問答模型解析得到的語義表征與標注的λ演算相比較,兩者完全對應上才視為解析正確,從而避免偽正例現(xiàn)象(即錯誤的語義表征得到正確的查詢結果)導致評價失準.
以問句的最終答案作為評價標準衡量一個知識庫問答模型的效果時,通??梢钥紤]以下指標:精確率(precision)、召回率(recall)、F1值、準確率(accuracy)等.對于一個給定問句q,其標準答案集合記為Aq,模型預測的答案集合記為Pq,則模型在給定問句上的精確率為模型預測答案集合中正確元素的占比,即
而模型在給定問句上的召回率為問句標準答案集合中被模型預測出來的元素的占比,即
同時考慮到精確率與召回率,模型在給定問句上的F1值的計算方式為
對模型在數(shù)據集中所有問句上的F1值求均值,可得到模型在當前數(shù)據集上的平均F1值(averageF1),又稱為宏F1值(macroF1).而準確率是指模型在數(shù)據集中所有問句中完全回答正確的問句的占比,只有當Aq=Pq時,問句q才被視為完全回答正確.相較于平均F1值,準確率這一指標更為嚴格,對模型要求更高.
在設計具體的語義解析模型前,研究者需要先確定采用何種語義表征作為模型的輸出以表示問句的語義.現(xiàn)有方法采用了多種不同形式的語義表征.有些語義表征的表達能力強,能覆蓋多數(shù)類型的自然語言問句,但結構復雜,構造困難;有些語義表征的結構緊湊,構造相對容易,但表達能力有所欠缺.選取合適的語義表征對提升解析模型的效果起著至關重要的作用,因此需要平衡好語義表征的表達完備性與構造便捷性,在覆蓋更多類型的問句的同時,降低模型構造該語義表征的難度.如表2所示,目前知識庫問答中常用的語義表征可分為3類,分別是λ演算及其衍生[16,17,45]、圖狀邏輯表達式[3,46~53]、程序語言[18,43,54~57].表2總結了這些常用語義表征的特點和相應的不足之處.下文分別介紹這三類語義表征,并對其進行了小結與討論.
表2 知識庫問答中常用的語義表征
λ演算[16]源自數(shù)理邏輯,是一套以變量綁定和替換的規(guī)則來研究函數(shù)如何抽象化定義、函數(shù)如何被施用以及遞歸的形式系統(tǒng).在此基礎上,有類型的λ演算[17](typed lambda calculus)在語義解析工作中得到廣泛使用,它主要包含3個基本類型,分別是實體、真值、實數(shù),并在基本類型之上構建函數(shù)類型,如將實體映射為真值的函數(shù).本文后續(xù)部分均以λ演算代指有類型的λ演算.以問句“Which is the largest province that borders Jiangsu?”為例,其λ演算表達式arg max(λx.province(x)∧border(x,Jiangsu),λx.size(x))中,Jiangsu就是實體;province和size均是函數(shù),前者將實體映射到真值上,表明這個實體的類別是否是省份,后者將實體映射到實數(shù)上,返回這個省份的面積.總的來說,在知識庫問答中常用的有類型的λ演算的組成元素包括:(1)常量,包括實體、實數(shù)、函數(shù);(2)邏輯聯(lián)結詞,即合?。ā模⑽鋈。ā牛⒎穸ǎé瑁?、蘊含(→);(3)量詞,包括全稱量詞(?)、存在量詞(),如?x.province(x)∧border(x,Jiangsu)為真,當且僅當至少存在一個省份與江蘇省相鄰;(4)λ表述(lambda expression),接收參數(shù)并返回結果值,如λx.border(x,Jiangsu)將實體映射為真值,表明輸入的實體是否與江蘇省相鄰;(5)額外的量詞,包括count,arg max,arg min等.
λ演算是圖靈完備的,具有很強的語義表達能力,但其本身較為繁瑣,增加了構造難度,因此在其基礎上改進,使得表述更緊湊的語義表征同樣得到廣泛使用,如λ-DCS[45](Lambda Dependencybased Compositional Semantics).λ-DCS隱去了λ演算中的變量,以上段問句為例,其λ-DCS表達式為arg max(type.province?border.Jiangsu,size).具體來說,λ-DCS主要包括2個組成成分,即一元邏輯表達式(unary)和二元邏輯表達式(binary).前者表示的是實體或實體集合,如Jiangsu,對應的是實體江蘇?。缓笳弑硎镜氖菍嶓w對集合,如border,對應的是接壤的實體對集合,其在λ演算中的對應表達式為λx.λy.border(x,y).不同的邏輯表達式可以通過連接(join)、交叉(intersection)、求并集(union)、否定(negation)、高階算子(high-order function)等操作符組合,例如一元邏輯表達式Jiangsu和二元邏輯表達式border通過連接操作可以得到一元邏輯表達式border.Jiangsu,對應與江蘇省相鄰的實體集合,其在λ演算中對應λx.border(x,Jiangsu).
隨著圖數(shù)據庫成為知識庫的主流,以圖為形式的邏輯表達式也成為知識庫問答中的主要語義表征.在圖狀邏輯表達式中,節(jié)點通常指實體、事件、數(shù)值等常量或變量,連邊代表節(jié)點之間的語義關系.相較于λ演算和λ-DCS,圖狀邏輯表達式有更強的可讀性,同時與問句本身的句法結構或者圖數(shù)據庫的拓撲結構具有一定的相似性,降低了構造難度.從問句本身的句法結構改造而來的圖狀邏輯表達式有語義圖[46](semantic graph)、語義查詢圖[47](semantic query graph)、抽象語義表征[48](Abstract Meaning Representation,AMR)等.從圖數(shù)據庫的子圖改造而來的圖狀邏輯表達式有查詢圖[3](query graph).
圖4為語義圖示例[49].其中圖4(a)為無根基的語義圖(ungrounded semantic graph),圖4(b)為有根基的語義圖(grounded semantic graph).前者是將問句通過組 合 范 疇 文 法[50,51](Combinatory Categorial Grammar,CCG)解析或者依存句法解析(dependency parsing)得到的λ演算表達式改造成圖的形式,節(jié)點有單詞、實體、事件、類別、函數(shù)等,連邊主要為依存關系,且圖上的節(jié)點與連邊沒有與特定知識庫對應;后者將前者的節(jié)點鏈指到知識庫中對應的實體,將實體節(jié)點間的連邊對應到知識庫中對應實體間的關系,并依據人工定義的操作進行結構修改,從而與特定知識庫對應.語義查詢圖與之類似,是將問句的依存句法解析樹通過預定義的操作改造而來.而抽象語義表征中,節(jié)點表示概念,連邊表示概念之間的語義角色關系.其概念和語義角色繼承并改進自PropBank[52],圖5給出了問句“Who is starring in Spanish movies produced by Benicio del Toro?”的抽象語義表征[53],其中“unknown”節(jié)點被視為答案節(jié)點.
圖4 問句“What is the name of the company which Disney acquired in 2006?”的語義圖[49]
圖5 問句“Who is starring in Spanish movies produced by Benicio del Toro?”的抽象語義表征[53]
由于問句的句法結構與知識庫子圖的拓撲結構依舊存在差異,在根據解析得到的語義表征生成具體知識庫查詢時需要先通過圖匹配算法找到與解析結果最相關的知識庫子圖.為了進一步降低構造難度,查詢圖直接在知識庫子圖上進行改造,得到的語義表征可以直接改寫為知識庫查詢.以圖6中的問句“Who first voiced Meg on Family Guy?”為例,查詢圖包括4類結點:常量節(jié)點(圓角矩形),即問句中出現(xiàn)的知識庫實體、類別、數(shù)值等,如圖6中的“Family Guy”和“Meg Griffin”;變量節(jié)點(圓形),包括未被鏈指到知識庫中的實體、事件、數(shù)值等節(jié)點,如圖6中的“?y”;λ變量(陰影圓形),表示問句的答案,即圖6中的“?a”;聚合函數(shù)(菱形),作用在實體集合或者單個實體的數(shù)值屬性上,如圖6中的“argmin”.節(jié)點之間的連邊均為知識庫中的對應關系或屬性.在查詢圖的常量節(jié)點中,其中一個節(jié)點作為根節(jié)點,對應問句的主題實體,而主題實體到答案節(jié)點的關系路徑稱為核心推理鏈(core inferential chain),其余常量節(jié)點和函數(shù)算子作為核心推理鏈上的分叉,對應問句中的約束條件.圖6所示的查詢圖以“Family Guy”為主題實體,(Family Guy,cast,?y,actor,?a)為核心推理鏈,(?y,from,argmin)和(?y,character,Meg Griffin)分別作為候選答案在配音工作開始時間和配音角色這兩個知識庫屬性或關系上的約束條件.
圖6 問句“Who first voiced Meg on Family Guy?”的查詢圖[3]
無論是λ演算、λ-DCS還是圖狀邏輯表達式,最終均要轉變?yōu)橹R庫查詢語言,因此一部分工作會直接采用查詢語言作為語義表征,如SPARQL[18].與之類似地,一部分工作會基于已有的或者自定義的解釋器(interpreter)改造或設計相應的程序語言式語義表征,典型的包括Prolog[54]和Lisp[55]等.
Prolog主要基于一階謂詞邏輯(first-order logic),主要是表達對象之間的關系,并基于此來計算給定的查詢.Prolog的輸入格式遵從霍恩子句(Horn clause)形式,包含頭部(head)和體部(body)兩部分,需要通過計算來返回輸入的真值或滿足輸入為真的文字.例如問句“Which provinces border Jiangsu?”對應的Prolog表 達 式 為?-province(X),border(X,Jiangsu),使該表達式為真值的X值即為問句的答案.同樣基于一階謂詞邏輯的語義表征FunQL[56](Functional Query Language)是不含變量(variable-free)的,這一點與λ-DCS類似.上述問句對應的FunQL表達式為answer(province(border(Jiangsu))).
Lisp以列表為主要數(shù)據結構,列表內為一列S-表達式(S-expression),每個S-表達式均為前綴表達式,以左括號開始,以右括號終止,括號內為預定義的函數(shù)和函數(shù)論元.例如問句“Which is the largest city in China?”對 應 的Lisp表 達 式 為[(Hop China!CityIn),(ArgmaxR1 Population)],其 中Hop和Argmax均為預定義的函數(shù),!表示反關系,(Hop China!CityIn)表示以實體China為尾實體,返回與其以CityIn關系相連的頭實體集合,作為R1,(ArgmaxR1 Population)表示對實體集合R1按照Population這一屬性值降序排序,返回值最大的實體.部分工作[43,57]借鑒Lisp,專門設計了函數(shù)-論元形式的語義表征,將自然語言問句的語義建模為一系列函數(shù)-論元表達式.
綜上所述,語義表征的表達完備性決定了可覆蓋問句類型的范圍,而構造便捷性影響了模型構造該語義表征的難易程度.在上述3類語義表征中,λ演算及其衍生和程序語言均具有較強的語義表達能力,其中函數(shù)-論元型的程序語言語義表征可通過更新自定義函數(shù)來增強其表達能力.而圖狀邏輯表達式受限于圖結構,表達完備性較弱于其他兩類語義表征,例如問句“Which province is larger,Jiangsu or Anhui?”所需的三目運算符size(Jiangsu)>size(Anhui)?Jiangsu:Anhui較難通過圖狀邏輯表達式呈現(xiàn).
雖然表達能力較弱,但圖狀邏輯表達式有更強的可讀性,并且與問句本身的句法結構或者圖數(shù)據庫的拓撲結構具有一定的相似性,可以在問句的句法解析結果或者知識庫子圖上直接改造,降低了語義表征的構造難度.而λ演算雖然表達能力強,但是表述較為繁瑣,增加了構造難度,因此λ-DCS在其基礎上改進,使得表述更緊湊.程序語言式語義表征通常以嵌套結構表示子式和語義成分之間的關系,與問句句法結構及知識庫拓撲結構差異較大,無法像圖狀邏輯表達式一樣利用問句結構或知識庫拓撲結構的信息,在生成嵌套結構時易出錯.
因此,平衡好表達完備性和構造便捷性,是選擇語義表征時需要考慮的主要問題,在覆蓋更多類型的問句的同時,降低模型構造該語義表征的難度,從而提升模型的解析效果.
在選定了語義表征的具體形式后,研究者設計相應的語義解析方法將非結構化的自然語言問句轉變?yōu)榻Y構化的語義表征.當前的語義解析方法可以分為基于枚舉排序的方法和基于編碼解碼的方法.本節(jié)主要介紹基于枚舉排序的方法.
如圖3所示,枚舉排序類的方法先枚舉所有可能的候選語義表征子式,再利用打分模型對枚舉的所有候選排序,并輸出高分候選.所有的候選均通過特定文法或者人工定義的處理步驟獲得,為了減少候選語義表征的搜索空間,部分工作采用迭代式枚舉排序,即束搜索(beam search),每輪迭代基于上一輪篩選得到的語義表征子式進行擴展,再進入下一輪迭代,從而完成對問句復雜語義的解析.在枚舉產生的語義表征上,一部分工作會直接構造與特定知識庫對應的有根基的語義表征;另一部分工作選擇與特定知識庫無關的無根基的語義表征,最后將其映射到特定知識庫上.表3將基于枚舉排序的語義解析方法按照枚舉方式進一步分類,即依賴特定文法[1,30,58~62]和自定義處理步驟[2,3,33,34,46,47,49,53,63~87]列 舉 了 每 種 方 式 涉 及 的 相 關 論文,概括介紹其主要特點.下文分別介紹這幾類方法,并總結了枚舉排序類方法的主要區(qū)別以及各自的優(yōu)缺點.
表3 基于枚舉排序的語義解析方法分類
早期的工作在枚舉語義表征階段依賴特定文法中的規(guī)則,包括問句詞語與語義表征字段之間的表述映射、語義表征子式的組合規(guī)則;在打分篩選階段主要利用基于離散特征的打分函數(shù).
如圖7所示,Zettlemoyer等人[1]在枚舉階段采用組合范疇文法,首先通過詞匯表將問句中的詞語映射到所有可能的范疇,再根據句法類別和組合規(guī)則進行組合,得到候選的語義表征.例如圖7的問句“What states border Texas?”中“states”既可能對應到名詞“州”,也可能對應到動詞“聲明”,其名詞范疇“N:λx.state(x)”中包含了該詞的句法類別“N”,即名詞,與語義表征λx.state(x),其動詞范疇“(SNP)/NP:λx.λy.state(x,y)”中句法類別“(SNP)/NP”包含了相應的組合規(guī)則,即“state”需要先向右結合一個名詞短語(NP),再向左結合一個名詞短語.正是由于一個單詞可能存在多個語義表征字段與之對應,再加上組合順序的不確定性,一個問句在組合范疇文法下可以枚舉出多個候選語義表征.Zettlemoyer等人[1]在打分階段采用對數(shù)線性函數(shù)對候選語義表征進行篩選.
圖7 組合范疇文法解析示意[1]
后續(xù)工作主要從3個角度進行改進:(1)嘗試詞匯表的不同獲取方式[30,58~60],從而提升詞匯表的擴展能力;(2)當前方法受限于文法規(guī)則,無法應對自然語言語序靈活多變、詞語省略的現(xiàn)象,部分工作[61]降低組合規(guī)則的限制;(3)當前方法從問句直接解析出有根基的λ演算的難度大,部分工作[62]引入無根基的λ演算,在語義成分的表述上接近于輸入問句,在結構和形式上接近于最終語義表征,從而降低解析難度.
早期依賴特定文法的方法在枚舉階段由于從數(shù)據集中歸納出表述映射與組合規(guī)則,泛化性受限.因此,近期的工作利用自定義的處理步驟枚舉候選語義表征,解析過程簡潔明了.這些工作可以進一步分為3類,分別為基于線圖(chart)的、基于轉移(transition)的和基于模板填充(template filling)的.
4.2.1 基于線圖的方法
基于線圖的方法在枚舉階段主要借助詞匯映射與自定義操作,先對問句中的詞語或短語進行詞匯映射,從映射后獲得的詞級別子式出發(fā),通過自定義操作進行組合,并利用打分函數(shù)進行篩選,迭代生成最終的語義表征.如圖8所示,Berant等人[2]以λ-DCS作為目標語義表征,首先利用構造好的詞匯映射表,將問句“Where was Obama born?”中的每個詞語映射到所有可能的一元或二元邏輯表達式,如將“Obama”映射為一元邏輯表達式“BarackObama”,表示姓名為巴拉克·奧巴馬的實體,將“born”映射到二元邏輯表達式“PeopleBornHere”,表示所有以出生地關系相連的實體對集合;再通過連接(join)、交叉(intersection)、橋接(bridging)等簡單操作對任意兩個不重復的相鄰子邏輯表達式進行兩兩組合,生成新的候選子式,如“BarackObama”和“PeopleBornHere”可通過連接操作得到一元邏輯表達“PeopleBornHere.BarackObama”,表示巴拉克·奧巴馬的出生地,同時利用對數(shù)線性函數(shù)對所有可能的組合進行打分篩選.
圖8 問句“Where was Obama born?”的解析流程示意[2]
后續(xù)工作主要從2個角度進行改進:(1)當前方法的打分函數(shù)未考慮問句與語義表征的結構差異,部分工作[63]改良打分函數(shù),利用人工模板將候選語義表征復述為自然語言問句,以復述問句與輸入問句的相似度為打分函數(shù)的特征;(2)為了減少當前方法按固定順序自底向上構建語義表征時產生的干擾項,部分工作[64]調整枚舉階段的子式組合順序,利用打分函數(shù)從當前候選中選擇子式置于線圖中,同左右兩邊的子式組合為新的子式.
4.2.2 基于轉移的方法
基于轉移的方法定義了迭代過程中的不同狀態(tài),狀態(tài)對應當前語義表征子式,當前狀態(tài)下可執(zhí)行的操作得到的所有候選語義表征通過打分篩選,形成新一輪的狀態(tài),從而完成狀態(tài)轉移.
部 分 方 法[46,47,49,53,65~68]采 用 語 義 分 析(semantic analysis)的思路,先利用特定文法、依存解析工具、自定義操作等獲取問句的中間形態(tài),如無根基的圖狀邏輯表達式,再通過實體鏈指、關系映射、圖匹配算法等操作,將中間形態(tài)對應到知識庫子圖上,得到最終語義表征,如有根基的圖狀邏輯表達式.因此,在這類工作中,可執(zhí)行的操作包括特定文法解析、依存解析、自定義操作、實體鏈指、關系映射、圖匹配等,由上述操作枚舉候選語義表征,打分函數(shù)進行篩選,從而實現(xiàn)狀態(tài)的轉移.例如,Reddy等人[49]首先利用依存解析為問句生成了無根基的λ演算,并將其改造為無根基的語義圖,如圖4(a)所示,在此基礎上,通過自定義的收縮(contract)操作與展開(expand)操作進一步改寫無根基的語義圖,從而減少結構差異;再通過實體鏈指、關系映射將無根基的語義圖中連邊上的標簽變成知識庫中的關系,類別結點變成實體類別,實體結點對應到知識庫中的實體,從而得到有根基的語義圖,如圖4(b)所示.為了在依存解析得到的無根基語義表征中減少冗余成分,Hu等人[67]先通過節(jié)點識別找出問句中的實體、類別、字符串,然后根據問句的依存解析結果對識別出的節(jié)點進行連結(connect)、合并(merge)、展開(expand)、折疊(fold)得到語義查詢圖,再通過圖匹配算法將其與知識庫子圖對應,并采用對數(shù)線性模型對其進行打分篩選.由于依存解析工具解析的結果與知識庫查詢存在較大差異,Sun等人[68]在依存句法的基礎上設計了骨架文法(skeleton grammar)對問句進行解析,再通過自定義操作構造出語義查詢圖.該文法的解析結果為一棵有向樹,其節(jié)點表示問句中的文本片段,連邊表示文本片段之間的依存關系.
考慮到問句的句法結構與知識庫子圖的拓撲結構存在差異,為了進一步降低構造難度,Yih等人[3]直接通過知識庫子圖構建查詢圖作為問句的語義表征,并定義了圖9所示的4種狀態(tài),分別是空圖φ、只有主題實體的單節(jié)點圖Se、含有核心推理鏈的圖Sp、含有額外約束條件的復雜查詢圖Sc,針對這4種狀態(tài),Yih等人[3]設計了4種動作,包括主題實體鏈接Ae、確定核心推理鏈Ap、添加聚合函數(shù)Aa和約束條件Ac.其中,Ae即利用實體鏈接模型識別出問句中的所有實體并鏈接到知識庫上,作為候選主題實體;Ap即在知識庫中枚舉以候選主題實體出發(fā)的一跳或者兩跳關系路徑,作為候選核心推理鏈,而核心推理鏈的末端節(jié)點作為候選答案;Ac與Aa即依據啟發(fā)式規(guī)則在候選核心推理鏈上添加約束條件或聚合函數(shù).在打分篩選階段,上述動作得到的候選均采用對數(shù)線性函數(shù)進行篩選.
圖9 基于狀態(tài)轉移的查詢圖生成流程示意[3]
以圖6所示問句“Who first voiced Meg on Family Guy?”為例,Yih等人[3]首先通過主題實體鏈接Ae識別出問句中的實體“Family Guy”和“Meg Griffin”,并以得分高的候選實體為主題實體,不妨假設“Family Guy”為主題實體,再通過枚舉在知識庫中以“Family Guy”為頭實體的一跳或者兩跳關系路徑作為候選核心推理鏈,如“Family Guy,cast,?y,actor,?a),(Family Guy,genre,?a)等,得分高的候選核心推理鏈進入下一輪處理,即添加聚合函數(shù)Aa和約束條件Ac.不妨以(Family Guy,cast,?y,actor,?a)例,問句中除了主題實體以外的其他實體作為實體約束,連向核心推理鏈上的變量節(jié)點或答案結點,因此(?y,character,Meg Griffin)作為候選答案在配音角色這個關系上的約束;同時由于問句中出現(xiàn)了“first”這一最高級詞匯,觸發(fā)了排序操作,因此(?y,from,argmin)作為候選答案在配音工作開始時間這個屬性上的約束.由此,圖6所示的查詢圖最終生成.
在迭代枚舉階段,后續(xù)工作主要從以下2個角度改進:(1)當前方法可處理問句約束類型較少,部分工作細化約束條件類型及其觸發(fā)規(guī)則[33];(2)當前方法限制核心推理鏈長度,無法回答多跳問句,部分工作調整處理步驟,設計不同的多跳推理機制,從而處理核心推理鏈更長的多跳關系問句[69,70].
在打分篩選階段,后續(xù)工作[70~76]對打分函數(shù)中問句和核心推理鏈的向量表示計算方式進行改進,從而抓住問句與核心推理鏈或查詢圖在整體或局部上的關聯(lián)性.
4.2.3 基于模板填充的方法
基于模板填充的方法根據問句的語義信息直接從知識庫中抽取三元組或子圖,填充到查詢模板中構成知識庫查詢.這類工作大多需要先選擇可能的查詢模板,再將候選實體和候選關系信息填充到特定模板中,最后用打分函數(shù)完成篩選.
不同方法的主要區(qū)別在于獲取查詢模板的方式上,部分方法從數(shù)據集中歸納總結,得到查詢模板.如Unger等人[77]先對問句進行詞性標注和詞匯映射,將映射后的所有詞匯輸入到已有解析工具Pythia[78],并基于總結出的人工規(guī)則將解析結果改寫為SPARQL模板;Bast等人[79]從數(shù)據集中人工歸納出圖10所示的3種查詢模板作為限定,其中e1和e2均為問句中出現(xiàn)的實體的占位符,m為變量占位符,t為答案占位符,r1,r2,r3為關系占位符,例如問句“What company did Henry Ford work for?”可以將主題實體“Henry Ford”相關聯(lián)的一跳關系填入第一個模板,如(Henry Ford,birthdate,t),兩跳關系填入第二個模板,如“(Henry Ford,employment,m,company,t)”,由于沒有出現(xiàn)額外實體或實體類別,因此第三個模板未得到填充,填充后得到的所有候選查詢通過邏輯回歸(logistic regression)和隨機森林(random forest)模型進行打分排序;Zheng等人[80]通過將多個數(shù)據集中的查詢圖的節(jié)點和連邊的標簽剔除,構造了12個結構化查詢模板,并根據輸入問句的句法解析結果,以深度模型篩選模板并進行模板填充.
圖10 預定義的3種模板[79]
后續(xù)工作[34,81~84]從數(shù)據集中自動構建問句模板與查詢模板的配對,當輸入新的問句時,通過計算輸入問句與已有的問句模板的相似度,如依存解析結果之間的最小樹編輯距離等,找到合適的查詢模板.而不同方法構造的問句模板在形式也不盡相同,例如,Abujabal等人[34,81]針對每個問句首先構造對應的查詢模板,再依據查詢模板,從問句的依存解析樹中抽象出骨架作為問句模板,具體地,Abujabal等人[34,81]首先通過實體鏈接找到包含問句所有實體和答案的最小知識庫子圖,將答案和其他未提及實體替換為變量,構造為候選查詢模板,再將問句中的短語和候選查詢模板上的語義成分構造為二部圖,通過求解整數(shù)線性規(guī)劃問題,刪除候選查詢模板上有歧義的或者多余的邊,并將所有的實體和關系替換為對應的占位符,從而得到查詢模板;再對問句的依存樹刪除無法跟剪枝后的查詢模板對應的成分,并將依存樹中的復合短語替換為詞性標簽,將能對應到查詢中的文本提及也替換為實體、關系、類別的標簽,從而得到問句模板.而Cui等人[84]直接將問答數(shù)據集中每一個樣例問句的實體替換為實體類別,構造出問句模板.相比之下,Cui等人[84]的模板更實例化,而Abujabal等人[34,81]的模板有更強的泛化性.
然而從數(shù)據集中歸納出的模板有限,部分方法采用模型生成結構更多樣的模板.例如Bhutani等人[85]針對 給 定 的 問 句,利 用 增 強 指 針 網 絡[40](augmented pointer networks)生成查詢模板,描述語義表征子式如何被連接和交叉操作組合為最終的語義表征,再通過Yih等人[3]的方法來生成語義表征子式從而填充相應的查詢模板.Ding等人[86]將標注數(shù)據中的查詢圖上的常量節(jié)點和部分謂詞關系替換為占位符得到查詢結構(query structure),并在查詢結構上進一步分解得到查詢子結構(query substructure),針對輸入問句,先用神經網絡模型判斷需要哪些查詢子結構,再判斷將查詢子結構按不同方式組合的查詢模板與輸入問句的匹配概率,最后將匹配得到的查詢模板實例化.Chen等人[87]定義了查詢模板的生成流程,包括向當前模板添加某一類節(jié)點、選擇當前模板中的某個節(jié)點、為新添加的節(jié)點和被選擇的節(jié)點之間添加某一類連邊,并利用一個基于編碼器-解碼器的神經網絡模型,從標注數(shù)據中學習如何迭代生成問句對應的查詢模板,同時學習另一個打分函數(shù)對模板實例化后的候選查詢進行排序篩選.
綜上所述,枚舉排序這一類方法在應用時主要區(qū)別在兩個方面:一個是特定文法、人工定義的處理步驟、或者模板庫的不同,導致每輪迭代能枚舉獲得的候選語義表征子式不同,對方法本身的完備性也有不同的影響;另一個是打分函數(shù)設計多樣,早期主要依賴以人工特征為輸入的對數(shù)線性函數(shù),隨著深度學習的不斷發(fā)展,卷積神經網絡[3]、循環(huán)神經網絡[71,72]、圖神經網絡[73]、預訓練語言模型[70]等深度學習模型也得到廣泛采用,打分函數(shù)考慮的特征信息愈發(fā)多樣.
枚舉排序這類方法的主要優(yōu)點包括:(1)可控性強,因為每輪迭代擴展得到的所有候選均符合規(guī)范,所以最終的語義表征是可執(zhí)行的;(2)可解釋性強,因為解析的過程有確定性的語義表征子式或中間狀態(tài),所以每一步均可追溯.但不同的技術路線也展現(xiàn)出不同的特點.例如,基于模板填充的方法利用模板嚴格限定了最終表征的結構,模板的覆蓋率決定了可回答問句類型的上限,使用固定模板庫的方法泛化性較差,但增量更新時只需更新模板庫,較其他方法更新組合規(guī)則、調整處理步驟會更容易;基于線圖的方法通過詞匯映射和組合規(guī)則約束生成子式,相比完全依賴文法規(guī)則的方法和使用固定模板庫的方法,能靈活地應對語義組合復雜的問句;基于轉移的方法在枚舉階段可調整處理步驟以覆蓋更多類型的問句,可干預性強.
本節(jié)主要介紹基于編碼解碼的語義解析方法.相比枚舉排序類方法依賴特定文法或自定義處理步驟,編碼解碼的方法采用基于編碼器-解碼器架構的模型直接學習自然語言到語義表征的映射,其中編碼器將自然語言問句轉變?yōu)榈途S稠密的向量表示,解碼器根據編碼器輸出的問句向量輸出符號化的語義表征.如表4所示,本文按照與知識庫交互的方式將現(xiàn)有方法分為兩類,分別是單次交互[43,88~103]與迭代交互[57,104~106].前者在測試階段解碼時不與知識庫進行交互,只將最后的完整語義表征在知識庫中執(zhí)行,這種方式需要在訓練階段以完整的語義表征為標注數(shù)據;后者在解碼階段與知識庫進行迭代交互,執(zhí)行子式獲取中間結果,并指導后續(xù)子式生成,這種方式適用于訓練階段只有最終答案作為標注的弱監(jiān)督(weak supervision)場景.
表4 基于編碼解碼的語義解析方法分類
早期的工作以神經機器翻譯的方式,將語義表征視為輸入問句在符號語義空間的譯文,只在輸出完整語義表征后與知識庫進行交互,如Jia等人[88]采用了基于注意力機制(attention mechanism)的編碼器-解碼器模型,其中編碼器與解碼器均采用長短時記憶網絡,并且在解碼階段利用了基于注意力的復制機制(copy mechanism)將輸入問句中的實體名等長尾字符串輸出.后續(xù)工作主要針對解碼器架構、輸出形式、解析流程這三方面進行了調整.
5.1.1 解碼器架構
部分工作考慮到以長短時記憶網絡為代表的傳統(tǒng)解碼器通常以序列化文本為輸出,難以捕捉語義表征的結構信息,因此對解碼器進行了適應性調整.例如,Dong等人[89]利用分層樹解碼器(hierarchical tree decoder),如圖11所示,以寬度優(yōu)先的方式,按層依次解碼嵌套子樹,其中非終止符<n>作為嵌套樹結構中的語義表征子式的占位符.解碼過程中,解碼器按層依次解碼,輸出</s>時當前層的子樹解碼完畢,并將當前層輸出的<n>替換為非終止符,即根據當時的解碼器的隱狀態(tài)向量解碼嵌套子樹,由此完成自頂向下,從左向右的語義解析過程.
圖11 基于分層樹解碼器的模型解析問句[89]
Cheng等人[90,91]采用解碼嵌套子樹的方式生成目標語義表征FunQL,其解碼器為棧-長短時記憶網絡(stack-LSTM),并且設置了緩沖區(qū)-棧(buffer-stack),其中緩沖區(qū)存放輸入的問句詞語,棧里存放生成的語義表征字段.圖12展示了問句“Who is Barack Obama’s eldest daughter?”的樹形式的FunQL語義表征,樹上的節(jié)點分為非終止符和終止符.其中,非終止符包括聚合函數(shù),如排序(argmax);終止符包括實體占位符、關系占位符.在解碼時,解碼器以深度優(yōu)先的方式迭代輸出語義表征字段,候選字段包括FunQL中的聚合函數(shù)、實體占位符、關系占位符、代表子樹完結的Reduce函數(shù).具體地,若解碼器輸出聚合函數(shù),則直接填入對應的函數(shù)名作為非終止節(jié)點;若輸出關系或實體的占位符,則需要進一步預測具體對應的知識庫關系或實體;若輸出Reduce函數(shù),則將堆中的狀態(tài)向量不斷彈出,直到得到一個非終止節(jié)點的狀態(tài)向量,再計算當前完成的子樹的向量表示用于當前時刻解碼器的狀態(tài)更新.考慮到語義表征中存在多種不同成分,李等人[92]將解碼器分為4個可遞歸調用的模塊,分別對應查詢語言中的不同成分.
圖12 問句“Who is Barack Obama's eldest daughter?”的語義表征[90]
5.1.2 輸出形式
為了在解碼階段引入針對語義表征的結構約束,保證生成的語義表征符合規(guī)范,部分工作不直接輸出語義表征,而是輸出與特定語義表征等價的派生序列,或者輸出生成特定語義表征所需要的動作序列.此時可通過先驗規(guī)則對解碼階段的候選字段或候選動作進行檢查篩選,從而過濾掉不符合規(guī)范的候選項.
Xiao等人[93]指出結構化語義表征可以等價轉變?yōu)榕缮鷺洌╠erivation tree),再通過前序遍歷可得到其派生序列(derivation sequence),因此以派生序列作為解碼器的目標輸出,并在解碼階段引入結構約束,硬性剔除不符合相關限制的候選項.考慮到先驗規(guī)則提供的結構約束可能存在紕漏,Xiao等人[94]將先驗規(guī)則提供的約束從直接保留或剔除變成先驗概率打分,避免先驗不夠準確從而將部分正確的候選項直接剔除的情況,此時,即使先驗概率打分較低,但如果解碼器給出的分數(shù)足夠高,解碼器也能輸出特定候選項.高等人[95]將查詢圖切分為不同的語義塊,將查詢圖生成過程形式化為語義塊派生序列,解碼器迭代輸出語義塊,從而生成完整的查詢圖.
為了讓解碼器的輸出形式更加緊湊,部分工作采用預定義的動作集合代替派生序列作為目標輸出.例如,Chen等人[96]定義了生成查詢圖的動作集合作為解碼器的輸出內容,具體包括添加變量節(jié)點、添加實體節(jié)點、添加類別節(jié)點、添加連邊、添加函數(shù)操作,解碼階段下一個動作的選擇與當前部分查詢圖強關聯(lián),不合規(guī)范的候選動作可以通過先驗約束過濾.Yin等人[97]將λ演算表示為抽象語法樹(abstract syntax tree),并通過抽象語法描述語言文法(abstract syntax description language grammar)[98]定義了生成抽象語法樹的動作集合,從而得到問句對應的抽象語法樹,其葉節(jié)點構成了最終語義表征,即λ演算,而候選動作的范圍受到抽象語法描述語言文法的限制.Cao等人[43]以程序語言KoPL為目標語義表征,該程序語言中的27種基本函數(shù)對應不同的動作,從而對多種知識元素進行操作并支持不同的查詢意圖.
5.1.3 解析流程
考慮到復雜問句對應的語義表征的語義成分豐富且結構復雜,將復雜問句直接解碼為語義表征的難度大.為了降低直接解析的難度,部分工作調整了解析流程.提出多階段的語義解析,將原有的端到端的解析流程拆分為多個子任務.
一類工作包含原始問句映射到中間形態(tài),中間形態(tài)映射到最終語義表征這兩個子任務,即先解碼出問句相關的中間形態(tài)(如無根基的語義表征、語義表征骨架等),再生成最終的語義表征.例如,Cheng等人[99]先用解碼器生成無根基的語義表征,再通過詞匯映射將其轉變?yōu)橛懈恼Z義表征.后續(xù)工作的重點在于如何選擇合適的中間形態(tài).例如Dong等人[100]以目標語義表征的粗粒度骨架作為中間形態(tài),先通過一組基于長短時記憶網絡的編碼器-解碼器生成目標語義表征的粗粒度骨架,再通過一組編碼器-解碼器,根據輸入問句和粗粒度骨架,生成目標語義表征.這是由于粗粒度的骨架忽視了一些具體細節(jié),如變量和實體名等,從而將高階語義信息和低階語義信息區(qū)分開,讓解碼器們能在不同的粒度去建模語義表征.相比無根基的語義表征和語義表征骨架這類結構化的中間形態(tài),Cao等人[101]利用半結構化的標準化問句(canonical question)作為中間形態(tài),第一階段通過編碼器-解碼器模型將自然語言問句復述為標準化問句,作為淺層語義解析,第二階段通過另一個編碼器-解碼器模型將標準化問句映射為結構化的語義表征.
另一類工作包含原始問句分解為子問句、子問句解析、子問句解析結果組合為最終表征這三個子任務.例如,Zhang等人[102]設計了三階段的語義解析:第一階段將輸入的復雜問句解碼為多個簡單子問句;第二階段根據原始問句與子問句的編碼,解碼出問句中所涉及的知識庫關系;第三階段基于原始問句、子問句、所有關系的編碼,解碼出最終的語義表征.Guo等人[103]設計了問句切分器,迭代地從問句中切出子片段,交由解析器將該片段映射為一個部分語義表征;最后,所有的中間解析結果被組合為最終的語義表征,從而降低模型解析復雜問句的難度.
為了更好地利用知識庫中的信息輔助解碼,部分工作在解析過程中與知識庫迭代交互.這類工作在解碼階段主要輸出生成特定語義表征所需要的動作序列,并通過先驗規(guī)則獲取解碼器當前符合規(guī)范的候選字段,但是和單次交互的工作相比,這部分工作能在與知識庫迭代交互的過程中執(zhí)行語義表征子式獲取中間結果,從而指導后續(xù)子式生成,并進一步縮減搜索空間.這類工作往往需要額外緩存區(qū)保存中間結果.例如Liang等人[104]提出神經符號機(Neural Symbolic Machine,NSM),在編碼器-解碼器模型的基礎上,增加了鍵值記憶模塊(key-variable memory)來保存實體鏈接結果以及輸出的語義解析子式在知識庫中執(zhí)行的結果,作為后續(xù)子式的論元使用,同時在解碼階段引入語義表征的字段合法性檢查,在每個時刻約束解碼器的詞典范圍,從而確保輸出的字段是符合規(guī)范且可執(zhí)行的語義表征.
考慮到當前工作定義的函數(shù)操作有限,可覆蓋問句類型受限,后續(xù)工作[57,105,106]主要拓展了解碼器可選擇的函數(shù)操作,從而能夠覆蓋更多類型的問句,有效應對問句組合語義的復雜性.其中,Ansari等人[105]定義了3種基本類型和5個函數(shù)操作用于生成程序語言式的語義表征:基本類型包括知識庫事實(即實體、關系、類別)、基本數(shù)據類型(即整數(shù)值、布爾值、補全符)、組合數(shù)據類型(即集合,例如實體集合);5個函數(shù)操作分別作用于不同類型的論元上,得到集合、布爾值或整數(shù)值.Saha等人[57]在此基礎上豐富了函數(shù)操作類型與基本類型,提出20個函數(shù)操作符,3大類、9小類基本類型.在解析過程中,模型以解碼器的隱藏狀態(tài)作為當前程序的狀態(tài),并根據當前程序狀態(tài)迭代地通過操作選擇器、論元變量選擇器、輸出變量生成器構造程序字段,執(zhí)行生成的程序子式,將中間結果寫入到內存中,最終生成完整的語義表征.
為了更好地利用知識庫的拓撲結構信息,Qiu等人[106]以查詢圖為語義表征,將查詢圖中的三元組按照關系連邊的類型分為5類,分別是知識庫基本事實(basic)、并集事實(union)、數(shù)值比較(filter)、數(shù)值排序(ordinal)、聚合(aggregation),并在解析階段采用層次化解碼,頂層解碼器基于編碼后的問句和當前查詢圖決定待生成三元組的類別,底層解碼器根據選定的類別,迭代解碼出相應的三元組,即選擇當前查詢中的已有節(jié)點,選擇一條連邊,添加一個新的節(jié)點.
綜上所述,編碼解碼的方法利用模型直接建模語義表征的生成過程,這類方法的優(yōu)點在于不依賴復雜的文法規(guī)則,候選語義表征的獲取相對靈活.但語義解析需要保證生成的語義表征符合規(guī)范,因此這類方法往往需要在解碼過程中加入多種不同約束或者先驗信息,如:引入非終止符改造標注的語義表征,形成嵌套樹結構,輔助解碼器深入理解語義表征的結構信息;引入字段檢查,為每一步解碼時提供前后一致且符合規(guī)范的候選字段.
同時,與知識庫的交互也影響語義解析的結果.單次交互的方法在測試階段只在生成最終語義表征后與知識庫交互一次,得到最終答案.雖然知識庫查詢開銷小,但是這類方法在每一步解碼時,需以知識庫的全部實體或關系作為候選詞表,在大規(guī)模知識庫下面臨搜索空間過大的問題,并且由于解碼出的實體和關系,實體和實體之間可能不相連,導致最終語義表征的執(zhí)行結果可能為空.而迭代交互的方法雖然知識庫查詢開銷大,但是能從知識庫中獲取子式的中間結果,指導后續(xù)子式生成,降低了搜索空間.從適用場景角度分析,單次交互的方法相對更適用于小規(guī)模知識庫問答,并且需要以完整的語義表征作為標注,雖然標注成本較高,但模型在訓練與測試階段均比迭代交互的方法更高效;而迭代交互的方法相對更適用于大規(guī)模知識庫問答,并且可以只以最終答案作為弱監(jiān)督訓練.
語義解析模型的訓練往往依賴大量的標注數(shù)據,其中一部分工作需要完整的問句-語義表征對作為監(jiān)督信號,另一部分工作允許只有問句的最終答案作為弱監(jiān)督信號.但無論是何種監(jiān)督方式,所需的數(shù)據標注都需要標注人員熟悉知識庫的本體和實例,大量數(shù)據必然帶來高昂的標注成本,如何在標注樣本匱乏的低資源場景下利用現(xiàn)有數(shù)據,有效訓練語義解析模型.也是近期受到關注的一個話題.本文在這一節(jié)分別從數(shù)據驅動和人機協(xié)同兩個方面介紹近期工作的嘗試.
當前數(shù)據驅動的方法主要分為3種:一種是通過問句擴充得到新的訓練樣例,即根據當前知識庫人工構造查詢,并通過歸納好的文法、模板或者半監(jiān)督(semisupervised)方式訓練好的問句生成模型生成自然語言問句,為語義解析模型提供訓練數(shù)據,或者利用無標注的問句提供給解析模型,利用人為設計的監(jiān)督信號更新解析模型參數(shù);第二種是通過重采樣技術調整數(shù)據集分布,為出現(xiàn)次數(shù)較少的數(shù)據采樣相似樣本,彌補樣本分布差異,從而緩解訓練集中樣本分布不均衡的現(xiàn)象;第三種是利用領域遷移技術,將其他領域的知識遷移至當前領域,從而完成低資源場景下語義解析模型的訓練.
6.1.1 問句擴充
Jia等人[88]從訓練集中歸納出同步上下文無關文法(synchronous context-free grammar),利用歸納出的文法生成新的訓練語料用于訓練解析模型.但這種歸納認為問句中的實體表述或短語表述,同問句的其他表述在語義上條件獨立,因此生成問句會出現(xiàn)搭配不一致等問題.為了獲得更流暢通順的問句,Wang等人[107]借助非專家人群的眾包協(xié)助,從模板問句復述出流暢自然的問句提供給解析模型.
隨著深度學習在文本生成領域的廣泛應用,后續(xù)工作[108~111]利用神經網絡訓練問句生成模型,并將問句生成與問句解析組合,從而能根據兩個任務各自的反饋為另一個任務提供監(jiān)督信號.例如,Ko?isky等人[108]設計了兩個基于長短時記憶網絡的編碼器-解碼器疊加,第一個的目標是根據輸入的語義表征解碼出自然語言問句,第二個的目標是根據自然語言問句解碼出語義表征,整個模型構成自編碼(autoencoders)框架,并且將有標注的問句-語義表征對和人工構造的語義表征同時喂給當前框架,針對有標注數(shù)據,第二個編碼器的輸入是真實問句,對應解碼器的目標輸出是標注的語義表征;針對人工構造的語義表征,第二個編碼器的輸入是第一個解碼器的輸出.為了增強問句生成與問句解析這兩個任務之間的關聯(lián)性,部分工作[101,109~111]引入對偶學習框架,將任務的對偶性建模為損失函數(shù)中的正則項或者對偶任務的獎勵信號.
不同于從人工構造的語義表征生成問句給解析模型訓練,Yin等人[97]直接利用無標注的問句提供給解析模型,并從兩個角度評價解析結果,分別是訓練好的問句生成模型能否從解析結果重構出原始問句,以及解析結果是否服從于語義表征的先驗分布,該先驗分布由基于長短時記憶網絡的語言模型建模.
6.1.2 問句重采樣
大數(shù)據集中的特定類型的樣本也會面臨低資源困境,即數(shù)據集中不同類型的問句存在分布差異,部分類型的樣本在訓練集中出現(xiàn)次數(shù)很少.
針對這一問題,部分工作[112~114]提出問句重采樣的方法,從數(shù)據集中找出與長尾樣本或域外樣本相似的數(shù)據訓練語義解析模型,而非直接在原始數(shù)據集上隨機采樣進行訓練,這是考慮到不同問句的特性差異與分布偏差導致很難用一個語義解析模型去適應不同類型的問句.例如,Lu等人[112]維護了一個記憶緩存,用于保存具有代表性的有標注數(shù)據,在遇到之前訓練沒見過的特定類型樣本時,語義解析器先從記憶緩存中找到相似的問句進行適應性訓練,直到解析模型可以擬合該域外樣本.為了在樣本量較少的問句類型上也能取得穩(wěn)定效果,Hua等人[113,114]利用元學習(meta learning)為輸入問句在數(shù)據集中尋找相似問句,針對性地改變數(shù)據集分布,調整模型參數(shù).
6.1.3 領域遷移
考慮到特定領域的問答訓練數(shù)據難以獲取,部分工作提出采用領域遷移技術,將其他領域的知識遷移至當前領域,從而完成低資源場景下語義解析模型的訓練.這類工作主要考慮到不同領域的問句僅在知識庫相關的詞匯(即實體、關系)上有區(qū)別,在問句主體結構上有共通之處,因此部分研究的關注點主要在如何遷移問句主體結構的知識.然而,雖然問句主體結構的知識可以遷移,但詞匯映射依舊是獲得最終語義表征的關鍵步驟,因此部分工作關注如何在低資源場景下完成知識庫相關詞匯的映射.
在遷移問句主體結構知識上,Herzig等人[115]提出將問句中與特定知識庫相關的詞匯替換為占位符,通過語義解析模型將替換后的問句解析為語義表征的抽象骨架,而語義解析模型可通過其他領域的知識庫問答數(shù)據集進行訓練,完成問句主體結構與語義表征抽象骨架之間映射關系的知識遷移.
在知識庫相關詞匯映射上,Herzig等人[115]將問句關聯(lián)的知識庫候選實體及候選關系填入到抽象骨架中對應的槽,再利用啟發(fā)式設計的打分函數(shù)進行篩選.為了更有效地完成詞匯映射表的擴充,Chen等人[116]提出基于圖的半監(jiān)督學習框架的詞匯映射學習方法,首先利用大量文本語料和詞匯映射資源來學習詞語之間的相似度,并構建用于圖傳播的圖,接著使用圖傳播算法從少量標注的詞匯中學習新的詞匯.
人機協(xié)同的方法[117~119]針對解析模型在解析過程中的疑惑,由標注人員提供適當?shù)姆答佇盘?,輔助問句解析或更新模型參數(shù),從而緩解低資源場景下缺乏有效標注的問題.這類工作主要關注兩點:第一點是樣本選擇,即如何找到最值得提交給標注人員的樣本,從而既能減少尋求協(xié)助的次數(shù),又能有效提升模型性能;第二點是指導方式,即選擇合適的指導方式,從而降低標注人員的指導成本.
在樣本選擇上,Iyer等人[117]和Abujabal等人[118]將在線上應用遇到的失敗案例提交;Ni等人[119]設計了打分函數(shù),綜合考慮了信息量、代表性、多樣性這三個指標對數(shù)據集中的樣本進行篩選.
在指導方式上,Iyer等人[117]將線上應用階段失敗的案例收集后交給有經驗的標注人員,直接提供完整的語義表征標注;Abujabal等人[118]先利用之前基于模板的方法[34]在小規(guī)模訓練語料上訓練得到一個問答模型,并維護一個問句-查詢模板庫,當有新的問句輸入時,先對比該問句與庫中問句的依存解析樹,若未能匹配,則以一個相似度度量函數(shù)從庫中檢索得到少量相似問句,并將對應的查詢模板均實例化后查詢知識庫獲得答案,將相似的問句與答案均返回給用戶,并將用戶滿意的查詢作為標注數(shù)據喂給模型進行新樣例的學習,更新問句-查詢模板庫;Ni等人[119]采用多輪迭代的方式,每一次迭代時,先訓練語義解析模型至收斂;然后將打分函數(shù)挑選出的樣本提交給標注人員,獲得對應語義表征的骨架,從而降低直接標注具體語義表征的成本.
低資源場景下的語義解析方法主要從數(shù)據驅動和人機協(xié)同這兩個方向進行探索.在數(shù)據驅動方向上,現(xiàn)有工作分別從問句擴充、問句重采樣以及領域遷移這三個角度出發(fā).在問句擴充的角度下,現(xiàn)有方法利用歸納出的文法或訓練出的問句生成模型,為解析模型提供更豐富且均衡的訓練數(shù)據;部分工作亦通過眾包的方式對人工構造的模板問句進行復述,從而獲取自然語言問句,與當前數(shù)據集構造方式類似;在問句重采樣的角度下,現(xiàn)有方法通過元學習和重采樣技術為當前樣例調整訓練集分布,從而緩解數(shù)據集中樣本分布不均衡,特定類型樣本面臨低資源困境的情況;在領域遷移的角度下,現(xiàn)有方法既要考慮到如何遷移不同領域間的共性知識,又要考慮如何低成本獲取不能遷移的領域特定知識.而人機協(xié)同的方法將最能提升模型性能的樣例提供給標注人員,根據反饋更新模型參數(shù)或模板庫.
這兩個方向各有優(yōu)勢,相比人機協(xié)同的方法,數(shù)據驅動的方法成本更低,例如通過在問句生成數(shù)據集上微調預訓練語言模型,能迅速為解析模型提供大量訓練樣本,但提供的樣本的質量不如人機協(xié)同的方法,效果提升可能沒有人機協(xié)同的方法顯著.因此,在模型初始表現(xiàn)較低時,可通過數(shù)據驅動的方法進行加強;在模型表現(xiàn)相對較高,更需要高質量數(shù)據或反饋時,可通過人機協(xié)同的方法進行加強.
通過上述比較分析可以看出,面向知識庫問答的語義解析已經取得一定進展,但仍然存在沒有克服的問題和值得深入研究的方向.
由于現(xiàn)實世界的知識模態(tài)多樣、結構各異且更新迅速,單一知識庫難以覆蓋用戶的信息需求,部分工作[19,22,23]借助開放文本輔助知識庫問答模型的決策,但依舊未能有效利用大量結構化、半結構化、非結構化知識以及多模態(tài)信息,如常識知識庫、社區(qū)問答庫、圖片、視頻等.將多模態(tài)異構的知識有效整合,并且以統(tǒng)一的語義表征進行知識表示,可以有效支撐在不同模態(tài)和結構的知識上進行協(xié)同查詢推理.
在實際場景中,用戶往往圍繞一個主題進行多次提問,在多輪問答場景中,單個問句常出現(xiàn)語義缺失,如實體指代不清、謂詞缺失等,導致單輪語義解析模型無法準確理解問句的語義.現(xiàn)有工作[120,121]主要利用對話歷史中已生成的語義表征的信息對后續(xù)問句的表征進行補全,因此如何根據對話狀態(tài)構建前后語義表征字段之間的共指關聯(lián)成為研究重點.而在關聯(lián)置信度低的情況下,需要探索如何根據缺失的語義信息生成相應問句提供給用戶,通過用戶反饋來明確查詢意圖.
近期的語義解析工作通常采用深度學習模型,但深度學習模型往往因為魯棒性不足而被詬病.近年來,在文本閱讀理解中,模型的魯棒性開始得到關注,主要對答案來源的文本加入噪音,從而增強問答模型的抗攻擊能力[122,123].而在知識庫問答領域,除了考慮知識庫本身的噪音信息外,還需要考慮問句中的噪音對語義解析的影響,主要包括一詞多義、拼寫錯誤、介詞短語引起的歧義、句式倒裝等.增強語義解析模型對問句和知識庫中的噪音的抗干擾能力是實現(xiàn)知識庫問答系統(tǒng)落地的關鍵.
當前的語義解析方法往往是在訓練數(shù)據較為充分的情況下進行訓練,區(qū)別主要在標注數(shù)據是完整的語義表征還是只有最終的答案.但知識庫問答系統(tǒng)落地時經常是面向特定領域的,缺乏標注數(shù)據.現(xiàn)有方法主要利用問句生成和重采樣進行數(shù)據增強和分布調整、或者利用領域遷移或人機協(xié)同引入額外知識和反饋信號,尚缺乏對預訓練-微調這一范式的探索,包括利用知識庫本身信息、通用語言知識、跨領域語義解析模型,進行融入知識的語言模型預訓練、低資源下目標領域的語義解析模型的預訓練等.
面向知識庫問答的語義解析技術將自然語言問句映射為計算機可讀的結構化語義表征,是實現(xiàn)人機交互的重要手段.這一技術當前主要面臨3個挑戰(zhàn),分別是如何選擇合適的語義表征形式以表達問句的語義,如何解析問句的復雜語義并輸出相應的語義表征,以及如何應對特定領域中數(shù)據標注成本高昂、高質量數(shù)據匱乏的問題.本文分析了知識庫問答中常用的語義表征的特點與不足,然后梳理現(xiàn)有方法并總結分析其如何應對問句的復雜語義,接著介紹了當前方法在標注數(shù)據匱乏的低資源場景下的嘗試,最后展望并討論了面向知識庫問答的語義解析的未來發(fā)展方向.