聲明:本文是綜合網上問答系統介紹,做的總結,如有侵權,請聯繫處理,謝謝。
一、問答系統架構
1.1、問題分析模塊
負責對用戶的提問進行處理;生成查詢關鍵詞(提問關鍵詞,擴展關鍵詞,...);確定提問答案類型(PER, LOC, ORG, TIM, NUM, ...)以及提問的句法、命名實體、語義表示等等。
1.2、問題回答模塊
依據不同的數據類型,進行不同方式的信息檢索:
- 利用問題處理模塊抽取的查詢關鍵詞,用信息檢索方式,檢索出和提問相關的信息(段落、也可以是句羣或者句子);
- 對於某些提問類型(某人的出生日期、原名、別稱等),問句和包含答案的句子之間存在一定的答案模式,或者從已有問答對庫中進行匹配得出候選答案;
- 通過對問題進行語義理解和解析,利用知識庫進行查詢、推理得出答案,回答的答案是知識庫中的實體。
1.3、答案抽取模塊
從檢索模塊檢索出的相關段落、或句羣、或句子中抽取出和提問答案類型一致的實體,根據某種原則對候選答案進行打分,把概率最大的候選答案返回給用戶。
二、問題分析
對不同類型的問題,往往有不同的處理方法,所以一般都有問題分類這個過程。
- 基於規則
針對於不同類型的問題制定相應的答案抽取規則,以便在答案抽取階段應用這些規則來抽取問題的答案。比如對於詢問地點的問題,我們就可以規定,答案中必須含有位置信息。
- 基於統計
人工方式對一批問題的類別進行標註
設計機器學習算法,已標註的這個集合進行分類模型的自動訓練
訓練得到的模型對測試問題進行自動分類
eg: 比如通過統計,“什麼顏色”這幾個詞經常出現在問題中,那我們就可以把“什麼顏色”當作一個疑問短語。然後凡是含有“什麼顏色”這個短語的問題都當作一類問題。
二、信息檢索(數據類型)
2.1、信息抽取
方法描述:從問句中提取關鍵詞語,用信息檢索的方法找出包含候選答案的段落或句子,然後基於問答類型用信息抽取的方法在這些段落和句子中找出答案
- 檢索過程:段落或者句子級排序,利用不同類型關鍵詞的加權組合
- 答案抽取過程:根據問答類型從排序後的段落或句子中抽取答案
2.2、模式匹配
基本思想:對於某些提問類型(某人的出生日期、原名、別稱等),問句和包含答案的句子之間存在一定的答案模式,該方法在信息檢索的基礎上根據這種模式找出答案。因此如何自動獲取某些類型提問的儘可能多的答案模式是其中的關鍵技術
例如,詢問“某人生日年月日”類提問的部分答案模式如下:
- 1.0 <NAME>(<ANSWER> -)
- 0.85 <NAME> was born on <ANSWER>
- 0.6 <NAME> was born in <ANSWER>
- 0.59 <NAME> was born <ANSWER>
- 0.53 <ANSWER> <NAME> was born
- 0.50 –<NAME>(<ANSWER>
- 0.36 <NAME>(<ANSWER> -
2.3、KBQA
揭開知識庫問答KB-QA的面紗1·簡介篇 https://zhuanlan.zhihu.com/p/25735572
- KBQA問答流程
- KBQA解決方案
2.4、綜合對比
三、答案生成
- 一般搜索引擎返回的是一堆網頁,而問答系統需要返回的是簡短的答案。這樣,通過信息檢索模塊搜索出來的相關文檔就要提交給答案抽取模塊來提煉答案。答案可以是一句話,或者是幾句話,也可以是幾個詞或者短語。對於那些問時間地點的問題,就可以用很短的語句來回答,而對於詢問原因、事件的問題就需要較長的語句才能回答。比如對於問題“9.11事件的是怎麼回事?”就不可能用一句話就能回答的。所以答案的抽取還需要依據問題的類型。
- 境通過提供管理後臺,讓用戶建立自己的業務場景,並在場景中建立上下文會話,而會話則由實體、意圖和生成模板構成。在新的問題中,如果語法錯誤,比如缺少實體和目標屬性,那麼需要根據上下文回溯到之前提到的實體和屬性,如果上下文中還是缺少這些內容,則需要用追問的方式讓用戶補充回答以填充(slot-filling)
- 最後是用戶行爲反饋,就是怎麼樣根據用戶的結果去指導我們去做更好對話模型的理解。
四、實戰案例
4.1、基於模板問答
- 基於知識圖譜的電影自動問答系統: https://blog.csdn.net/qq_30843221/article/details/54884151
問題類型 | 問題模板 |
電影票房 | nm 票房 |
電影風格 | nm 主題 風格 |
電影角色 | nm 角色列表 角色 nnt 簡介 |
電影導演 | nm 製作 導演列表 |
1. 問題分類
2. 問題查詢模板(Neo4j)
- 聊天機器人中對話模板的高效匹配方法 https://blog.csdn.net/malefactor/article/details/52166235
4.2、基於檢索問答
基於問題到問答庫中進行ES檢索(ES檢索的結果是有個評分score,評分越高,越相似)
4.3、基於知識圖譜問答
即根據一個問題,抽出一條三元組,生成 Sparql 語句,進而進行知識圖譜查詢返回答案。
原創:基於知識圖譜的問答系統入門—NLPCC2016KBQA數據集 https://mp.weixin.qq.com/s?__biz=MzIwMTc4ODE0Mw==&mid=2247494128&idx=1&sn=3b044a4435e0ed221161e5a434fe9670&chksm=96ea3670a19dbf6654f1964bd225e9d51efbcb733aaa7c13309b17a9f5c548101561a7cc1889&token=609043407&lang=zh_CN#rd
4.4、綜合問答
- 小米智能音箱案例
1. 知識庫
2. 問答對匹配
- 金融智能問答
綜合了基於模板+信息檢索+知識圖譜的綜合問答系統:夏磊(數庫科技)智能問答在金融領域中的實踐與應用 https://zhuanlan.zhihu.com/p/25966699
1. 基於意圖的結構化問答系統(個人理解是基於模板)
2. 基於檢索的問答系統
3. 基於知識圖譜的問答系統
參考文獻
夏磊(數庫科技)智能問答在金融領域中的實踐與應用 https://zhuanlan.zhihu.com/p/25966699
小米小愛 https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/79933707
陳鬆堅(騰訊)智能問答算法原理及實踐之路
問答系統學習綜述 https://blog.csdn.net/sinat_33231573/article/details/83473741
對話機器人技術簡介:問答系統、對話系統與聊天機器人 https://blog.csdn.net/u010159842/article/details/81333828
趙軍(中科院) 信息抽取與問答系統