張?zhí)旌? 李婷婷, 張永剛
(吉林大學 計算機科學與技術學院, 符號計算與知識工程教育部重點實驗室, 長春 130012)
知識圖譜(knowledge graph, KB)作為一種結構化的語義知識庫, 以其靈活的組成結構和豐富的語義表示能力, 已成為人工智能應用的重要基礎. 典型的知識圖譜是一個以實體作為節(jié)點, 實體間關系作為邊的圖結構知識庫. 目前已有一些成熟的大規(guī)模知識圖譜, 如Wikidata和DBPedia[1], 在中文領域也有如CN-DBPedia[2]的大規(guī)模知識圖譜. 知識圖譜規(guī)模的擴大為知識圖譜的應用奠定了基礎, 知識圖譜問答(knowledge-based question answering)是知識圖譜的重要應用方向之一[3]. 知識圖譜問答方法旨在對用戶輸入的自然語言問題進行分析處理與理解, 并在知識圖譜上展開推理和搜索, 將搜索結果作為答案輸出給用戶, 答案通常為知識圖譜中的一個或多個實體節(jié)點.
目前主流的知識圖譜問答方法分為兩類: 基于語義解析方法和基于答案排序方法. 基于語義解析方法的主要思路是采用語義分析器將自然語言問題轉(zhuǎn)化為可執(zhí)行語義表示, 通過語義表示完成知識圖譜查詢. 語義表示通常是一種邏輯表達式, 典型方法有λ-DCS[4]、 帶類型的lambda表達式[5]等, 這類方法通常需要人工標注的“問題-邏輯表達式”數(shù)據(jù), 成本巨大. 隨著知識圖譜規(guī)模的迅速擴大, 該方法的發(fā)展受到限制. 基于答案排序方法是將問答任務視為一個信息檢索任務, 對知識庫中的候選實體進行評分和排序, 選擇得分最高的實體或?qū)嶓w集合作為答案輸出. Yao等[6]基于人工設計的特征向量, 訓練二分類器完成答案的評分和篩選. 隨著深度學習的發(fā)展, 主流的研究方法開始采用神經(jīng)網(wǎng)絡對自然語言問題和知識圖譜進行表示學習, 基于學習到的向量表示完成對候選答案的篩選和評分. Bordes等[7]提出了學習問題和實體在低維空間的嵌入向量, 并計算向量相似度完成對候選答案的打分; Saxena等[8]基于知識圖譜嵌入方法, 使句向量嵌入模型學習知識圖譜嵌入中的關系向量表示, 并采用知識圖譜嵌入模型的評分函數(shù)對候選答案進行評分, 有效緩解了知識圖譜稀疏性帶來的性能損失. 知識圖譜嵌入是目前熱門的研究方向, 隨著深度學習的發(fā)展, 近年來不斷提出新的嵌入模型. Bordes等[9]提出了一種平移距離模型TransE, 學習實體和關系在低維空間中的平移不變性, 并在一些相關問題上證明了知識圖譜嵌入的有效性; Nickel等[10]提出了RESCAL語義評分模型, 模型對三元組事實的潛在語義進行建模, 從語義角度完成知識圖譜的嵌入表示.
當前主流的基于知識圖譜嵌入的問答方法僅使用單一的評分機制, 對候選實體進行評分和排序后, 將得分最高的單一實體作為答案輸出, 在面對多答案實體時可能會出現(xiàn)遺漏答案的情況. 這類方法雖然可以利用知識圖譜嵌入時學習到的語義信息, 但沒有顯式地構建知識圖譜查詢. 本文提出一種改進的基于知識圖譜嵌入的多跳中文知識問答方法MHCKBQA, 在答案評分部分引入關系鏈路評分機制, 在得到最優(yōu)答案實體時輸出相同關系鏈路上的所有候選實體, 從而有效解決了答案遺漏的問題, 并提升了基于知識圖譜嵌入問答方法的魯棒性. 在問題嵌入模型中, 本文針對中文知識問答領域改進句向量的嵌入方式, 使模型能更好地理解中文語義.
常見的知識圖譜問答任務分為單跳問題和多跳問題. 單跳問題是指應用知識庫中單條事實即可進行回答的問題; 多跳問題是指需要兩條或兩條以上事實共同作為回答依據(jù)的問題. 圖1為幾種問題的區(qū)別. 目前的一些研究方法在單跳問題的回答上準確率已較高, 但在多跳問題的問答上仍存在許多困難和挑戰(zhàn)[11], 這些挑戰(zhàn)主要為: 1) 由于多跳問題相對于單跳問題具有更高的語義復雜度, 因此模型難以從問題句子中準確地分離出多重語義關系; 2) 真實的知識圖譜具有稀疏性, 經(jīng)常會缺失某些實體間的關系, 以圖1中的問題3為例, 若(〈魯迅〉,中文名,〈周樹人〉)這一事實的關系鏈接在知識庫中缺失, 則現(xiàn)有方法很難搜索到真實答案. 目前的一些知識圖譜嵌入方法能有效地捕獲知識庫中潛在的語義關系, 且對缺失的鏈路具有較好的預測能力, 所以本文以知識圖譜嵌入模型為主體提出一種多跳中文知識問答方法MHCKBQA.
圖1 單跳和多跳知識問答示例Fig.1 Examples of single-hop and multi-hop knowledge question answering
本文對知識圖譜定義為: 給定實體集合E與關系集合R, 一個知識圖譜KG可表示為一個三元組集合, 即KG?E×R×E.對于KG中任意三元組t, 可表示為一個有序?qū)?h,r,t), 其中h,t∈E且r∈R, 通常稱h為頭實體,t為尾實體. 在此基礎上, 將MHCKBQA的任務定義為: 已知知識圖譜KG?E×R×E, 給定一個自然語言問題qi與該問題的中心實體h, 其中h∈E, 問答方法的作用是給出答案實體集合Ai?E, 對于?a∈Ai是問題qi合理的答案實體.
MHCKBQA的整體流程可分為兩部分, 如圖2所示, 分別為基于知識圖譜嵌入的答案評分部分和鏈路評分及答案篩選部分. 基于知識圖譜嵌入的多跳中文知識問答方法流程步驟如下:
1) 對于輸入問題q及其頭實體hq, 通過查詢預訓練得到的嵌入向量表得到ehq;
2) 通過句向量嵌入模型計算得到問題q的嵌入向量wq;
3) 對于所有候選答案a計算知識圖譜嵌入評分
其中ea可通過查詢嵌入向量表獲得;
4) 對進一步縮小范圍的候選答案a, 計算鏈路評分SR(R(hq,a),q);
5) 通過符合評分選出最優(yōu)答案實體
6) 基于abest構建查詢鏈路, 得到答案集合A, 根據(jù)hq和abest是否連通有如下查詢方法:
①hq和abest連通時,A=SPARQL(h,R(hq,abest));
②hq和abest不連通時,A={abest};
7) 將集合A作為方法計算結果返回.
圖2 MHCKBQA整體流程Fig.2 Overall process of multi-hop Chinese knowledge graph question answering
1.1.1 知識圖譜嵌入
典型的知識圖譜嵌入方法分為兩部分: 一是定義實體和關系在向量空間(通常為d或d)中的表示形式; 二是給出在該表示形式下一個三元組的評分函數(shù)ftriple(h,r,t).評分函數(shù)的主要作用是評價三元組的合理性, 在該前提下, 嵌入模型可根據(jù)評分函數(shù)的類型分為距離轉(zhuǎn)移模型和語義評分模型, 前者將事實的合理性視為向量間的距離, 后者是評價實體間的潛在語義關系.
在基于知識圖譜嵌入的答案評分中, 將評分過程視為一個鏈路預測問題, 希望通過問題嵌入模塊去學習問題句子中包含的多跳關系語義, 將“問題-答案”合理性的評價與嵌入模型中的三元組評分相結合.文獻[12]研究表明, ComplEx方法對復雜的潛在語義關系具有優(yōu)秀的建模能力, 且模型預訓練算法的時間復雜度較低(O(d)), 適合大規(guī)模知識圖譜的嵌入, 所以本文選用ComplEx嵌入方法.
1.1.2 ComplEx嵌入方法
ComplEx嵌入方法將實數(shù)空間中的語義嵌入擴展到虛數(shù)空間中, 給定一個頭實體與尾實體h,t∈E和關系r∈R, ComplEx根據(jù)評分函數(shù)(1)學習虛數(shù)空間中的向量表示eh,et,wr∈d.在嵌入模型中, 所有被認為合理的三元組有Φ(r,s,t)>0, 所有被認為不合理的三元組有Φ(r,s,t)<0, 且
(1)
答案選擇模塊中占主導地位的是基于知識圖譜嵌入的答案評分, 本文采用一個改進問題嵌入模型得到句向量wq, 結合相關實體的嵌入向量ehq和ea, 通過評分函數(shù)計算得到該部分的答案評分, 該評分函數(shù)由基于ComplEx方法的評分函數(shù)改進而得.
1.2.1 問題嵌入
問題嵌入模塊的主要任務是將自然語言組成的問題句子q嵌入到一個復數(shù)空間中, 得到一個句向量wq∈d.在一些英文問答方法中, 獲得句向量的典型方法是在BERT[13]預訓練語言模型的基礎上針對下游任務進行微調(diào). BERT預訓練模型是將文本作為一個標記序列進行處理, 以響應最小的文本單元, 英文的文本單元是以空格區(qū)分的單詞, 中文的文本單元是單個漢字字符. 但從語言學角度, 中文中詞粒度的文本單元會攜帶比字粒度更多的語義信息, BERT的處理方式顯然會損失句子中的語義信息. 在本文方法中, 采用中文預訓練語言模型ZEN[14]對問句進行處理, 該模型融入了N-gram詞匯表進行表示增強, 更大程度地保留了中文句子的語義信息. 問題嵌入模型的整體結構如圖3所示.
圖3 基于ZEN的問題嵌入Fig.3 Question embedding based on ZEN
由圖3可見, 網(wǎng)絡利用ZEN模型將問題q嵌入到一個768維的向量中, 再經(jīng)過4個全連接層, 最后映射到復數(shù)空間d中. 學習的根據(jù)是利用ComplEx中的語義評分函數(shù), 用句向量wq近似擬合關系向量wr, 得到多跳關系的復合語義表征.給定一個問題q及其頭實體hq, 有參考答案集合Cq, 網(wǎng)絡基于
(2)
(3)
定義的標準進行學習, 損失函數(shù)為交叉熵損失函數(shù).
1.2.2 評分函數(shù)
在進行答案推理時, 通過問題嵌入得到句向量wq, 同時已知頭實體和候選答案實體的嵌入向量ehq和ea, 模型可以對每個候選答案計算出答案評分Sa(a,h,q), 計算公式為
(4)
式(4)中答案評分函數(shù)和三元組評分函數(shù)在形式上一致, 這是模型能充分利用到知識圖譜嵌入中無監(jiān)督信息的主要原因.為縮減候選答案范圍, 可給出評分閾值Sth, 僅選取評分高于閾值的答案作為鏈路評分的候選答案集合.
與構建查詢方法不同, 基于知識圖譜嵌入方法得到的答案不依賴于查詢路徑, 該方法的優(yōu)點是對于稀疏的知識圖譜具有鏈路預測能力, 在查詢路徑缺失的情況下仍然能使正確答案具有較高的得分, 缺點是模型的魯棒性較差. 該缺點主要體現(xiàn)在以下兩方面:
1) 知識圖譜問答的優(yōu)勢之一是知識圖譜中存在的關系路徑具有更高的可信度與可解釋性, 單純地利用知識圖譜嵌入進行答案評分會弱化該優(yōu)勢;
2) 真實答案集合通常由同一條查詢鏈路上的多個實體組合而成, 知識圖譜嵌入評分很難得到準確的答案集合.
為克服上述缺點, 本文在基于知識圖譜嵌入評分的基礎上引入鏈路評分機制, 以增強該方法的魯棒性.
1.3.1 鏈路評分
問題q的頭實體hq和答案實體a之間的查詢鏈路R(hq,a)由一個關系序列(r1,r2,…,rn)組成, 為度量關系與問題之間的相關性, 本文基于
(5)
構建一個網(wǎng)絡學習相關性的度量評分Sr(ri,q), 并以此給出鏈路評分SR(R(hq,a),q).其中wri為知識圖譜嵌入中的關系向量, ZEN(·)為中文預訓練語言模型,σ(·)為激活函數(shù), 在本文方法中為Sigmoid函數(shù). 由此可針對頭實體hq和答案實體a之間是否連通這兩種不同情況給出不同鏈路評分函數(shù).
當頭實體hq和答案實體a之間存在最優(yōu)連通鏈路R(hq,a)時, 鏈路評分函數(shù)為
(6)
當頭實體hq和答案實體a之間不存在連通鏈路時, 鏈路評分函數(shù)為
(7)
其中φa是指單跳可達答案實體a的關系集合.式(6)的意義是給可能存在鏈路缺失的答案實體一個評分補足項, 用于消除偏差, 當知識圖譜較稠密時該項可設為0.
1.3.2 答案篩選
為處理多答案實體的情況, 本文在答案篩選中引入同鏈路查詢機制:
(8)
首先根據(jù)知識圖譜嵌入評分和鏈路評分對答案實體進行復合評分, 排序后給出最優(yōu)答案實體, 其中β是一個超參數(shù).
當頭實體hq和最優(yōu)答案實體abest之間存在最優(yōu)連通鏈路R(hq,abest)時, 答案集合A為
A=SPARQL(h,R(hq,abest)),
(9)
其中SPARQA(h,R)表示基于頭實體h經(jīng)關系序列R進行一次圖數(shù)據(jù)庫查詢得到的實體集合.當頭實體hq和最優(yōu)答案實體abest之間不存在連通鏈路時, 答案集合A為
A={abest}.
(10)
從而可得在給定問題q和頭實體hq時對應的答案集合A.
在單跳問答任務上, NLPCC-ICCPOL-2016 KBQA任務中提供了一個包含14 609個問答對的訓練集和一個包含9 870個問答對的測試集. 該數(shù)據(jù)集不包含MHCKBQA訓練時需要的查詢路徑, 所以本文利用NLPCC官方提供的實體消歧數(shù)據(jù)集對數(shù)據(jù)進行二次標注, 通過反向查詢的方法構建了每個問題的查詢關系路徑. 在多跳問答任務上, 實驗選用文獻[15]中在NLPCC數(shù)據(jù)集上通過問句擴充的方式構建的NLPCC-MH數(shù)據(jù)集, 其中包含一個具有4 000個問答對的訓練集和一個具有1 000個問答對的測試集, 數(shù)據(jù)集包含經(jīng)過標注的查詢路徑, 但人工校驗發(fā)現(xiàn)數(shù)據(jù)集中有少量明顯的標注錯誤, 本文實驗對此進行了校正.
在NLPCC-ICCPOL-2016 KBQA任務中提供一個具有4 306萬條三元組的通用知識圖譜, 為便于實驗, 本文將其限制為通用知識圖譜的子集, 對于NLPCC-ICCPOL-2016 KBQA任務, 構建一個具有433 819條三元組的知識圖譜, 對于NLPCC-MH任務, 構建一個具有173 483條三元組的知識圖譜.
本文使用平均F1值作為評測指標度量知識問答方法的性能, 表示為
(11)
其中Q為測試集中整體的問題集合,Ci為測試集中給出問題qi的標準答案集合,Ai為問答方法對于問題qi給出的答案集合.
將本文方法與文獻[16]中基于鍵值對記憶網(wǎng)絡的知識問答方法KV-KB進行對比, 后者是知識圖譜問答的一個經(jīng)典方法. 此外, 在NLPCC-KBQA的單跳知識問答任務上, 將本文方法與文獻[17]中基于LSTM的知識庫自動問答(LSTM-based)方法進行對比, 為確保對比實驗的公平性, 假設已經(jīng)完成了實體鏈接任務, 僅選用對比方法中的答案選擇模塊進行對比. 在NLPCC-MH任務上, 將本文方法與Seq2Seq[18]方法進行比較. 為驗證引入知識圖譜嵌入模型后, 問答方法在知識圖譜較稀疏時的鏈路預測能力, 實驗通過隨機丟棄25%的三元組方法生成了不完整的知識庫, 并在不完整知識庫上進行實驗.
在NLPCC單跳知識問答數(shù)據(jù)集上的實驗結果表明, 當β=0.5時, 本文方法性能較好, 實驗結果列于表1. 在NLPCC-MH多跳知識問答數(shù)據(jù)集上的實驗結果列于表2, 在該實驗中β=0.3.
表1 不同方法在NLPCC-KBQA數(shù)據(jù)集上單跳知識問答實驗結果對比
表2 不同方法在NLPCC-MH數(shù)據(jù)集上多跳知識問答實驗結果對比
在單跳問答任務上, MHCKBQA方法在完整數(shù)據(jù)集下的平均F1值接近針對單跳中文知識問答設計的基于LSTM的自動問答方法, 尤其是在知識圖譜不完整的情況下, MHCKBQA方法仍然保持了較高的平均F1值, 說明本文方法具有較好的鏈路預測性能. 在多跳問答任務上, MHCKBQA方法在完整和不完整的知識圖譜上都取得了3個方法中最佳的F1值. Seq2Seq方法在知識圖譜較稀疏的情況下不能預測出可靠的關系序列, 而MHCKBQA方法仍然具有較好的鏈路預測能力. KV-KB方法在兩個任務上均弱于MHCKBQA方法, 說明該方法在訓練集中問答對數(shù)量較少且知識圖譜較復雜的情況下沒有充分學習到答案預測能力.
由實驗結果可見, MHCKBQA方法因為鏈路評分機制的引入, 能更好地避免遺漏答案的情況, 對F1值有提升作用, 也更符合人們對問答方法的預期效果; 且通過知識圖譜嵌入模型, 可利用知識圖譜中潛在的語義信息, 這種語義信息使方法的答案評分機制具有一定的鏈路預測能力, 在稀疏的知識圖譜下方法也能保持較好的性能. 而知識圖譜的稀疏性恰是真實世界中知識圖譜的重要特征, 所以MHCKBQA方法在真實的知識庫上具有較好的問答性能.
在實驗過程中本文提出了一些提升MHCKBQA方法推理速度的優(yōu)化策略:
2) 搜索頭實體hq與答案實體a之間最優(yōu)鏈路的操作較消耗時間, 可以在搜索最優(yōu)連通路徑時指定最大深度Depthmax, 超過該深度時停止搜索, 歸為二者不連通的情況.
綜上所述, 本文基于知識圖譜嵌入的多跳中文知識問答方法MHCKBQA在進行答案評分時, 創(chuàng)新性地結合了知識圖譜嵌入評分算法與鏈路評分算法, 通過復合評分構建了一個具有高可信度的查詢路徑, 有效解決了當前基于知識圖譜嵌入問答方法中遺漏答案的現(xiàn)象. 針對中文語境, 該方法選用基于ZEN改進的中文句向量嵌入模型擬合復雜語義關系, 對多跳問答任務的語義理解更準確. 同時因為知識圖譜嵌入的引入, 使問答方法具有一定的鏈路預測能力, 在不完備的知識圖譜上MHCKBQA方法仍然具有較強的推理能力. 本文問答方法在NLPCC-KBQA和NLPCC-MH兩個數(shù)據(jù)集上性能較好, 尤其是在多跳問答任務上和知識圖譜稀疏的情況, MHCKBQA方法與對比方法相比具有明顯優(yōu)勢.