【NLP-ChatBot】搜索引擎的最终形态之问答系统(FAQ)详述
本篇介紹聊天機器人中出現的比較早的一種:問答系統。問答系統跟檢索技術很相似,基本的功能就是,用戶可以向系統咨詢信息,系統通過“檢索”,向用戶返回精準、有效的信息。所以,常常有人說,問答系統是搜索引擎的最終形態。
作者&編輯 | 小Dream哥
1 什么是問答系統
我們之前介紹過,按照應用場景的不同,聊天機器人可以分為問答系統,對話系統以及閑聊機器人三類。今天我們就來詳細講一講其中的問答系統。
問答系統是基于用戶的問題,給定一個回答,不涉及到多輪對話。通常用于智能搜索,智能家居中的家電控制等場景。問答系統往往不需要調用業務能力,只需要完成對用戶問題的匹配及回答。
我們之前介紹過,問答系統的任務其實就是,對用戶的輸入進行相似度或者相關性計算,然后在相應的FAQ庫里,尋找該用戶輸入對應的答案,并返回給用戶。
2 問答系統(QA)中的語料庫
通常,一個問答系統,都是針對某一個領域的。例如,一個淘寶賣家的問答系統,針對的是買家常問的商品類型和價格信息問題作出回答。
因此,要構建一個問答系統第一步就是整理FAQ庫。一個FAQ庫應該如下的內容:
1.標準問。標準問是問答系統設計者設計的標準問題,例如,“***商品的價格是多少?”。標準問的個數,決定了問答系統的規模,通常由業務專家給定。
2.相似問。一個標準問通常會對應多個相似問,與標準問表達相同的意思,但往往會不那么規范,較口語化,相似問通常要求覆蓋面越廣越好。例如,“****商品多少錢呀?”。相似問早期由業務專家擬定,數據師擴寫,后期會不斷修繕、規整和增加。
3.答案。一個標準問對應一個答案,返回給用戶。由業務專家擬定。
FAQ庫的質量,對于一個問答系統非常的重要,但是FAQ庫的建立和維護往往都是一件極其費時費人力的事情。當一個FAQ庫規模變大時,相似問之間的界限開始變的迷糊,會給算法帶來非常大的挑戰;另一方面,當FAQ庫規模很大時,后期的維護也變得非常的困難。例如,當系統出現bad case,數據師很難判斷bad case出現的原因,無法判斷是哪條標準問對應的相似問加錯了,從而很難修改。
對于一個問答系統而言,高質量FAQ庫需要建立的時候就異常用心,通常需要業務專家和算法工程師通力合作;在使用時也需要倍加用心的維護,這時,需要培養多位既了解算法特性,又熟悉業務場景的數據師。這大概是目前生產中大部分問答系統采用維護方案了。
3 問答系統Q-A的匹配方式
在問答系統中,模型算法的任務其實就根據用戶輸入的問題匹配到相應的答案。這看起來是個簡單的問題,實際上不然。
一方面,一個標準問,用戶可能的問法有很多,很多時候都無法預料,需要不斷的完善;另一方面,FAQ庫的規模通常很大,標問數目可以達到數萬,相似問的數據可能就更多了。這么大數目的預料,長度不一,算法難度很大。
模型的訓練過程,其實就是讓模型能夠學習到問題-答案(Q-A)對之間的聯系,或者Query集的特征。如下圖所示,是QA中匹配用戶query的模式。
由此可知,目前QA系統的實現,主要有以下三種方式:
1.計算用戶輸入Query和Question的相似度。通過計算用戶輸入Query與FAQ語料集中Question之間的相似度,選出相似度最高的Question,再通過Q-A map找到相應的答案返回給用戶。
2.計算用戶輸入Query和Answer的之間的相關性。通過計算用戶輸入Query與FAQ語料集中Answer之間的相關度,選出相關度最高的Answer,返回給用戶。
3.結合用戶輸入Query和Answer的之間的相關性以及用戶輸入Query和Question的相似度。通過結合相關性和相似度,選出最匹配的Answer,返回給用戶。
4? 問答系統中匹配的算法
由上節可知,問答系統中的匹配可以歸結為query與FAQ庫中標問和相似問的相似度計算與query與FAQ庫中答案的相關性計算。總的來說,目前相似度或相關性計算有下面的幾種方式。
1)規則匹配
也許有讀者會覺得很驚訝,都9012了,還有人用規則匹配來做機器人?其實不必驚訝,目前,很多機器人都有規則匹配的部分,它可控,高效、易于實現。
我這里介紹一種規則匹配的方式,也有人稱為句式法。所謂句式法,就是針對FAQ庫中的標問和相似問進行分詞、提煉出大量的概念,并將上述概念組合,構成大量的句式,句式再進行組合形成標問。例如,標問“華為mate30現在的價格是多少?”,拆出來“華為mate30”是cellphone概念,“價格是多少”是askMoney概念,“現在”是time概念,那么“華為mate30現在的價格是多少?”就是cellphone+askMoney+time。用戶輸入"華為mate30現在賣多少錢?"進行分詞,可以得到相同的句式和概念組合,就能夠命中“華為mate30現在的價格是多少?”這個相似問了。
2)深度學習語義匹配
語義匹配筆者之前有介紹相關的代表性論文,感興趣的同學可以仔細看看,非常有好處:
語義匹配的技術,從早期的DSSM,利用詞袋模型,計算句之間的相似度;到后面利用LSTM-DSSM來捕捉長時間序列的語義信息;再到現在的基于BERT的語義相似度計算與匹配。本質上,其實都是提取句子的語義特征,再通過數學運算計算相似度。
5 KBQA介紹
Knowledge Based Question&Answer(KBQA),是一種基于知識體系的問答系統,現在知識庫更多的是指知識圖譜了。
KBQA回答用戶問題的方式通常有如下兩個步驟組成:
1.利用NLU模塊進行語義理解和解析,包括意圖識別,實體識別,實體關系識別,實體匹配等。
2.利用知識圖譜進行查詢、推理得出答案
搭建KBQA中最重要最關鍵的一步就在于知識圖譜的搭建。知識圖譜對于絕大部分NLP任務都有極大的加成,個人認為是當前最有價值的NLP方向。
總結
搭建一個問答系統是非常耗費時間和人力的事情,不管是傳統的QA,還是近來的KBQA。對傳統的QA,FAQ庫的建立和維護都異常費事;對于KBQA,知識圖譜的搭建,就是一個難度巨大的工程。
近期我們會在知識星球實現問答系統,具體實現和優化,感興趣掃描下面的二維碼了解。
讀者們可以留言,或者加入我們的NLP群進行討論。感興趣的同學可以微信搜索jen104,備注"加入有三AI NLP群"。
下期預告:聊天機器人-對話系統介紹
知識星球推薦
掃描上面的二維碼,就可以加入我們的星球,助你成長為一名合格的自然語言處理算法工程師。
知識星球主要有以下內容:
(1) 聊天機器人。考慮到聊天機器人是一個非常復雜的NLP應用場景,幾乎涵蓋了所有的NLP任務及應用。所以小Dream哥計劃以聊天機器人作為切入點,通過介紹聊天機器人的原理和實踐,逐步系統的更新到大部分NLP的知識,會包括語義匹配,文本分類,意圖識別,語義匹配命名實體識別、對話管理以及分詞等。
(2) 知識圖譜。知識圖譜對于NLP各項任務效果好壞的重要性,就好比基礎知識對于一個學生成績好壞的重要性。他是NLP最重要的基礎設施,目前各大公司都在著力打造知識圖譜,作為一個NLP工程師,必須要熟悉和了解他。
(3) NLP預訓練模型。基于海量數據,進行超大規模網絡的無監督預訓練。具體的任務再通過少量的樣本進行Fine-Tune。這樣模式是目前NLP領域最火熱的模式,很有可能引領NLP進入一個全新發展高度。你怎么不深入的了解?
轉載文章請后臺聯系
侵權必究
往期精選
總結
以上是生活随笔為你收集整理的【NLP-ChatBot】搜索引擎的最终形态之问答系统(FAQ)详述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【NLP实战】tensorflow词向量
- 下一篇: 【直播】如何设计性能更强大的深度卷积神经