怎麼利用知識圖譜構建智能問答系統?
知識庫問答要解決的問題是計算機能夠利用知識庫中的知識對人們輸入的自然語言問句給出答案,例如:「奧巴馬的夫人是誰?」-&>「米歇爾.拉沃恩.奧巴馬」。具體方法可以參考論文中是如何實現的:
- 目前學術界採用的方法大致可以分成三大類:
基於信息提取(Information Extraction)的方法,這種方法先利用問句信息結合知識庫資源獲取候選答案,然後再從候選答案中甄別得到最佳答案 Yao Xuchen, Benjamin Van Durme. Information extraction over structured data: Question answering with freebase.
基於語義解析(Semantic Parsing)的方法,該方法關鍵在於將自然語言問句解析成一種表達問句語義的邏輯形式(Logical Form),再基於這種結構化的表達從知識庫中尋找答案 Jonathan Berant, Andrew Chou, Roy Frostig, Percy Liang. Semantic Parsing on Freebase from Question-Answer Pairs;Jonathan Berant, Percy Liang. Semantic parsing via paraphrasing(有開源工具)
基於向量空間建模(Vector Space Modeling)的方法,與前兩種方法需要人工設計規則、提取特徵不同,這種方法使用向量空間描述自然語言問句以及知識庫中的實體和關係,利用收集的問題-答案對進行各向量表徵的自動訓練,通過比較問句和備選答案在向量空間中的距離實現對於輸入問題的回答 Antoine Bordes, Jason Weston, Nicolas Usunier. Open question answering with weakly su-pervised embedding models
- 也可以按照輸入問題的複雜度分成:
- 簡單問句:這種問題只需要一個三元組就能搞定,比較基礎的通過LR的方法: Antoine Bordes, Jason Weston, Nicolas Usunier. Open question answering with weakly su-pervised embedding models;或者結合CNN、RNN神經網路的方法:Character-Level Question Answering with Attention
- 複雜問句:需要多個三元組,有時需要進一步的推理或者做一些計算。回答這類問題目前採用上面基於語義解析一類的方法效果較好。貼個微軟目前比較新的工作 Wen-tau Yih, Ming-Wei Chang, Xiaodong He, and Jianfeng Gao. 2015. Semantic parsing via staged query graph generation: Question answering with knowledge base.
以上的論文中的系統均利用Freebase知識庫來回答問題。
我在揭開知識庫問答KB-QA的面紗·簡介篇 - 知乎專欄 中回答了
- 什麼是知識庫(knowledge base, KB)
- 什麼是知識庫問答(knowledge base question answering, KB-QA)
- 知識庫問答的主流方法
- 知識庫問答的數據集
四個問題,並列舉了一些經典的paper,之後我會對一樣經典的paper進行展開講解,建議題主可以看看
假定有知識圖譜了,那麼問題就相對簡單了。這就成了自然語句到查詢語句的一個轉化問題。一般過程如下:
1、取用戶意圖。也就是用戶問得是什麼。比如用戶問:現存最完整、最大的青銅器有哪些。此時用戶意圖為青銅器;
2、取意圖的限定條件。這裡,限定條件為最大、最完整;
3、限定條件的轉化。知識圖譜中如果有最大與最完整這兩個屬性,可能存的是一個完整度(100%為最大)或者是體積大小(xxx立方米),這裡需要將最大與最完整轉化為一個可查詢的條件。
4、查詢返回結果。這裡可以按一定規則潤色一下再返回。
如用戶繼續問,這些青銅器分別出土自哪裡呢?
驟1、進行意圖識別,問的是地點;
步驟2、進行限定條件抽取。但是,抽取限定條件時,就會遇到一個難點了,這些是哪些?分別是哪些分別?
步驟3、限定條件轉化。出土地點和館藏地點更相近還是發掘地點更接近?分別是啥意思?
這裡不僅需要做上下文中的指代詞消歧(將指代詞轉化為當前談論的實體),還要有其他的實體的消歧(這個消歧,主要是用戶輸入的實體與知識圖譜中實體之間的消歧)。同樣,類似於分別這樣的詞,如何轉化為查詢條件也是一個難點。
還可以問:它們都在哪些博物館?離我最近的是哪個?
這裡就涉及到到了用戶本身屬性的參與,也不容易做細。其他還有很多方面的問題,不一一列舉了。
問答系統做出來簡單,做細了難。大多都是結合業務相關的一些特性,做垂直領域裡的問答,對話輪數由一輪開始,慢慢增加。
先構建實體庫,完善實體屬性,然後設計實體鏈接程序,就可以做一個普通的Qa了,如果要更智能,那麼需要再構建關係庫和推理模型,這個可以參考實體及關係表達
推薦閱讀:
TAG:問答系統 |