知識圖譜的問答系統關鍵技術研究 #03

PaperWeekly發表於2017-04-15

第 5 節 複雜問題回答

這一節詳細闡述如何回答複雜問題。首先第 5.1. 節將問題形式化為一個最優化問題。第 5.2. 節和第 5.3. 節分別闡述優化量度和演算法。

5.1. 問題陳述

本節著重關注由一系列 BFQ 組成的複雜問題,例如表 1.1 中的問題 ○f 可以被分解為兩個 BFQ:(1) BarackObama’swife (MichelleObama);(2) WhenwasMichelleObama born? (1964 年)。顯然,第二個問題的答案依賴於第一個問題的答案。在解答覆雜問題時,分而治之框架可以自然而然地被利用:(1) 系統首先把問題分解為一系列 BFQ,(2) 然後系統依次回答每個問題。既然在第 3 節已經給出瞭如何回答 BFQ,那麼這一節中的關鍵步驟就是問題分解。

需要強調的是,在一個問題分解的序列中,除了第一個問題之外的每個問題都是一個具有實體變數的問題。只有當變數被指派到一個特定實體之後,問題序列中的問題才能被具體化,而這個特定實體也就是前一個問題的答案。回到之前的例子中去,第二個問題 When was Michelle Obama born? 在問題序列中是 When was $e born?。在這裡,$e 作為一個變數來代表第一個問題 Barack Obama’s wife 答案。從而當給定一個複雜問題 q 後,系統需要將其分解為由 k 個問題形成的序列 A = (qˇi)ki=0,使得:

  • 每個 qˇi (i > 0) 都是一個有實體變數 ei 的 BFQ,其值為 qˇi−1 的答案。

  • qˇ0 是一個 BFQ,其實體等於 q 的實體。

例 5.5 (問題序列)考慮表 1.1 中的問題 ○f 。 一個自然問題序列是 qˇ0 = Barack Obama’s wife 和 qˇ1 = when was $e1 born? 系統也可以替換任意一個子串來構造問題序列,諸如 qˇ′0 =Barack Obama’s wife born 和 qˇ′1=When was $e?。但因為 qˇ′0 既不是一個可回答的問題也不是一個 BFQ,所以後者是無效的。

給定一個複雜問題,系統用遞迴的方式構造一個問題序列。系統首先用一個實體變數來替換一個子串。如果這個子串是可以被直接回答的 BFQ,使它為 q0。否則對子串重複以上步驟直到得到一個 BFQ 或者子串是一個單獨的詞彙。然而,正如例 5.5 所示,許多問題分解是不可行的(或不可回答的)。因此,系統需要度量一個分解的序列有多大可能被回答。更形式化地,使 A(q) 成為 q 所有分解可能的集合。對於一個分解 A ∈ A(q),規定 P(A) 為 A 是有效(可回答)問題序列的概率。從而問題被簡化為: 

知識圖譜的問答系統關鍵技術研究 #03


接下來的第 5.2. 節和第 5.3. 節將分別闡述對 P(A) 的估計以及如何有效求解最優化問題。

5.2. 度量標準

根據直覺,如果問題序列 A = (qˇi)ki=0 中的每個問題 qˇi 都是有效的,那麼該序列是有效的。因此,需要首先估計 P(qˇi)(qi 是有效的概率),然後將每個 P(qˇi) 合起來來計算 P(A)。

演算法用 QA 語料庫來估計 P(qˇi)。qˇ 是一個 BFQ。如果可以通過將 q 的一個子串替換為 $e 得到 qˇ,那麼認為問題 q 與 qˇ 是匹配的。本節稱匹配是有效的, 當被替換的子串是 q 中的實體時。例如 When was Michelle Obama born? 匹配 when was $e born? 和 when was$e?。但是,只有前者是有效的因為只有 Michelle Obama 是一個實體。本節用 fo(qˇ) 來表示 QA 語料庫中匹配 qˇ 的所有問題的數量,用 fv(qˇ) 來表示有效匹配 qˇ 的問題數量。

fv(qˇi) 和 fo(qˇi) 都從 QA 語料庫得到計數。這樣演算法估計 P(qˇi) 為:

知識圖譜的問答系統關鍵技術研究 #03


這個式子明顯是合理的:匹配數越多,qˇi 可回答的可能性越大。fo(qˇi) 被用來懲罰過於籠統的問題樣式。下面給出一個 P(qˇi) 的例子。

例 5.6. 令 qˇ1 = When was $e born?,qˇ2 = When was $e?,QA 語料庫如表 5.2 所示。顯然,q1 滿足 qˇ1 和 qˇ2 的樣式。但是,因為只有當 q1 匹配 qˇ1 時,被替換的子串才對應一個有效實體“Barack Obama”,因此只有 q1 是 qˇ1 的有效樣式。從而得到 fv(qˇ1) = fo(qˇ1) = fo(qˇ2) = 2。且有 qˇ0 ≡ 0。由式 5.26, P(qˇ1) = 1, P(qˇ2) = 0。

對於每個給定的 P(qˇi),定義 P(A)。假設 A 中的每個 qˇi 有效是獨立事件。則當且僅當問題序列 A 中所有 qˇi 有效時,該序列有效。所以 P(A) 可以計算如下:

知識圖譜的問答系統關鍵技術研究 #03


5.3. 演算法

給定 P(A),演算法的目標是找到使 P(A) 最大的問題序列。因為搜尋空間巨大,因此這步不能忽略。考慮一個長度也就是字數為 |q| 的複雜問題 q。q 中共有 O(|q|2) 個子串。如果 q 最終被分解為 k 個子問題,那麼總搜尋空間為 O(|q|2k),這是不能被接受的。本節提出一個基於動態規劃的方法來求解最優化問題。該方法複雜度為複雜度為 O(|q|4)。方法利用了最優化問題的區域性最優解性質。定理5.7證明了這個性質。

定理 5.7(區域性最優解)對於複雜問題 q,令 A *(q) = (qˇ*0,...,qˇ*k) 是 q 的最優分解,則 ∀1≤ i ≤ k, ∃qi ⊂q, A *(qi) = (qˇ*0,..,qˇ*i ) 也是 qi 的最優分解。

基於定理5.7,可以得到一個動態規劃(DP)演算法。考慮 q 中的一個子問題 qi 是 (1) 一個初始 BFQ(不可分解)或(2)一個可被進一步分解的問題串中的其中一個。對於情形(1),A*(qi) 包括一個元素也就是 qi 本身。對於情形(2),A *(qi) = A *(qj) ⊕r(qi,qj),其中 qj ⊂qi 有最大 P(r(qi,qj))P(A *(qj)),r(qi,qj) 是通過將 qi 中的 qj 用一個佔位符“$e”替換而生成的問題。從而得到動態規劃方程: 

知識圖譜的問答系統關鍵技術研究 #03


其中 δ(qi) 是決定 q1 是否為初始 BFQ 的指示函式。也就是說,當 qi 是初始 BFQ 或 δ(qi) =0 時,δ(qi)=1。

演算法 2 描述了動態規劃演算法。演算法在外層迴圈(第 1 行)中列舉 q 的所有子串。在每個迴圈中,演算法首先初始化 A *(qi)和P(A *(qi))(第 2-4 行)。在內層迴圈中,演算法列舉 qi 的所有子串 qj(第 5 行),然後更新 A *(qi) 與 P(A *(qi))(第 7-9 行)。注意到演算法按照長度升序列舉所有 qi,這確保了通過每個被列舉的 qj,可以知道它們的 P(A *()) 和 A *()。

因為每個迴圈列舉 O(|q|2) 個子串,從而演算法 2 的複雜度為 O(|q|4)。在實驗的 QA 語料庫中,超過 99% 的問題字數少於 23 個 (|q| < 23),因此這樣的複雜度是可以接受的。 

第 6 節 屬性擴充套件

在知識圖譜中,許多關係不是由一個直接屬性表達的,而是由一條由許多屬性組成的路徑表示的。正如圖 1.1 所示,在 RDF 資料庫中,“spouse of”關係是由三個屬性 marriage → person → name 表達的。本章稱這些多屬性的路徑為擴充套件屬性。利用擴充套件屬性來回答問題可以高效提升 KBQA 的覆蓋率。

定義 5.8(擴充套件屬性)一個擴充套件屬性 p+ 是一個屬性序列 p+ = (p1,..., pk)。本章把 k 稱為 p+ 的長度。如果存在一個賓語序列 s = (s1,s2,...,sk) 使得 ∀1 ≤ i < k,(si, pi,si+1) ∈ K 且 (sk, pk,o) ∈ K ,則說 p+ 連線了主語 s 和賓語 o。正如 (s, p,o) ∈ K 表示了 p 連線了 s 和 o,這裡將 p+ 連線 s 和 o 記作 (s, p+,o) ∈ K 。

第3節中提出的KBQA模型可以充分適應屬性拓的問題。系統只需要一些輕微的調整就可以使得KBQA對擴充套件屬性有效。第6.1.節展示了這種調整。第6.2.節展示瞭如何 使得它對十億級別的資料庫有效。最後,第6.3.節中展示瞭如何選擇一個合理的屬性長度來保證最高的效率。

6.1. 對擴充套件屬性的 KBQA

上文曾提到,對單一屬性的 KBQA 由兩大部分組成。在離線部分,系統計算對給定模板的屬性分佈 P(p|t);線上上部分,系統抽取問題的模板 t,然後通過 P(p|t) 計算它的屬性。當把 p 替換成 p+ 之後,系統做了如下調整:

在離線部分,系統學習了對擴充套件屬性的問題模板。例如計算 P(p+|t)。 P(p+|t) 的計算僅僅只要知道 (e, p+ , v) 是否在 K 中。如果系統生成了所有的 (e, p+ , v) ∈ K ,就可以計算這一存在性。第 6.2. 節展示了這一生成過程。

線上上部分,系統用擴充套件屬性來回答問題。系統可以通過 RDF 資料庫中的 e 到 p+ 來計算 P(v|e, p+)。例如,讓 p+ = marriage → person → name,為了從圖 1.1 中的資料庫來計算 P(v|Barack Obama, p+),系統從節點 a 開始遍歷,然後經過節點 b 和 c,最後得到了 P(Michelle Obama|Barack Obama, p+) = 1。

6.2. 擴充套件屬性的生成

一個簡單的生成所有的擴充套件屬性的方式是對資料庫中的每一個節點進行廣度優先搜尋(BFS)。然而,擴充套件屬性的數量隨著屬性的長度指數級增長。所以當資料量達到十億級別的時候,BFS 的開銷是無法承受的。

為了實現擴充套件屬性的生成,系統首先對屬性的長度 k 設定了限制來提升延展性,也就是說,它只搜尋長度小於等於 k 的擴充套件屬性。下一個小節會展示如何得到一個合適的 k。本節通過另外兩個方面來提升延展性:(1) s 的約減;(2) 記憶體高效的 BFS。 

s 的約減:離線處理的過程只對在 QA 語料庫中出現過至少一次的 s 有興趣。因此,系統只用那些在 QA 語料庫中的問題中出現過的賓語作為 BFS 的起始節點。這一策略很大程度上減少了生成的 (s, p+ , o) 的數量,因為這些實體的數量比起在十億級別資料庫中的要少得多。在系統使用的資料庫(15 億實體)和 QA 語料庫(79 萬不同實體)中,這一過濾策略理論上可以減少 (s, p+ , o) 的數量 1500/0.79 = 1899 倍。

記憶體高效的 BFS:為了在 1.1TB 大小的資料庫中使用 BFS,本節使用了基於磁碟的多源 BFS 演算法。在一開始,系統將在 QA 語料庫(記作 S0)中出現過的所有的實體讀取入記憶體,並在 S0 建立了一個雜湊索引。第一輪中,系統通過掃描磁碟上的所有 RDF 三元組一次,並將三元組的主語和 S0 結合,我們就得到了所有長度為 1 的 (s, p+,o)。本節建立的對 S0 的雜湊索引,允許演算法線上性時間內完成這一操作。第二輪中,系統將所有的三元組讀入進記憶體中,然後建立對所有的賓語 o 建立雜湊索引(記作 S1)。然後再次掃描 RDF,並將 RDF 中三元組的主語和 s ∈ S1 結合。現在系統得到所有的長度為 2 的 (s, p+,o),並將它們讀入進記憶體中。系統重複上述的“索引+掃描+結合”操作 k 次來得到所有的長度為 p+.length ≤ k 的 (s, p+,o)。

這個演算法非常高效,其時間消耗主要用在了 k 次掃描資料庫上。雜湊索引的建立和結合的操作在記憶體中執行,時間消耗對於磁碟上的 I/O 來說是可以忽略不計的。注意到從 S0 開始的擴充套件屬性的數量總是比資料庫的大小要小得多,因此可以被容納在記憶體中。對於實驗使用的資料庫(KBA,更多細節請參閱實驗章節)和 QA 語料庫,只需要儲存 21M 的 (s, p+,o) 三元組。所以很容易將他們讀入記憶體。假設 K 的大小是 |K |,演算法找到的 (s, p+,o) 三元組的數量是 #spo,它消耗了 O(#spo) 的記憶體,演算法的時間複雜度是 O(|K |+#spo)。

6.3. k 的選擇

擴充套件屬性的長度限制k影響了屬性擴充套件的效率。k 越大,(s, p+,o) 越多,導致更高的答案覆蓋率。然而,這也產生了更多的無意義的 (s, p+,o) 三元組。例如,圖 1.1 中,擴充套件屬性 marriage → person → dob 連線了“Barack Obama” 和 “1964”,但是他們明顯沒有關係,對於 KBQA 也沒有用。

屬性擴充套件需要選擇一個能夠得到最多的有意義的關係,並且排除最多無意義的關係的 k 的值。本文使用 Wikipedia 的 Infobox 估計最佳的 k。Infobox 儲存了實體的一些知識,並且大部分條目都是以“主語- 屬性-賓語”的三元組的形式儲存的。Infobox 中的條目可以被視作有意義的關係。因此,k 的選擇中首先列舉一些長度為 k 的 (s, p+,o) 三元組,然後測試它們中有多少在 Infobox 中出現。選擇過程希望看到 k 值的減少。

特別地,實驗按照它們出現的頻率的順序,從 RDF 資料庫中選擇了前 17000 個實體。實體 e 出現的頻率被定義為在 K 中存在的使得 e = s 的 (s, p, o) 三元組的數量。選取這些實體是因為他們有更多的知識,因此更值得信任。對於這些實體,使用第 6.2. 節中提出的 BFS 生成了他們的長度為 k 的 (s, p+,o) 三元組。然後,對於每一個 k,計算這些可以在 Wikipedia 的 Infobox 中找到對應的 (s, p+,o) 三元組的數量。更形式化地,假設 E 是作為例子的條目的集合,SPOk 是長度為 k 的 (s, p+,o) ∈ K 。定義 valid(k) 來度量 k 對於有意義的關係的數量,方法如下: 

知識圖譜的問答系統關鍵技術研究 #03


在 KBA 和 DBpedia 上得出的 valid(k) 的值在表 5.3 中展示。當 k = 3 時,有效的擴充套件屬性的數量顯著減少。這說明了大部分有意義的因素在這個長度內可以被表示出來,所以系統選擇了 k = 3。 

知識圖譜的問答系統關鍵技術研究 #03


表 5.3: valid(k)

第 7 節 實驗

第 7.1. 節中闡明實驗設定;第 7.2. 節驗證了概率模型的合理性;第 7.3. 節和第 7.4. 節中分別評估了系統的有效性和效率;第 7.5. 節驗證了 KBQA 的三個組成部分的有效性。

7.1. 實驗設定

KBQA 系統執行在在一臺裝配了 Intel Xeon CPU, 2.67 GHz, 2 processors, 24 cores, 96 GB 記憶體, 64 bit windows server 2008 R2 的伺服器上。它使用 Trinity.RDF [110]作為 RDF 引擎,這一引擎被部署在了 6 臺伺服器上,並且一共使用了 284.1GB 的記憶體和 1.5TB 的磁碟資源。

資料庫 實驗部分使用了三個開放領域的 RDF 資料庫。由於商用保密協議本文無法公開第一個資料庫的名稱,在這裡稱它為 KBA。KBA 有 15 億實體和 115 億 SPO 三元組,共佔 1.1TB 空間。SPO 三元組包含了 2658 個不同的屬性和 1003 種不同的種類。為了實驗的再現性,實驗也在其他兩個知名的資料庫 Freebase 和 DBpedia 上測試了 KBQA 系統。Freebase 包含 1.16 億個條目和 29 億 SPO 三元組,佔了 380GB 儲存空間。DBpedia 包含了 560 萬條目,1.11 億三元組,佔了 14.2G 儲存空間。

QA語料庫 QA 語料庫包含了從 Yahoo!Answer 上得到的 4100 萬 QA 二元組。如果對於一個問題由多個回答,則只考慮“最佳答案”。 

測試資料 實驗在 QALD-5 [99],QALD-3 [96] 和 QALD-1 [95] 上分別測試了 KBQA,它們是測評基於知識圖譜的問答系統設計的。這些測試資料的基本資訊展示在了表 5.4 中。由於 KBQA 關注問答的 BFQ,所以也展示了對於這些資料庫中 BFQ 問題的數量(#BF Q)。 

知識圖譜的問答系統關鍵技術研究 #03


表 5.4:評估標準

對比方法 實驗把 KBQA 和 13 個 QA 系統進行比較,表 5.5 列舉了這些系統。 

知識圖譜的問答系統關鍵技術研究 #03


表 5.5:對比方法。 Q5 表示 QALD-5;Q3 表示 QALD-3

7.2. 概率模型的合理性

接下來實驗解釋為什麼一個概率模型是必須的。在問題理解的每一個步驟中,有些選擇會給系統的決策帶來不確定性,在表 5.6 中展示了每一個決策的候選答案數量。這種不確定性需要系統使用一個好的概率模型來表示。

舉例來說,P(t|e,q) 表示將一個問題和它的實體轉化成模型的時候的不確定性。比如對問題 How long it Mississippi river? 來說,系統很難從一些候選項中直接決定這個實體的概念是 river 或是 location。 

知識圖譜的問答系統關鍵技術研究 #03


表 5.6:概率圖模型中每個隨機變數的不同取值個數

7.3. 有效性

為了評估 KBQA 的有效性,本節進行了如下實驗。對於線上部分,實驗評估了回答問題的準確性和召回率。線上下部分,實驗評估了屬性推斷的覆蓋率和準確性。

7.3.1. 問題回答的有效性

指標 當一個 QA 系統發現當前問題沒有答案時,它可能會返回 null,所以實驗對一 個 QA 系統返回的非空(不一定是正確答案)(#pro)的答案的數量和正確答案(#ri)的數量做了記錄。然而,事實上,一個系統只能部分正確地回答一個問題(例如,僅僅找到正確答案的一部分)。因此實驗評測也需要那些部分正確的答案(#par)的數量。當 KBQA 找到一個屬性時,問題的答案便可以從 RDF 資料庫中被找到。因此對於 KBQA 來說 #pro 是 KBQA 找到的屬性的數量。#ri 是 KBQA 找到正確的屬性的數量。#par 是 KBQA 找到部分正確的屬性的數量。例如,對於問題 Which city was $person born? 來說,“place of birth”是一個部分正確屬性。因為它可能返回一個國家或者一個村莊,而不是問題所要找的一個城市。

現在實驗部分已經定義了評估指標:準確性 P,部分準確性 P*,召回率 R 和部分召回率 R*:

知識圖譜的問答系統關鍵技術研究 #03


實驗也對關於 BFQ 的召回率和部分召回率有興趣,分別記作 RBF Q 和 R*BF Q:

知識圖譜的問答系統關鍵技術研究 #03


QALD-5 和 QALD-3 的結果 表 5.7 和表 5.8 中展示了結果。對於所有的競爭者,表格直接使用了它們論文中的結果,可以發現在所有的資料庫上,除了在準確性上略遜於 squall2sparql,KBQA 戰勝了其他所有的競爭者。這是為 squall2sparql 對於所有的問題都使用了真人來標註識別實體和屬性。另外 KBQA 在 DBpedia 上表現的最好,這是因為 QALD 主要是為了 DBpedia 設計的。對於大多數 QALD 中的問題,KBQA 可以直接從 DBpedia 中找到正確的答案。 

知識圖譜的問答系統關鍵技術研究 #03

表 5.7:QALD-5 的結果

知識圖譜的問答系統關鍵技術研究 #03

表 5.8:QALD-3 的結果 

召回率分析 表 5.7 和表 5.8 中的結果表明了 KBQA 有一個相對低的召回率。主要原因是 KBQA 只回答 BFQ(二元事實性問題),然而 QALD 包含了很多非 BFQ 問題。當只考慮 BFQ 時,召回率分別上升至 0.67 和 0.61。實驗對於 KBQA 在 QALD-3 上沒有回答的問題進行了研究,結果發現原因很大程度上是因為 KBQA 對模型匹配用了相對嚴苛的標準。無法回答的情況通常發生在一個稀少的屬性和一個稀少的問題進行了匹配時。15 個無法回答的情況中有 12 個是因為這個原因。例如,對於問題 In which military conflicts did Lawrence of Arabia participate?,在 DBpedia 中這個問題的屬性是 battle。KBQA 對於這部分屬性沒有充分進行訓練。如果將 KBQA 和一個同義詞 QA 系統結合起來,可能就會有效增加召回率率。當 KBQA 中發生了誤匹配時,系統可以用基於同義詞的 QA 系統的答案作為替代。這超出了本章主要討論的內容,因此不在這裡進行闡釋。

QALD-1的結果 實驗將 KBQA 和 DEANNA 進行了比較, 結果列在了表 5.9 中。DEANNA 是基於同義詞的 BFQ 問答系統。 對於 DEANNA 來說, #pro 是被轉化成 SPARQL 的問題數量。 結果表明 KBQA 的準確性比 DEANNA 高得多。 由於 DEANA 是一個典型的基於同義詞的 QA 系統, 這一結果表明了基於模板的問答系統在準確性方面比基於同義詞的要好。 

 

知識圖譜的問答系統關鍵技術研究 #03

表 5.9:QALD-1 的結果 

7.3.2. 屬性推斷的有效性 

接著本節闡釋 KBQA 屬性推斷的有效性:(1) KBQA 學習了大量的自然語言的問題的模板和屬性(覆蓋率),(2) 對大多數的模板,KBQA 可以推斷出正確的屬性(準確率)。

覆蓋率 表 5.10 中展示了 KBQA 學習的模板和屬性的數量,並與最新的基於同義詞的 Bootstrapping [107, 97]進行了對比。Bootstrapping 從資料庫和網路文字中對屬性學習 了同義詞(BOA 式樣,主要是網路文字中主語和賓語之間的部分)。BOA 可以被看做是一種模板,它們之間的關係可以被看做是屬性。

結果表明,即使 Bootstrapping 用了更大的語料庫,KBQA 依然比它找到了明顯更多的模板和屬性。這意味著 KBQA 在屬性推斷方面更有效:(1) 模板的數量確保了 KBQA 對不同問題的理解;(2) 屬性的數量確保了 KBQA 對於不同關係的理解。因為 KBA 是實驗使用的最大的資料庫,基於 KBA 的 KBQA 生成了數量最多的模板,所以在接下來的實驗中主要關注對 KBA 的測試。 

知識圖譜的問答系統關鍵技術研究 #03


表 5.10:屬性推斷的覆蓋率 

準確性 此評測的目標是評估對於一個給定的模板,KBQA 是否能生成正確的屬性。為了這個目的,實驗按照出現頻率選擇了最高的 100 個模板。實驗也隨機選擇了 100 個頻率大於 1(只出現一次的模板可能意義十分模糊)的模板。對於每一個模板 t,使用人工核對它的屬性 p(最大值化 P(p|t))是否正確。和 QALD-3 上的評估相似,在某些情況下屬性是部分正確的。結果被展示在了表 5.11 中。對於兩個模板集,KBQA 都有更高的準確率。對於頻率最高的 100 個模板,KBQA 的準確率甚至達到了 100%。這表明了基於模板的屬性推斷的質量。 

知識圖譜的問答系統關鍵技術研究 #03


表 5.11:屬性推斷的準確率 

7.4. 效率

本節首先給出和其他問答系統的執行時間比較,然後給出 KBQA 的時間複雜度分析。

執行時間實驗 執行時間由兩部分組成:線下與線上。線下的處理過程,主要是學習模板, 用了 1438 分鐘。 時間的消耗主要是由龐大的資料量造成的:十億級別的資料庫和上百萬的 QA 對。 鑑於線下部分只用執行一次, 這個時間的消耗是可以承受的。 線上部分主要負責回答問題, 實驗把線上部分的時間消耗在表 5.12 中和 gAswer 和 DEANNA 進行了比較。 KBQA 用了 79ms,比 gAnswer 快了 13 倍,比 DEANNA 快了 98 倍,這意味著 KBQA 可以有效地支援實時的 QA。 

知識圖譜的問答系統關鍵技術研究 #03


表 5.12:時間消耗 

複雜度分析 表 5.12 中展示了它們的時間複雜度,|q| 表示問題的長度, |V| 表示 RDF 圖中向量的個數。 所有的 KBQA 的步驟都可以在多項式時間內完成, 然而 gAnswer 和 DEANNA 都有 NP-hard 的步驟。 gAnswer 的問題理解的時間複雜度是 O(|V|3),這種複雜度對於十億級別的資料庫來說是不能接受的。相比之下,KBQA 的時間複雜度是 O(|q|4) 和 O(|P|) (|P|是不同屬性的數量),和資料庫的大小無關。正如第 5.3. 節中提到的,超過 99% 的問題的長度都是小於 23 的。因此,在時間複雜度方面,KBQA 比其他 QA 系統有著更好的表現。

7.5. KBQA 的具體模組評估

實驗評估了 KBQA 的三個關鍵模組:實體-值的識別(第 4.1. 節),複雜問題的回答(第 5 節),屬性擴充套件(第 6 節)。

實體和值的識別的準確性 大多數過去的研究都主要關注實體的抽取,這種技術並不能被用在同時抽取實體和值上。所以,實驗只能和最新的實體識別的研究對比[33]。實驗隨機從問題語料中選擇了 50 個答案在知識圖譜中的問答對。通過人工判斷抽取的結果是否正確。本文的方法正確識別了 36 個問答對(72%)。相比之下,史丹佛 NER 只識別的 15 個問答對(30%)。結果表明對於實體的共同抽取要比單獨抽取要好。

回答複雜問題的有效性 因為沒有對複雜問題回答的有效基準測試集,實驗構造瞭如表 5.13 中的 8 個問題。這裡列舉的所有問題都是真實的使用者提出的典型複雜問題。實驗比較了 KBQA 和其他兩個最新的 QA 系統:Wolfram Alpha 和 gAnswer。表 5.13 中展示了結果,實驗發現 KBQA 在回答複雜問題方面戰勝了它的對手,這表明 KBQA 對回答複雜問題是有效的。 

 

知識圖譜的問答系統關鍵技術研究 #03


表 5.13: 複雜問題回答。WA 表示 Wolfram Alpha, gA 表示 gAnswer 

屬性擴充套件的有效性 接下來實驗將會測評系統在屬性擴充套件在兩方面的有效性。第一,屬性擴充套件可以識別更多的屬性。第二,擴充套件屬性使 KBQA 學習更多的模板。表 5.14 中展示了評估結果。可以發現 (1) 相較於直接屬性(長度為 1),擴充套件屬性(長度為 2 到 k)生成了十倍於前者的屬性數量;(2) 歸因於擴充套件屬性,模板的數量增加了 57 倍。

實驗進一步使用了兩個案例來闡明:(1) 擴充套件的屬性是有意義的,(2) 擴充套件屬性是正確的。表 5.16 中列舉了學習出的 5 個擴充套件屬性。可以發現 KBQA 識別出的這些屬性都是有意義的。實驗進一步選擇了一個擴充套件屬性 marriage → person → name,來驗證從這一屬性中學習出的模板是否正確並有意義。表 5.15 中列舉了 5 個模板,這些模板都是合理的。 

知識圖譜的問答系統關鍵技術研究 #03

表 5.14:屬性擴充套件的效果 

知識圖譜的問答系統關鍵技術研究 #03

表 5.15:marriage → person → name 的對應屬性 

知識圖譜的問答系統關鍵技術研究 #03


表 5.16:屬性擴充套件的例子

第 8 節 相關工作

在計算機領域,問答系統是一個經典的研究問題。在資訊檢索(IR),資料探勘和自然語言處理(NLP)領域它都被廣泛研究。本節首先根據資料來源調研了一些相關工作。然後本節調研基於知識圖譜的的問答系統。最後調研了 RDF 資料管理的最新進展。

自然語言文字 vs 知識庫 問答系統對於語料庫的質量有著很強的依賴性。傳統的問答系統使用 web 文字或是 Wikipedia 作為它們的語料庫來回答問題。在這一分類中的最新的方法[78, 56, 22, 44]通常將網路文件或是 Wiki 中的句子作為問題的答案,並根據它們和問題的相關性來進行打分。他們也使用一些去噪音的方法,比如說問題分類[66, 111],來增加答案的質量。最近幾年,許多大規模知識庫的誕生,例如 Google Knowledge Graph,Freebase[10]和 YAGO2[45],為建立新的 QA 系統提供了機會[72, 98, 97, 36, 107, 31]。這些知識庫比起依賴於網路文字的 QA 系統,有著更系統的架構,並且有著更清晰和可靠的回答。

基於知識圖譜的問答系統 基於知識圖譜的問答系統的核心處理是對問題的屬性識別。例如,對於問題 How many people are there in Honolulu,如果系統能找到屬性“population”,這個問題就能被回答。根據屬性識別的方式分類,這些知識庫的發展經歷了三個主要的階段:基於規則,基於關鍵詞,和基於同義詞 。基於規則的方法用人為創造的規則將問題對映到屬性。例如,Ou et al. [72]認為形如 What is the xxx of entity? 的問題應該被對映到屬性 xxx。人為構建的規則通常有高的準確率,但是召回率很低。基於關鍵詞的方法[98]用問題中關鍵詞或片語作為特徵來找到問題和屬性之間的對映。但是通常,很難用關鍵詞來找到問題和複雜屬性之間的對映。系統很難基於關鍵詞,例如“how many”, “people”, “are there”等,來對映問題 how many people are there in ...? 到屬性“population”。基於同義詞的方法[97, 107]通過考慮屬性的同義詞,擴充套件了基於關鍵詞方法。這使得它可以回答更多的問題。這個方法的主要影響因素是同義詞的質量。Unger et al. [97]用 bootstrapping [36] 來生成同義詞。Yahya et al. [107]則用 Wikipedia 來生成同義詞。然而,由於和基於關鍵詞的方法相同的原因,基於同義詞的方法仍然不能回答複雜問題。True knowledge [94]用關鍵詞和片語來表示一個模板。True knowledge 應該被分類到基於同義詞的方法。相比之下,本章的問題模板將實體概念化來表示問題。

總而言之,相比於本章使用問題模板的理解方式,之前所有的基於知識庫的 QA 系統仍然在準確率和召回率方面有著他們的弱點。

第 9 節 小結

基於知識庫的 QA 系統現在已經成為了一項重要且可行的工作。本章在一個大型開放領域 RDF 知識庫的基礎上建立了一個問答系統。系統和之前的工作有以下四點不同:(1) 它用模板理解問題,(2) 它用模板抽取來學習從模板到屬性的對映,(3) 用 RDF 中的擴充套件屬性來提升知識庫的覆蓋率,(4) 理解複雜問題來提高對於問題的覆蓋率。實驗表明 KBQA 是有效且高效的,尤其是在準確性方面,比其他的 QA 系統都要優秀。 

相關文章