幾篇KBQA論文閱讀
七篇和KBQA多多少少有些相關的論文,有些精讀有些只是略讀。
1.《Improving Natural Language Inference Using External Knowledge in the Science Questions Domain》
在NLI(自然語言推理)任務中,提出一種結合知識庫的方法。
已有的引入外部知識的方法,無非是:
1.引入事實(facts),包含實體以及他們之間的關係;
2.引入詞法資訊,比如一個實體的所有同義詞;
3.引入常識,比如所有涉及到的concept組成的subgraph。
提出的使用外部知識的方法:
text-only,graph-only,text-and-graph
Text-Based Model:把Hypothesis和Premise的文字作為輸入的一個多層分類模型。
Graph-Based Model:對Premise和Hypothesis分別構建一個sub-graph,包含裡面出現過的entity,以及相應的relation。
用來驗證的資料集:SciTail
2.《Exploiting Rich Syntactic Information for Semantic Parsing with Graph-to-Sequence Model》
發表在EMNLP’2018的短文,騰訊AI實驗室與IBM Search的工作。
之前的語義解析(Semantic Parsing)方法通常都是在decoder端的改進,encoder就是簡單的seqLSTM來編碼word-order的特徵。但是句法特徵(syntactic features)對於編碼非常重要。
在Semantic Parsing的幾個Benchmark資料集Jobs640,ATIS和Geo880上達到了與SOTA差不多的效能,而且對抗樣本上的魯棒性更強。
方法:
- 利用syntactic graph來表示word-order,dependency和constituency特徵。
- word-order特徵,句子裡每個單詞是一個節點互相連線。(雙向)
- dependency特徵,代表了單詞直接的語法關係,依賴資訊非常重要(Reddy等人證明依賴解析樹能夠直接轉化為Logical Form),將單詞之間以有向邊連線並指向依賴標籤。
- constituency特徵,constituency解析的結果代表了phrase結構資訊,把constituent tree中非終止節點以及它們之間的邊加入到syntactic graph中。
- 使用graph2seq模型(Xu et al. 2018),首先使用graph encoder對syntactic graph進行編碼,而後使用RNN+Attention進行解碼得到Logical Form。
- 把圖中節點的text資訊轉化為embedding表示該節點;
- 找到每個節點的前向鄰居和後向鄰居;並以一種規則更新節點的表示;
- 把所有節點表示feed到MLP+Max-Pooling網路中得到graph-embedding。
- 解碼階段使用graph embedding初始化隱狀態,Attention的M是節點的表示。
3.《Learning to Map Sentences to Logical Form: Structured Classification with Probabilistic Categorial Grammars 》
MIT在2005年semantic parsing方面的工作,把自然語言句子對映到Logic Form上。
1.介紹了一下λ表示式;
2.介紹了本文中使用的logic form,combinatory categorial grammars組合範疇語法。
CCG包含一個詞典lexicon,其中有一些詞型別是基本型別NP,另一些是複雜型別。
CCG還包含一個combinatory rules,所以相鄰的字串能夠遞迴的組合起來。比如函式組合規則A/B B -> A。
CCG的優勢就是語法型別和語義型別一致性保持的較好。比如lexicon中每個詞在規定語法型別的同時,可以規定語義型別(λ表示式)
3.介紹如何把CCG擴充套件到Probabilistic CCG,也就是求P(L,T|S)其中L是最後的邏輯表示式,T是每一步推導的結果而S是原文。PCCG主要解決CCG中的歧義問題,該問題可能產生於語法解析過程,也可能產生於語義解析過程。(前者對應同一個詞不同的語法型別或語法組合型別,後者對應不同語法對應到了同一語義)
對於一個S,推導除了多個(L,T)的時候,這篇文章首先學習出一個f,把(S,L,T)三元組對映到d個特徵向量(對應S和T中不同子結構的數量),而後使用一個函式(如下)作為不同(L,T)的最終概率。
最終使用的feature是每個lexical entry在T中使用的次數。
4.《SQLNet》&《Seq2SQL》
與semantic parsing相關的論文。17年11月。ICLR2018。以及17年6月。
Seq2SQL利用RL解決生成SQL的where子句中order導致的交叉熵錯誤問題,在wikiSQL上顯著的提高了效果。
SQLNet利用column attention來預測每個column name是否出現在column slot中。
5.《The Web as a Knowledge-base for Answering Complex Questions》
特拉維夫Tel-Aviv大學的Talmor和Berant在2018年的工作。
關於Semantic Parsing和QA的問題,針對複雜問題,提出了ComplexWebQuestion資料集,以及一個PointerNetwork為主的框架解決QueryDecomposition。
相關工作,有一個研究Query-Paraphrase的工作,還有一個SQA研究decomp的工作(那個工作使用了人工標註的split-query,需要更多的監督資訊,而且針對table這樣結構化資料而不是web資料)
首先,利用PointerNetwork把複雜問題分解,然後把分解後的簡單問題送入搜尋引擎,最後利用RC模型抽取答案。
幾個關鍵步驟:
- 資料集的產生,由simpleQuestion的logicForm進行擴充套件(四種方式),並生成MG-Complex-Query,並採用眾包的方式產生HG-Complex-Query。
- 資料集問題分類:Comp(two hop),conj(two constraint),comparable,superlative。
- 監督訊號的來源,noisy alignment,通過MG-query-split-point,通過對齊的方式找到最可能的HG-split-point。
- noisy supervision產生的具體過程:
- 給原資料集每個sample增加annotation;
- 計算MG和NL的輸出的word相似度矩陣(利用glove-300d-vector)。
- 計算MG的query的split-point,容易求得。
- 根據2&3的結果,得到帶有噪音的NL的split-points作為監督訊號。
- 訓練中computation tree(也就是輸入和輸出)的表示:
- comp(two hop),i&j,i和j之間的是第一跳的query,得到的答案填充到 j的部分作為第二跳的query。
- conj(two constrain),i決定在哪裡斷開,j決定是否把某個詞複製到斷開的後面一段的問題中(不復制即為-1)。
- 評價準則,Precision@1(27.5),距離人類的標準還有差距(63)。
- 模型訓練時無法處理的情況(comparable,superlative,negative),這些不太好通過搜尋引擎獲得(如何獲得所有entity的結果?),因此在資料集中這類問題(10%)直接作為simpleQ處理,以後如果基於KB或者Table的QA進行研究的話,會增加這類運算元。
- AugmentedPointerNetwork模型,利用query+comp+conj作為decode的詞庫。
- 決定是否進行decomp,利用RC模型給出的答案的score,檢視simp還是decomp的score高,進而決定是否進行decomp。
- 使用了兩個RC模型,web-based QA+RASOR以及DocQA,來驗證decomp的有效性。
- 但是RC和Web-based QA這兩個模型的程式碼並沒有放進來。
6.《Evaluating Semantic Parsing against a Simple Web-based Question Answering Model》
特拉維夫Tel-Aviv大學的Talmor在2017年的工作。上一篇論文中web-based qa framework就是這個工作。
首先,利用query在www上獲取前100篇snippets。而後利用tf-idf,獲取1-4gram的前若干個candidate,之後利用log-linear模型和一些特徵從這些candidate中給出top-k,k由一個公式獲得。在ComplexQuestions資料集(junwei)上獲得了不錯的效果。
7.《Entity-Duet Neural Ranking: Understanding the Role of Knowledge Graph Semantics in Neural Information Retrieval》-ACL2018
1.問題
搜尋引擎排序。Ranking task in search systems。
在Neural IR系統中,entity和semantic起到的作用。
2.已有方法(相關工作)
兩個方向:
1.entity-oriented search,從知識圖譜中抽取實體和語義資訊,增強基於特徵匹配的搜尋引擎排序。能夠利用實體和知識圖譜中的語義資訊。
a.利用KB中的attributes,作為ranking feature,Dietz等人2014. b.通過相關entity,構建query和documents之間的額外關聯。
2.Neural Ranking Models:能夠利用神經網路,在大量資料情況下學到更加有效和魯棒的ranking model。
a.學習分散式表示,然後找到相關的關係(基於表示的) b.直接通過word-level的資訊互動,對q和d的相關度進行建模(基於互動的),這種方法提高了準確率(尤其是大規模資料的)
詳細的相關工作:
Huang等人的DSSM:把letter-tri-grams給雜湊到低維向量。輸入是三個字母為視窗的vector(50w的詞庫->3w維的向量),通過hash壓縮向量空間並增加泛化能力。而後通過多層MLP得到語義向量,然後把q和d的語義向量cos得到後驗概率,最大化被點選的d的後驗概率。使用詞袋模型,丟失了語義和詞序資訊。直接學習到文件的語義表示。
Xiong等人的K-NRM:模型的translation layer計算q和d的雙向cos-similarity(這裡叫做translation matrix)。然後,在kernel pooling層,利用RBF核把詞與詞之間的相似度轉化為q-d的相似度特徵向量。K個核,每個核計算得到的是query中每個詞和d中每個詞的相似度。用RBF的話,是一種動態的pooling,計算相似度離
最接近的詞彙數量。最後通過一個tanh的仿射變換,得到ranking score。
Dai&Xiong等人的Conv-KNRM:conv層利用CNN抽取N-gram的embedding feature,而後在cross-match層對n進行match得到若干個match matrix,每個矩陣得到一個pooling feature,而後這些feature矩陣通過concat得到最終的feature,最後用pair-wise-LeToR損失進行優化。
此外,還有一些工作(3-4個)研究KB輔助Neural-based-model進行IR任務,和本文工作相似。
3.論文提出的方法
EDRM
利用知識圖譜的語義資訊(實體的分散式表達),增強neural based rank model的效能。
首先學習entity的分散式語義表示:
entity embedding:就是直接通過embedding得到。 description embedding,通過描述欄位的embedding矩陣進行卷積和max-pooling得到的。 type embedding,每個entity有n個type的話,首先獲得每個type的embedding,而後通過和bag-of-words進行注意力計算並加權求和,得到type embedding。 最後,把三種資訊concat起來得到enriched entity embedding。
而後通過Xiong等人提出的一個entity-oriented-search framework(但是xiong等人提出的是依靠人工設計的feature),通過bag-of-words和bag-of-entities來計算d和q的匹配度,一共計算出四種方向的矩陣。融入n-gram資訊(n=1,2,3),把每個n-gram匯聚在一起。
其中的pooling也是和之前的工作一樣的。之所以叫soft-TF(term frequency),是因為當
的時候,就等於統計EM的詞數量。
把entity的資訊融入,同時使用基於神經網路而不是特徵匹配的排序系統。增加了系統的泛化能力。
4.實驗及結果
資料集:一個商業的搜尋log。Sogou和CN-DBPedia的query-log。
進行了ablation analysis,case study,以及效能分析。