Template-based Question Answering over RDF Data

Christina Unger, Lorenz Bu?hmann, Jens Lehmann, Axel-Cyrille Ngonga Ngomo, Daniel Gerber, Philipp Cimiano

WWW 2012

一、引言

本文是一篇經典論文,所要解決的問題是通過自然語言的方式從RDF數據獲取結果。在本文之前,大部分的問答系統都是將問題轉換成三元組,通過三元組和RDF數據的匹配得到結果,具體過程如下圖所示。

但是很多情況下,三元組的表示形式不能完備的表示所有的自然語言,尤其是數量、比較級、最高級等需要多個三元組通過一定的邏輯推理才能表示的問題,比如,「哪個城市含有三個大學」,「誰導演了最多的電影」。

本文提出了一種新的問答方案,整體過程分成四步:

(1)模板生成:將自然語言問題通過句法分析映射為SPARQL模板。

(2)模板實例化:通過實體識別和謂詞檢測將SPARQL模板中的slot進行填充得到完整的可查詢的模板。

(3)模板排序:因為自然語言的模糊性,一句話可能映射為多個SPARQL模板,所以會對多個模板進行排序。

(4)模板查詢:用SPARQL模板從RDF數據查詢獲取結果。

方案的整體流程圖如下圖所示:

二、模板生成

首先解釋下什麼是SPARQL模板。SPARQL查詢模板定義了SPARQL查詢的基本框架,包含了查詢中關於意圖、過濾器、聚合函數以及其三元組的數量和形式的部分。一個簡單的例子如下:

如何根據自然語言句子來生成這樣的模板呢?具體過程包括:

(1)解析問句,得到POS tag信息。

(2)根據詞典構建lexical entries。例如:

詞典分為領域無關的詞典和領域相關的詞典。領域無關的詞典包括輕動詞(例如:to be、to have、tive me等)、疑問詞(例如:what、which、how many等)、限定詞(例如:some、all、no、at least 等)、否定詞等。領域相關的詞典由於跟知識庫相關,我們在解析的時候build-on-fly。

(3)將所有的lexical entries輸入到Pythia解析【1】中,得到語法表示和語義表示。下圖中6為語法表示,7為語義表示。語義表示的獲取其實是比較複雜的,在本論文中並沒有講的很清楚。

(4)有了語義表示,我們寫一些轉換規則就可以將語義表示轉換為SPARQL模版,得到的形式如下圖所示:

需要注意的是,整個過程是

三、模板實例化(實體識別)

前面的SPARQL模板是通過自然語言生成的模板,這個模板要想作用於一個RDF資料庫,需要將模板中的字元串映射為RDF資料庫中的實體詞(比如:概念詞、實例詞和屬性詞等),這個過程也可以稱做實體鏈接的過程。如下表所示,對於左邊的模板,經過映射後可以從RDF資料庫中找到相應的實體,即films可以映射為一個概念ont:film,produced可以映射為一個屬性ont:produce,但是右邊的模板其中的通過映射就發現films不能作為屬性實體。

概念詞和實例詞一般情況下不難映射,屬性詞就有一定的複雜性。對於一般的概念詞和實例詞論文採用一種簡單通用的方法,對於屬性詞則採用一種相對複雜的方法。

通用方法

(1) 對於每一個待鏈接的字元串s,用某些方法得到相似詞或同義詞S(s)。論文中採用的是從WordNet中獲取同義詞。

(2)利用字元串相似演算法(例如編輯距離和最大子串)計算出相似度(注意此相似度分值將用於計算最終結果是否合理)

(3)選出字元串相似度最高的實體。

屬性檢測

屬性或者說謂詞的檢測相對複雜,這主要是因為謂詞的表示說法比較多樣化。比如X, the creator of Y 和 Y is a book by X ,表達的是同樣的意思,但是如果僅通過同義詞擴展是很難將兩種不同的說法映射到相同的謂詞。為了解決這個問題,論文採用了BOA(BOotstrapping linked datA)框架,也就是通過自舉式挖掘的方法挖掘出不同的自然語言說法到謂詞的映射。具體過程如下:

(1)對於一個謂詞 p,通過知識庫我們可以得到很多滿足{x p y} 的樣例。

(2)對於每個樣例{x y},我們可以從語料庫(如wiki等)找出含有x且含有y的句子。

(2)根據 label(x) .* label(y)或 label(y) .* label(x)的正則匹配出子串。

(3)得到?D? representation ?R?或者?R? representation ?D?的表達,其中?D?和?R?為label(x)和label(y)的佔位符。例如,?book? is a book of ?author?

(4)對每一個挖掘出來的表示 	heta ,我們可以計算出其對某個謂詞 p 的符合程度的得分 c(	heta,p) ,根據這個得分我們可以篩選出最合適謂詞。

符合程度的計算公式為:

c(	heta,p)=sup(	heta,p)cdot typ(	heta,p)cdot spec(	heta,p) ,其中sup、typ、spec分別表示支撐性、典型性和特殊性。

四、模板排序

當有了多個候選的sparql查詢後需要對他們排序與選擇。根據entity的相似性分數σ(e) 與三元組的顯著性分數φ(e) 對每個query打分。

α∈ [0,1] 決定相似性分數σ(e) 與三元組的顯著性分數的影響

五、實驗與分析

論文的實驗是在QALD5數據集上驗證。QALD5基準:包含兩組50個關於DB-pedia的問題,

用SPARQL查詢和答案注釋。每個問題都由準確和召回評估。所有精確度分數的平均值為0.61,所有召回分數的平均值為0.63,F值為0.62。

錯誤的問題主要分為:

1、Incorrect templates

生成的模板不一定能和RDF資料庫的定義的結構對的上。比如對於Is there a video game called Battle Chess?生成的模板會假定有叫title或name的屬性在資料庫中存在,因為query句子中有called這個詞,但資料庫中卻不存在這樣的屬性。不存在有可能是資料庫中確實不存在相應的屬性,也有可能存在相應的屬性,但是名字不匹配。 另外一個造成錯誤模板的問題的原因是命名實體識別錯誤造成的,比如如果Battle of Gettysburg不能被識別為一個命名實體,那生成的模板顯然就不對了。

2、Entity identification

有些句子包含的屬性是一種隱含的形式,不存在顯示的屬性詞。比如Give me all soccer clubs in the Premier League,在這個句子中,隱含著onto:league這樣一個屬性,但是在這句話中這個意思是由in間接表達出來的。

另外一種情況是雖然存在顯示對應的屬性詞但是很難匹配上。比如:inhabitants,應當匹配的屬性詞是prop:population或者prop:populationTotal;owns,應當匹配的屬性詞是onto:keyPerson。

3、Query selection

對於問題Who wrote The pillars of the Earth? wrote 匹配了 onto:writer (應該是onto:author),然後 pillars of the Earth 匹配上了 TV_miniseries。

4、Other reasons

Which country has the most official languages? 對於這個問題論文中給出的映射是onto:officialLanguage,但是正確答案給出的映射是onto:language,其實論文給出的映射是更合適的。

總之,這些問題一言以弊之,就是兩種描述語言之間的不匹配問題。一種是資料庫中的乾淨、一致的本體論描述語言,另一種是自然語言中獲取的查詢描述語言。如何將這兩種描述語言匹配起來,是基於知識庫的問答方法的難點。

參考文獻

【1】Pythia: Compositional meaning construction for ontology-based question answering on the Semantic Web

推薦閱讀:

相关文章