【NLP-ChatBot】能干活的聊天机器人-对话系统概述
我們之前介紹過,按照應用場景的不同,聊天機器人可以分為問答系統,對話系統以及閑聊機器人三類。今天我們就來詳細講一講其中的對話系統。
作者&編輯 | 小Dream哥
1 什么是對話系統
通常來講,對話系統會面向某一個任務,具備處理一些業務的能力。對話系統首先能夠理解人類給出的信息,將其表示為一個內部狀態,然后根據策略和對話狀態選擇一些動作,最后把動作轉化為自然語言的表達形式。
例如,一個可以完成訂票任務的對話系統,可以根據系統目前的所掌握的信息(目標城市),向用戶詢問還需要了解的信息(票的數目),來完成用戶訂票的需求。
如上圖所示,對話系統一般由語音識別(ASR),自然語言理解(NLU),對話管理(DM),自然語言生成(NLG),語音合成(TTS)5個部分構成。各部分的功能如下:
1)語音識別(ASR)將原始的語音信號轉換成文本信息;
2)自然語言理解(NLU)將識別出來的文本信息轉換為機器可以理解的語義表示;
3)對話管理(DM)基于對話的狀態判斷系統應該采取什么動作,這里的動作可以理解為機器需要表達什么意思;
4)自然語言生成(NLG)將系統動作轉變成自然語言文本;
5)語音合成(TTS)將自然語言文本變成語音輸出給用戶。
第一和第五部分不是必需的,我們后面會著重介紹二三部分,即NLU和DM部分。
2 自然語言理解NLU
自然語言理解(NLU)的目標是將文本信息轉換為可被機器處理的語義表示。
因為同樣的意思有很多種不同的表達方式,對機器而言,理解一句話里每個詞的確切含義并不重要,重要的是理解這句話表達的意思,也就是意圖識別。
NLU還有一個重要的任務就是槽位提取,例如,接受訂外賣的機器人,需要提取用戶所訂的餐館的名字和所訂食物的名稱。
舉個例子,當用戶說“我想訂一份肯德基的外賣”。對話系統接受到這個輸入之后,先進行意圖識別,識別到用戶的意圖是定餐;然后再進行實體識別,識別到餐廳名字肯德基。因此,“我想訂一份肯德基的外賣”可以轉化為對話系統能處理的語義表示:{"intent":"訂餐","entity":"肯德基"}
意圖識別的本質其實就是一種文本匹配,主要由兩種實現方法:語義匹配和文本分類。關于語義匹配和文本分類,筆者之前都有文章介紹,感興趣的讀者可以出門左轉,再看一下:
槽位提取的本質其實就是命名實體識別,筆者曾經寫過專門的系列文章介紹過,感興趣的讀者可以再看看:
3? 對話管理DM
因為對話系統常常涉及多輪對話,因此需要對目前的對話狀態進行管理,以決定系統下一步的動作和給用戶的回應。本質上,對話管理實際上就是一個決策過程,系統在對話過程中不斷根據當前狀態決定下一步應該采取的最優動作(如:提供結果,詢問特定限制條件,澄清或確認需求等),從而最有效的輔助用戶完成信息或服務獲取的任務。
DM的輸入就是用戶輸入的語義表達(或者說是用戶行為,是 NLU 的輸出)和當前對話狀態,輸出就是下一步的系統行為和更新的對話狀態。這是一個循環往復不斷流轉直至完成任務的過程。
對話管理是對話系統中最獨特的部分,是個很龐大的工程,涉及的知識又多又雜,在這里挑重點做一個引導性的介紹。
總的來說,對話管理模塊主要由以下功能:
1.對話狀態維護
主要負責維護和更新對話狀態,假設t時刻的對話狀態為s_t,它依賴于前一時刻的狀態 s_t-1,和前一時刻系統行為a_t-1,以及當前時刻對應的用戶行為a_t ,即s_t= f(s_t-1,a_t-1, a_t)。
2.生成系統決策
根據當前的系統對話狀態s_t,決定系統下一步的行為dialog act(da),即da_t =g(s_t)。
3.作為接口與后端/任務模型進行交互
4.生成有效的用戶答復
對話管理的研究非常的多,其具體的實現方式,總結起來,大致分為三種:
1)基于規則的對話管理
總的來說,基于規則的對話管理就是把對話管理建模為有限狀態機(Finite State Machine),把對話看做是在有限狀態內跳轉的過程,每個狀態都有對應的動作和回復,如果能從開始節點順利的流轉到終止節點,任務就完成了。
DM每次有新的輸入時,對話狀態都根據輸入進行跳轉。跳轉到下一個狀態后,都會有對應的動作被執行。上圖中展示了一個控制物體前后左右移動或停止的對話系統中的基于FSM的DM,大家可以清晰的看到各種狀態的定義和狀態間的跳轉邏輯。基于FSM的DM,優點是簡單易用,缺點是狀態的定義以及每個狀態下對應的動作都要靠人工設計,因此不適合復雜的場景。
這個方法有以下的特點:
1.人為定義對話流程
2.完全由系統主導,系統問,用戶答
3.答非所問的情況直接忽略
4.建模簡單,能清晰明了的把交互匹配到模型
5.難以擴展,很容易變得復雜
6.適用于簡單任務,對簡單信息獲取很友好,難以處理
? ?復雜的問題
7.缺少靈活性,表達能力有限,輸入受限,對話結構和
? ?流轉路徑受限
2)基于統計的對話管理
前面提到的方法是需要人工來制定規則和狀態,然而人很難預測所有可能的場景,這種方法也并不能重用,換個任務就需要從頭再來。這種情況下,強化學習的優勢就凸顯出來了,RL-Based DM能夠對系統理解用戶輸入的不確定性進行建模,讓算法來自己學習最好的行為序列。
簡單來說,它將對話表示成一個部分可見的馬爾可夫決策過程。所謂部分可見,是因為DM的輸入是存在不確定性的,例如NLU的結果可能是錯誤的。因此,對話狀態不再是特定的馬爾可夫鏈中特定的狀態,而是針對所有狀態的概率分布。在每個狀態下,系統執行某個動作都會有對應的回報(reward)。基于此,在每個對話狀態下,選擇下一步動作的策略即為選擇期望回報最大的那個動作。
這個方法有以下的特點:
1)只需定義馬爾可夫決策過程中的狀態和動作,狀態間的轉移關系可以通過學習得到;
2)使用強化學習可以在線學習出最優的動作選擇策略。
3)仍然需要人工定義狀態,因此在不同的領域下該方法的通用性不強。
3)基于數據的對話管理
最后一種DM方法是基于神經網絡的。它的基本思路是直接使用神經網絡去學習動作選擇的策略,即將NLU的輸出等其他特征都作為神經網絡的輸入,將動作選擇作為神經網絡的輸出,其中一個例子是rasa框架。
這樣做的好處是,對話狀態直接被神經網絡的隱向量所表征,不再需要人工去顯式的定義對話狀態。當然這種方法的問題是需要大量的數據去訓練神經網絡,其實際的效果也還有待大規模應用的驗證。
總結
對話系統的搭建是一個具有挑戰的工作。由于用戶對系統的期待高,對錯誤的容忍度很低。而自然語言的表達方式非常靈活多變,這對NLU的準確度和DM的靈活度都提出了非常大的挑戰。
我們在知識星球實現了一個完整的對話系統,感興趣的同學可以掃描下面的二維碼了解。
讀者們可以留言,或者加入我們的NLP群進行討論。感興趣的同學可以微信搜索jen104,備注"加入有三AI NLP群"。
下期預告:聊天機器人-生成式機器人介紹
知識星球推薦
掃描上面的二維碼,就可以加入我們的星球,助你成長為一名合格的自然語言處理算法工程師。
知識星球主要有以下內容:
(1) 聊天機器人。考慮到聊天機器人是一個非常復雜的NLP應用場景,幾乎涵蓋了所有的NLP任務及應用。所以小Dream哥計劃以聊天機器人作為切入點,通過介紹聊天機器人的原理和實踐,逐步系統的更新到大部分NLP的知識,會包括語義匹配,文本分類,意圖識別,語義匹配命名實體識別、對話管理以及分詞等。
(2) 知識圖譜。知識圖譜對于NLP各項任務效果好壞的重要性,就好比基礎知識對于一個學生成績好壞的重要性。他是NLP最重要的基礎設施,目前各大公司都在著力打造知識圖譜,作為一個NLP工程師,必須要熟悉和了解他。
(3) NLP預訓練模型。基于海量數據,進行超大規模網絡的無監督預訓練。具體的任務再通過少量的樣本進行Fine-Tune。這樣模式是目前NLP領域最火熱的模式,很有可能引領NLP進入一個全新發展高度。你怎么不深入的了解?
轉載文章請后臺聯系
侵權必究
往期精選
總結
以上是生活随笔為你收集整理的【NLP-ChatBot】能干活的聊天机器人-对话系统概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【NLP实战系列】朴素贝叶斯文本分类实战
- 下一篇: 【AI产品】一键时光穿梭表情互动,这款F