问答系统总结
最近在研究問答系統,但是在查找資料的過程中一直處于懵逼狀態,因為問答系統分類比較多,根據不同的依據可以分為不同種類,總是搞混,也沒有找到資料詳細全面的介紹,所以在一邊學習查找資料的同時,自己也整理出一份總結,用于以后學習過程不至于思路混亂,如有錯誤請幫忙指出.
19世紀60年代最早:基于模板和規則
19世紀90年代:基于檢索(IR)匹配-從問題中提取關鍵詞,根據關鍵詞在文本庫中搜索相關文檔,并進行降序排序,然后從文檔中提取答案.
? ? ????主要模型有:
? ? ? ? ? ? 單輪:DSSM,CLSM
? ? ? ? ? ? 多輪:Multi-Viem,DAM(state-of-art),Memory-Network
2010年,知識圖譜(結構化文本),基于知識庫(KB-QA)-對問題進行解析,根據解析內容從知識庫中推理出答案.
? ? ? ? ?基于知識庫的三大傳統方法:語義解析,信息提取,向量建模.
? ? ? ? 1. 語義解析:
? ? ? ? 2. 信息提取:用實體命名技術獲取到問題中的實體,然后在知識庫中進行查詢,得到關于問題實體的中心子圖,子圖的邊和結點就是候選答案的集合.進一步,可以通過分析,規則模板提取除特征,將問題和答案的特征結合送入二分類器中,將答案分為正確答案和錯誤答案進行建模.
? ? ? ? 3. 向量建模:獲取問題和答案的表示向量,然后做點乘求得分.
? ? ? ? 其他:Memory-Network也可用于KB-QA
基于閱讀理解的問答(MRC機器閱讀理解):適用數據類型為-(給定一個問題 Q 和一個與 Q 相關的文檔 D,自動得到 Q 對應的答案 A)非結構化文本,主要的方法有匹配式,抽取式和生成式
? ? ? ? 1.匹配式:給出文章,問題和答案集,從答案集中選出最高得分的答案,像選擇題.
? ? ? ? ? ? 1)LSTM-reader(最簡單的方法):把文檔d和問題q合并建模后,喂到雙向LSTM中,得到向量g
? ? ? ? ? ? 2)Attentive-reader:先使用LSTM對問題建模得到向量q,再對文檔建模,然后用q對文檔使用attention匹配得到向量r,結合q和r,相當于帶著問題讀文檔.
? ? ? ? ? ? 3)Impatient-reader:同上,只不過是對每個token去計算attention,相當于先讀每個字或者詞,然后帶著字或者詞去讀文檔.
? ? ? ? ? ? 4)Gated-Attention Reader:相當于帶著一個問題,反復讀文檔,讀k遍。
? ? ? ? 2.抽取式:顧名思義就是從文檔中抽取出答案,前提是文檔中包括問題答案.
? ? ? ? ? ?這樣的數據集有:斯坦福的SQuAD數據集,難度比較高的 TriviaQA數據集.
? ? ? ? ? ?抽取式的一般框架是,Embedder+Encoder+Interaction-layer+Answer
????????????????Embedder:將輸入embedding
? ??????????????Encoder:分別對問題和文檔用LSTM建模(也可以用其他方法)
? ??????????????Interaction-layer:使用attention將問題和文檔結合起來,對問題和文檔進行交互,得到query-aware的文章表示.(個模型只要差別所在)
? ??????????????Answer:對上面得到的query-aware文章表示進行抽取答案,通常有兩種方法:一是使用兩個模型分別預測出答案的起始和終止位置.二是把當然當成label序列(序列標注),預測出label.
? ? ? ? ? ? 抽取式主要模型有:
? ? ? ? ? ? ????1).Match-LSTM:比較基礎的模型,結構如下圖(沒看懂@_@),Machine Comprehension Using Match-LSTM and Answer Pointer
? ? ? ? ? ? ? ? ? ? Match-Lstm是由三部分組成:
????????????????????1.預處理層:使用lstm對passage和question編碼
????????????????????2.match-lstm層:
????????????????????????1).先求passage對question的attention向量,也就是權重得分ai
????????????????????????2).然后將ai與question編碼做點乘,得到passage中第i個詞對于question的信息向量.
????????????????????????3).再將該向量與passage中第i個詞的隱藏狀態合并,和question的編碼向量hi輸入到一個lstm模型中(decoder)
????????????????????????4).反過來再來一次,將正反兩個方向得到的結果合并,就是match-lstm層的輸出.整個過程跟seq2seq中的attention encoder-decoder 結構很像,黑體部分為主要區別部分.
????????????????????3.answer-pointer層:
? ? ? ? ? ? ? ? ? ? ????1).sequence model:序列模型,預測的結果可以是連續的也可以是不連續的,結果形式為answer中每個詞在passage中的index.需要在answer結尾加上結尾符.
????????????????????????2).boundary model:邊界模型,預測結果是連續的,形式為答案起始index,和答案結束index.不需要結尾符.實驗證明,該方法比序列模型效果要好.
????????????????????總結:Match-Lstm適合處理答案不是很長的問題,適合處理'是什么'形式問題,不適合處理'為什么'形式問題.答案長度限制為9(其他人做的實驗結果).
? ? ? ? ? ? ? ? 2).BiDAF:比較出名的模型,論文地址:Bidirectional Attention Flow for Machine Comprehension
? ? ? ? ? ? ? ? ? ? 模型結構:
? ? ? ? ? ? ? ? ? ? 原理:
? ? ? ? ? ? ? ? 3).R-Net:近似state-of-art的模型,論文地址:沒找到--.
? ? ? ? ? ? ? ? 4).FastQAExt(輕量級),FastQA: A Simple and Efficient Neural Architecture for Question Answering
? ? ? ? ? ? ? ? 5).GA-Reader,論文地址:Gated-Attention Readers for Text Comprehension
? ? ? ? ? ? ? ? 6).QA-Net(使用CNN),論文地址:QANET: COMBINING LOCAL CONVOLUTION WITH GLOBAL SELF-ATTENTION FOR READING COMPREHENSION
? ? ? ? 3.生成式:目前只有MSRA的MS MARCO數據集,答案形式是這樣的:1)答案完全在某篇原文.2)答案分別出現在多篇文章中.3答案一部分出現在原文,一部分出現在問題中.4)答案的一部分出現在原文,另一部分是生成的新詞.5)答案完全不在原文出現(Yes / No 類型)
? ? ? ? ? ? 常見模型:
? ? ? ? ? ? ? ? 1).改進R-Net
? ? ? ? ? ? ? ? 2).S-Net,論文地址:S-NET: FROM ANSWER EXTRACTION TO ANSWER GENERATION FOR MACHINE READING COMPREHENSION
? ? ? ? ? ? ? ? 3).R3-Net:集文檔檢索與答案生成于一身的模型,論文地址:R 3 : Reinforced Ranker-Reader for Open-Domain Question Answering??
其他知識:
????????1.transE模型:知識表示模型,最后訓練出來的向量e符合如下規則:e(object)=e(subject)+e(relation),損失函數是最小正例距離最大負樣本距離
????????2.IRGAN模型:檢索
????????3.OpenIE:關系抽取工具
????????4.實體/關系鏈接:將OpenIE抽取的關系鏈接到知識庫
????????5.檢查關系是否正確,使用transE模型的思想e(object)和e(relation)+e(subject)的余弦距離小于閥值
????????6.pointer network
參考文章:
https://www.zhihu.com/people/susht/posts????一份問答系統的小結
https://zhuanlan.zhihu.com/p/41217854????基于深度神經網絡的自動問答系統概述
https://github.com/dapurv5/awesome-question-answering?????領域經典論文,項目及數據集
總結
- 上一篇: 2018届校招面经精选
- 下一篇: 自然语言处理系列篇——关键词智能提取