智能客服
智能客服設計整體框架
智能客服根據任務類型可以分爲:諮詢問答、任務型多輪對話、閒聊客服。
智能客服原理
諮詢問答
參考鏈接:
QA機器人的本質是:假設用戶提了一個問題Q,QA機器人需要從已有的QA數據庫中尋找最合適的QA對返回,QA機器人會進行QQ相似度計算和QA匹配度計算,通過綜合相似度與匹配度,找到最適合的一組QA對 (Qi, Ai),即最佳答案返回。
設計思路
1、客服根據常見的問答數據創建問答知識庫。
2、用戶提出的問題是,將用戶問題與知識庫中的問題進行相似度計算,檢索出最相近的問題
3、返回最相關的問題及其答案
解決方案:
基於問答對的方法,常用檢索+排序的算法。
1、NN模型:常見的網絡模型包括RNN和CNN模型。例如雙層編碼(Decoder)的長短期記憶模型(LSTM)。這種模型在很多場景下都比較好用,網絡模型的主要缺點是需要一定數量的樣本。
2、拆分成子問題:在語料比較小的情況下,將問題進行拆分(1)把問題變成一種短文本語義表徵,通常有tfidf、w2v。(2)然後再進行語義距離計算,例如計算向量的餘弦距離
eg:QA機器人問題-問題匹配算法原理
QQ匹配包括幾個部分:句向量化、相似度計算、相似度排序。
- 句向量化是使用BoW詞袋模型和同義詞擴展,將句子的詞轉換成向量;
- 然後再與問題庫裏的詞進行相似度計算,計算出餘弦相似度;
- 用餘弦距離產生相應的結果,按照相似度大小排序返回答案列表。
任務型多輪對話
(Task-Bot) 的關鍵技術是基於意圖識別與語義槽提取。
eg: A: “幫我訂一個今天下午3點到4點的會議室吧?要大一點的。”
機器人識別出來這是一個任務,而這個任務要完成必須三個語義槽:時間、地點、大小。
任務型多輪對話原理
任務型對話主要包括三部分:自然語言理解,對話管理,最後是自然語言生成 (忽略語音識別步驟)
自然語言理解:
該模塊一般包含以下三個模塊:
- 領域識別:即識別該語句是不是屬於這個任務場景,一般有多個機器人集成時,如閒聊機器人,問答機器人等,領域識別應當在進入任務型機器人之前做判斷與分發
- 意圖識別:即識別用戶意圖,細分該任務型場景下的子場景
- 語義槽填充:用於對話管理模塊的輸入 Eg: Text=“人民幣對美元的匯率是多少”;經過自然語言理解模塊會解析爲 act ( slot1
= value1, slot2 = value2 ……) 的形式,即意圖,槽位,槽位信息三元組形式,即 Text會解析爲“查詢(槽位1=人民幣,槽位2=美元)”這樣的形式。
對話管理模塊
自然語言理解模塊的三元組輸出將作爲對話管理系統的輸入。它主要包括兩部分: - 狀態追蹤模塊:該模塊在對話的每一輪次對用戶的目標進行預估,管理每個回合的輸入和對話歷史,輸出當前對話狀態。
- 對話策略模塊:該模塊的主要功能是根據前面的對話狀態決策採取的最優動作(如:提供結果,詢問特定限制條件,澄清或確認需求等)從而最有效的輔助用戶完成信息或服務獲取的任務。該模塊基於用戶輸入的語義表達和當前對話狀態輸出下一步的系統行爲和更新的對話狀態。
Eg: text=“人民幣對美元的匯率是多少”。“查詢(槽位1=人民幣,槽位2=美元)”這樣的形式將作爲對話管理模塊的輸入,這時候狀態追蹤模塊就要根據前幾輪的信息,結合該輸入判斷該輪的查詢狀態,確定查詢的槽位,以及與數據庫的交互。如得到想要查詢的確實是人民幣對美元的匯率信息。這時候,根據現有的對話策略判斷當前的槽位狀態,最後給出對話管理模塊的輸出,如查詢結果(源貨幣=人民幣,目標貨幣=美元,匯率=1:0.16)
參考鏈接:https://www.cnblogs.com/qcloud1001/p/9182421.html
解決方案
第一個是語法分析,可以通過語法規則去分析一句話,得到這句活是疑問句還是肯定句,繼而分析出用戶意圖。相應的也可以通過語法結構中找到對應的槽值。
第二種方法是生成模式,主要兩個代表性的HMM,CRF, 這樣就需要標註數據。
第三種方法是分類思想,先對一句話提取特徵,再根據有多少個槽值或意圖訓練多少個分類器,輸入一句話分別給不同的分類器,最終得到包含槽值的概率有多大,最終得到這個槽值。
還有一種採用深度學習方式,使用LSTM+CRF兩種組合的方式進行實體識別,現在也是首選的方法 ,但有一個問題是深度學習的速度比較慢 ,一般輕量型的對話系統還是通過語法分析或分類方式或序列標註來做。
自然語言生成模塊
該模塊主要任務是將對話策略輸出的語義表達生成流暢可讀的自然語言句子,反饋給用戶。
傳統方法(a)基於模板的NLG方法: 人爲定義一些模板,用需要的信息填空的方法。
(b)基於樹的NLGhttps://zhuanlan.zhihu.com/p/49197552
閒聊問答
解決方案
- 檢索式ChatBot
- 像ES那樣直接檢索(如使用fuzzywuzzy),只能字面匹配
- 構造句向量,檢索問答庫,能夠檢索有同義詞的句子
- 生成式ChatBot(todo)
- seq2seq
- GAN
數據集
英文
斯坦福大學自然語言處理的QA數據集SQuAD
來自Stack Overflow平臺的Python語言問答數據集【Kaggle】
來自Stack Overflow品臺的R語言問答數據集【Kaggle】
保險行業問答(QA)數據集【Minwei Feng】
AI2科學問答數據集(多選)
康奈爾大學電影對白
微軟的10萬個問題和答案的MS MARCO數據集
中文
百度的中文問答數據集WebQA
中文問答數據
中文對話數據集
中文電影臺詞數據集dgk_shooter_min.conv
白鷺時代中文問答語料:白鷺時代論壇問答數據,一個問題對應一個最好的答案
微博數據集:華爲李航實驗室發佈,也是論文“Neural Responding Machine for Short-Text Conversation”使用的數據集
新浪微博數據集,評論回覆短句
參考文獻:
系列(三)-- BERT在閱讀理解與問答上應用
DuReader:百度大規模的中文機器閱讀理解數據集
基於知識圖譜的問答系統入門—NLPCC2016KBQA數據集
基於DrQA的中文問答系統構建(一):DrQA安裝
閱讀理解式問答系統參考文章:
Li P, Li W, He Z, et al. Dataset and Neural Recurrent Sequence Labeling Model for Open-Domain Factoid Question Answering[J]. arXiv: Computation and Language, 2016.
DGCNN,全名爲Dilate Gated Convolutional Neural Network,即“膨脹門卷積神經網絡”