王 玥, 張日崇
(北京航空航天大學(xué) 計算機學(xué)院 大數(shù)據(jù)科學(xué)與腦機智能高精尖創(chuàng)新中心 北京 100191)
知識庫 (knowledge base, KB) 以大量復(fù)雜且結(jié)構(gòu)化的知識,存儲與描述著互聯(lián)網(wǎng)中的數(shù)據(jù),為機器提供了一種更加可讀的知識網(wǎng)絡(luò),助力其從語義角度理解用戶的搜索意圖,從海量數(shù)據(jù)中快速、準(zhǔn)確地獲得有價值的結(jié)果,并呈現(xiàn)與搜索結(jié)果關(guān)聯(lián)的整個知識體系,滿足信息時代人們更具深度與廣度的數(shù)據(jù)需求.知識庫中的知識條目(即事實, fact)被表示為一個形如(subject, relation, object)的三元組,其中 subject 和 object 表示實體,relation 描述 subject 和 object 間的語義關(guān)系.基于知識庫的問答 (QA-KB) 旨在對自然語言形式的查詢需求或問題進(jìn)行分析處理,并將來自于知識庫的三元組(或三元組集合)作為輸出返回給用戶.例如問題“紅樓夢的作者是誰?”對應(yīng)的答案三元組為“(紅樓夢, 作者,曹雪芹)”,而為了回答問題“紅樓夢的作者是哪個朝代的?”,需要對知識庫中的兩個三元組“(紅樓夢, 作者, 曹雪芹)”,“(曹雪芹, 所處時代, 清朝)”進(jìn)行整合.針對上述的兩個示例,前者被我們稱為“單跳問題”,后者被我們稱為“多跳問題”.
目前針對 QA-KB 的研究方法大致可以被分為兩種思路.第一種圍繞語義解析,旨在將自然語言問題通過語義解析方法轉(zhuǎn)化為邏輯表達(dá)式,再將其轉(zhuǎn)化為如SPARQL的查詢語言檢索知識庫得到答案[1-3].而另一種 QA-KB 思路不依賴邏輯表達(dá)式,圍繞深度學(xué)習(xí)模型直接致力于問題與三元組的匹配,是近幾年比較常見的做法[4-9].而這類 QA-KB 方法大多基于一個分步式的處理流程,即APA (alignment-prediction-answering)框架.它將整個問答過程拆分為實體識別、實體鏈接、關(guān)系預(yù)測等多個分離的任務(wù),各任務(wù)都有獨立的目標(biāo)與處理邏輯.最后,各任務(wù)都會選擇在當(dāng)前步驟下的局部最優(yōu)解,通過串聯(lián)得出最終答案,在決策本質(zhì)上屬于貪心思想的范疇,缺乏統(tǒng)一化的建模架構(gòu)與全局化的優(yōu)化策略.即使研究者們在上述每個任務(wù)上都取得了優(yōu)異的效果,但整個 QA-KB 系統(tǒng)的表現(xiàn)卻很少有明顯提升.另一方面,愈發(fā)復(fù)雜的監(jiān)督學(xué)習(xí)模型對訓(xùn)練數(shù)據(jù)的數(shù)量與質(zhì)量提出了較高要求,尤其在中文領(lǐng)域,開放的問答數(shù)據(jù)集較少,覆蓋面有限,模型泛化性能難以提升.
因此基于上述兩點考慮,我們提出了一種端到端的無監(jiān)督 QA-KB 模型,并使用動態(tài)規(guī)劃算法支撐模型的綜合決策與全局優(yōu)化,我們稱其為“DPQA”. 通過實驗,我們證明了 DPQA 在中文問答數(shù)據(jù)集上具有良好的建模效果與泛化能力,尤其在解決多跳問題上有突出表現(xiàn),為現(xiàn)有的問答方法框架提供了新的思路.
如果將知識庫中所有三元組組織起來,將(s,r,o)中s,o作為節(jié)點,r作為連接節(jié)點的有向邊,就得到了一張大規(guī)模的有向圖.由于知識庫中的實體并不都存在關(guān)聯(lián),所以此時的圖是非聯(lián)通的.我們?nèi)藶闃?gòu)造一個新節(jié)點N0,此節(jié)點不表征知識庫中任何一個實體,但在圖上與其他所有節(jié)點都能通過一條有向邊相連,那么此時就將知識庫中的所有知識信息表示成一張有向聯(lián)通圖.
設(shè)自然語言形式的問題為q=(w1,w2,…,wn),其中wi為問題所包含的詞語,n為詞語個數(shù),問題答案在圖上對應(yīng)的節(jié)點集合為N(q),那么整個QA-KB問題就被轉(zhuǎn)化為在給定序列q的條件下,從節(jié)點N0到N(q)的最佳路徑問題.我們選擇動態(tài)規(guī)劃方法解決最佳路徑問題.下面就對DPQA模型中涉及的狀態(tài)單元定義、狀態(tài)轉(zhuǎn)移以及整個算法流程進(jìn)行詳細(xì)描述.
表1 狀態(tài)四元組說明Tab.1 Description of state quad
隨著算法的運行,如果某狀態(tài)st滿足狀態(tài)轉(zhuǎn)移條件,則衍生新狀態(tài)st′=(j′,p′,N′,W′)加入到ST中,st′的各元素的取值也在表1中加以說明.狀態(tài)轉(zhuǎn)移條件與迭代打分函數(shù)f將在后文中詳述.
我們按當(dāng)前狀態(tài)是否是初始狀態(tài),分兩種情況分析:如果當(dāng)前狀態(tài)為初始狀態(tài),即還未從初始節(jié)點出發(fā)識別到任何實體,此時需要利用問題中的可用詞語構(gòu)建候選mention,并在M2E(mention-to-entities)反向映射表中查找可以匹配到的實體.M2E表的構(gòu)造方法比較簡單:遍歷知識庫中的所有實體,將每個實體N的名稱(以及“簡稱”、“英文名”等“別名”信息)記錄在一個表中,并添加一條從該名稱到實體N的映射,如果該名稱已在表中(存在同名實體),則將此映射追加到原有記錄之后;若當(dāng)前狀態(tài)不是初始狀態(tài),表示已經(jīng)在問題中識別到了實體,設(shè)其為s,此時需要在包含s的所有三元組(s,r,o)中抽取候選關(guān)系r,結(jié)合狀態(tài)目前可用詞語列表判斷是否滿足狀態(tài)轉(zhuǎn)移條件.
綜合上述兩種情況的分析,在給定當(dāng)前狀態(tài)st=(j,p,N,W)及W的前綴子序列Wi=(w1,w2,…,wi)時,我們對狀態(tài)轉(zhuǎn)移的規(guī)定如下:
1) 如果st為初始狀態(tài),則將Wi內(nèi)的詞語進(jìn)行拼接得到候選mentionMi,如果在反向映射表中存在Mi到實體N(Mi)的映射,則認(rèn)為滿足轉(zhuǎn)移條件,產(chǎn)生一個(如存在同名實體則產(chǎn)生多個)新狀態(tài)st′=(j+1,1,N(Mi),Wic),其中Wic為W刪除Wi得到的后綴子序列.
2) 如果st為非初始狀態(tài),則對于所有包含N的三元組(N,r,N′),如果similarity(r,Wi)>θ,則認(rèn)為滿足轉(zhuǎn)移條件,產(chǎn)生新狀態(tài)st′=(j+1,f(p,r,Wi),No,Wic).
以及將r與Wi間的相似度定義為向量間的余弦相似度
進(jìn)一步,我們設(shè)計了迭代打分函數(shù)
f(p,r,Wi)=p·(similarity(r,Wi)·0.5-θ+1).
圖1 狀態(tài)轉(zhuǎn)移過程示意Fig.1 Instance of state transition process
結(jié)合上文的分析結(jié)果與定義,DPQA 完整的算法流程如下所示.
輸出: 問題的答案在知識庫中對應(yīng)的實體Nq
forst=(j,p,N,W=(w1,…,wm))inSTdo
fori=1 tomdo
Wi=(w1,…,wi) ifj=-1 then
順序拼接Wi中所有詞語得到Mi
ifMiin M2E then
將st′=(0,1,N(Mi),(wi+1,…,wm)) 加入狀態(tài)集ST
end if
else
for (N,r,N′)inTdo
ifsimilarity(r,Wi)>θthen
將st′=(j+1,f(p,r,Wi),N′,(wi+1,…,wm)) 加入狀態(tài)集ST
end if
end for
end if
end for
end for
在算法最后,如果擁有最高得分的狀態(tài)存在多個,我們將根據(jù)狀態(tài)所在路徑上第一次跳轉(zhuǎn)時所使用的詞語長度排序,即在問題中識別到最長mention的狀態(tài)將作為最佳狀態(tài).如果此時最佳狀態(tài)仍有多個,則再根據(jù)“知名度”指標(biāo)對第一次跳轉(zhuǎn)到的實體進(jìn)行排序,即將mention鏈接到最高知名度的實體的狀態(tài)作為最終的輸出狀態(tài).在具體實現(xiàn)過程中,我們通過統(tǒng)計在知識庫中包含某個實體的三元組個數(shù),獲取該實體的“知名度”.
本節(jié)中,我們通過實驗證明 DPQA 模型的有效性.我們首先對實驗所使用的數(shù)據(jù)集、知識庫、對比方法、評測指標(biāo)以及實現(xiàn)細(xì)節(jié)加以描述,并對實驗結(jié)果進(jìn)行詳細(xì)分析.
我們使用了3個數(shù)據(jù)集進(jìn)行實驗,包括2個中文數(shù)據(jù)集及1個英文數(shù)據(jù)集.在中文數(shù)據(jù)集上,我們首先使用了NLPCC 2016在open domain Chinese question answering挑戰(zhàn)任務(wù)中發(fā)布的中文KBQA數(shù)據(jù)集(后文中用“NLPCC”標(biāo)識),包含14 609條訓(xùn)練數(shù)據(jù)及9 870條測試數(shù)據(jù).數(shù)據(jù)僅包含單跳問題.另外,由于目前領(lǐng)域內(nèi)尚缺乏開放的面向多跳問題的中文QA數(shù)據(jù)集,為了驗證模型在多跳問題上的有效性,我們基于NLPCC所包含的單跳問題,通過擴充問句內(nèi)容的方式,構(gòu)建了一個專注多跳問題的中文KBQA數(shù)據(jù)集(后文中用“NLPCC-MH”標(biāo)識)(https:∥github.com/wavewangyue/NLPCC-MH).NLPCC-MH數(shù)據(jù)集共包含4 000條訓(xùn)練數(shù)據(jù)與1 000條測試數(shù)據(jù),數(shù)據(jù)涵蓋2~3跳的問題.最后,在英文數(shù)據(jù)集上我們選擇了領(lǐng)域較為常用的WebQuestions[11],包含3 000條訓(xùn)練數(shù)據(jù)與2 032條測試數(shù)據(jù).在中文數(shù)據(jù)集上的實驗中我們使用北京航空航天大學(xué)ACT實驗室所構(gòu)建的開放領(lǐng)域中文知識庫(http:∥www.actkg.com/),共包含10 921 453個實體,13 522 532條關(guān)系以及51 339 398項事實.在英文數(shù)據(jù)集上的實驗使用Freebase[12]作為知識庫.
在對比方法上,我們尋找了以下3種方法進(jìn)行實驗:其一是Yih等人提出的QA方法[3],也是NLPCC 2016在當(dāng)次KBQA測評任務(wù)上的基準(zhǔn)方法(后文以“NLPCC-BASE”標(biāo)識);其二是Bao等人參考翻譯模型所實現(xiàn)的問答方法[13](后文中以“CYK”標(biāo)識);其三是我們在APA框架下所實現(xiàn)的監(jiān)督學(xué)習(xí)方法,基于BiLSTM-CRF訓(xùn)練實體識別模型[14],使用Seq2Seq作為關(guān)系預(yù)測模型[15](后文中以“Seq2Seq”標(biāo)識),在3個數(shù)據(jù)集上均參與比較.
本文采用F1均值作為各方法的評測指標(biāo),即模型在每條測試數(shù)據(jù)上所取得的F1的平均值.
經(jīng)過實驗對比,針對中文數(shù)據(jù)集NLPCC,NLPCC-BASE 方法取得的F1均值為52.5%,Seq2Seq方法為54.9%,而DPQA達(dá)到64.8%,超過其他兩種監(jiān)督學(xué)習(xí)方法,證明了DPQA模型良好的建模效果,以及在不依賴訓(xùn)練數(shù)據(jù)的情況下所取得的較強的泛化能力.在中文多跳數(shù)據(jù)集NLPCC-MH上,Seq2Seq方法與DPQA分別達(dá)到33.4%與64.8%,差距明顯.而在英文數(shù)據(jù)集WebQuestions上,CYK、Seq2Seq與DPQA方法的F1均值分別達(dá)到37.5%、47.4%與38.4%,DPQA沒有取得與監(jiān)督學(xué)習(xí)方法Seq2Seq比肩的效果.
通過對實驗結(jié)果的進(jìn)一步分析,我們將DPQA在中文數(shù)據(jù)集上的優(yōu)勢歸結(jié)為以下兩點:其一,DPQA對復(fù)雜實體名的識別效果更好,包括長實體如“清填漆戧金鳳紋蓮瓣式捧盒”,中英文混合實體如“華擎G41 M-VS2”等;其二,DPQA克服了訓(xùn)練數(shù)據(jù)不平衡問題的影響.當(dāng)某些關(guān)系在訓(xùn)練集中出現(xiàn)次數(shù)極少或極多時,有監(jiān)督的機器學(xué)習(xí)方法會更傾向于語義相近但在訓(xùn)練中出現(xiàn)次數(shù)更多的關(guān)系,甚至出現(xiàn)過擬合問題.而DPQA不依賴訓(xùn)練數(shù)據(jù),其在關(guān)系匹配上更為公平準(zhǔn)確.在多跳問題上,Seq2Seq方法預(yù)測出的關(guān)系序列仍不能保證準(zhǔn)確且完整,一半以上都存在對跳數(shù)的分割不準(zhǔn)確或?qū)π蛄兄心巢糠诸A(yù)測錯誤的情況.而DPQA在大多數(shù)情況都能規(guī)劃出一個完整準(zhǔn)確的路徑,即使問題中存在著多次語義關(guān)系的轉(zhuǎn)折.
另外,由于中英文在語序及語義表達(dá)等方面都有很大差異,建立在中文順序表達(dá)規(guī)則上的DPQA在WebQuestions就無法取得與監(jiān)督學(xué)習(xí)方法Seq2Seq比肩的效果,但也超過了監(jiān)督學(xué)習(xí)方法CYK.
為了具體分析DPQA的不足,我們在3個數(shù)據(jù)集上分別抽取了部分DPQA預(yù)測錯誤的數(shù)據(jù),人工觀察并分析出錯原因,分析結(jié)果如下:第一,部分實體出現(xiàn)在問句的末尾而不是開始,例如“who did the voice for Lola Bunny?”,而依賴中文順序表達(dá)習(xí)慣的 DPQA 未能對出現(xiàn)在實體之前的詞語合理利用,此類情況在中文數(shù)據(jù)集不明顯,但在英文數(shù)據(jù)集上較為突出;第二,由于問句中包含的語義關(guān)系表達(dá)不明顯甚至較隱晦,導(dǎo)致未經(jīng)訓(xùn)練的 DPQA 很難將這種語義關(guān)系與知識庫中的關(guān)系名聯(lián)系起來.例如問題“韋德是哪的人?”中,“是哪的人”與關(guān)系“出生地”的相似度不高;第三,部分問題中的mention會鏈接到多個同名實體上,例如問題“清涼寺是在什么地理位置?”中,預(yù)測實體為“清涼寺(南京市清涼寺)”而正確實體為“清涼寺(河北省清涼寺)”.此類錯誤大多由于同名實體在知識庫中的表現(xiàn)相似時不易區(qū)分,且問題本身也缺乏更明確的指代信息.
近年來的QA-KB方法大多在APA框架下進(jìn)行,本質(zhì)上是用貪心思想作決策,且嚴(yán)重依賴訓(xùn)練數(shù)據(jù)質(zhì)量.本文為探索問答方法的新思路,提出了基于動態(tài)規(guī)劃、無監(jiān)督且端到端的DPQA模型.經(jīng)過實驗,DPQA在問答數(shù)據(jù)集上均取得良好效果,特別是在中文多跳問題上表現(xiàn)突出,給開放領(lǐng)域問答系統(tǒng)的實現(xiàn)提供了簡單可行的方案.