揭祕任務型對話機器人(上篇)

騰訊雲加社群發表於2018-06-14

歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~

本文來自專欄語言、知識與人工智慧,作者騰訊知文實驗室

1. 什麼是任務型機器人

任務型機器人指特定條件下提供資訊或服務的機器人。通常情況下是為了滿足帶有明確目的的使用者,例如查流量,查話費,訂餐,訂票,諮詢等任務型場景。由於使用者的需求較為複雜,通常情況下需分多輪互動,使用者也可能在對話過程中不斷修改與完善自己的需求,任務型機器人需要通過詢問、澄清和確認來幫助使用者明確目的。

2. 任務型機器人的組成

任務型機器人核心模組主要包括三部分:

  1. 自然語言理解模組 —— Language Understanding
  2. 對話管理模組 —— Dialog Management
  3. 自然語言生成模組 —— Natural Language Generation

整體框架如下:

img

下面根據各個模組進行詳細介紹:

2.1 自然語言理解模組

2.1.1 簡介

當使用者語言經過自然語言理解模組時,即需要經過領域識別,使用者意圖識別以及槽位提取三個子模組。領域識別,即識別該語句是不是屬於這個任務場景,一般有多個機器人整合時,如閒聊機器人,問答機器人等,領域識別應當在進入任務型機器人之前做判斷與分發;意圖識別,即識別使用者意圖,細分該任務型場景下的子場景;實體識別與槽位填充,用於對話管理模組的輸入。

2.1.2 舉例

對這個模組舉個簡單的例子:假設Text=“人民幣對美元的匯率是多少”;經過自然語言理解模組會解析為 act ( slot1 = value1, slot2 = value2 ……) 的形式,即意圖,槽位,槽位資訊三元組形式,即 Text會解析為“查詢(槽位1=人民幣,槽位2=美元)”這樣的形式。

2.1.3 自然語言理解模組的相關研究工作

意圖理解與槽位提取作為任務型機器人的核心模組之一,引起研究者的廣泛興趣。有以下方法:

1. 基於規則理解方法

例如商業對話系統VoiceXML和Phoenix Parser (Ward et al., 1994; Seneff et al., 1992; Dowding et al., 1993)。Phoenix Parser 將輸入的一句文字(詞序列)對映到由多個語義槽(Slot)組成的語義框架裡,一個語義槽的匹配規則由多個槽值型別與連線詞構成的,可以表示一段完整的資訊,如圖2所示。優點:不需要大量訓練資料。缺點:1. 規則開發易出錯 。2. 調整規則需要多輪的迭代。 3. 規則衝突,較難維護。

img

Phoenix基於TownInfo語料的測試結果見表1:

img

2. 規則與統計結合的方法

例如組合範疇語法 (CCG),可以基於標註資料,對大量的複雜語言現象進行統計建模和規則自動提取。 由於語法規則的寬鬆性以及與統計資訊的結合,該方法在口語語義理解中 的應用可以學習解析無規則的文字 (Zettlemoyer et al., 2007)。基於ATIS語料的測試結果見表2:

img

3. 統計方法(對齊)

基於詞對齊資料的口語理解通常被看做一個序列標註問題。基於生成模型有隨機有限狀態機 (FST),統計機器翻譯(SMT)、動態貝葉斯網路 (DBN)等,判別模型主要CRF,SVM,MEMM等*(Hahn et al., 2011)。*基於Media evaluation預料測試結果見表3。

img

4. 統計方法(非對齊)

如生成式的動態貝葉斯網路 (DBN) *(Schwartz et al., 1996) ,缺點:馬爾科夫假設使得該模型不能準確地對詞的長程相關性進行建模;分層隱狀態的方法能解決上述長程相關性的問題,但所需要的計算複雜度很高 *(He et al., 2006);支援向量機分類器的基礎上提出了語義元組分類器 *(Mairesse et al., 2009)* 的方法。基於TownInfo,ATIS語料測試結果見表4。

img

5. 深度學習方法

單向RNN應用於語義槽填充任務,在ATIS評測集合上取得了顯著性超越CRF模型的效果 (Yao et al., 2013; Mesnil et al., 2013); LSTM等一些擴充套件(BiLSTM+CRF);CNN用於序列標註 (Xu et al. 2013; Vu 2016) ;基於序列到序列(sequence-to-sequence)的編碼-解碼(encoder-decoder)模型,attention等擴充 (Zhu et al., 2016; Liu et al., 2016); 加入外部記憶單元(External Memory)的迴圈神經網路可以提升網路的記憶能力 (Peng et al., 2015);RecNN (Guo et al., 2014)等。上述方法測試結果見表5。

img

6. 基於上述方法的例子

基於規則的解析:如將”我想查詢一下美元現在的匯率”輸入基於規則的解析器,可以解析出如下意圖與槽位的資訊。

img

基於LSTM的模型:句子的標註格式如下,採用BIO標註,以及對整個句子所屬的意圖示註,採用極大化槽位與意圖的似然來求解模型引數。

img

img

基於統計方法的模型(SVM):對句子進行n-gram特徵提取,通過訓練領域的SVM與槽位的SVM進行分類。

img

2.2 對話管理模組

2.2.1 簡介

自然語言理解模組的三元組輸出將作為對話管理系統的輸入。對話管理系統包括兩部分,狀態追蹤以及對話策略。狀態追蹤模組包括持續對話的各種資訊,根據舊狀態,使用者狀態(即上述的三元組)與系統狀態(即通過與資料庫的查詢情況)來更新當前的對話狀態如圖3所示。 對話策略與所在任務場景息息相關,通常作為對話管理模組的輸出,如對該場景下缺失槽位的反問策略等。

img

2.2.2 舉例

還是繼續上面的text=“人民幣對美元的匯率是多少”。“查詢(槽位1=人民幣,槽位2=美元)”這樣的形式將作為對話管理模組的輸入,這時候狀態追蹤模組就要根據前幾輪的資訊,結合該輸入判斷該輪的查詢狀態,確定查詢的槽位,以及與資料庫的互動。如得到想要查詢的確實是人民幣對美元的匯率資訊。這時候,根據現有的對話策略判斷當前的槽位狀態,最後給出對話管理模組的輸出,如查詢結果(源貨幣=人民幣,目標貨幣=美元,匯率=1:0.16)

2.2.3 對話管理系統的相關研究工作

對話管理模組相當於任務型機器人的大腦。主要方法有基於規則與統計學習的方法。目前流行的有基於強化學習的對話管理模組。基於強化學習的對話管理系統需要很多資料去訓練。Jost Schatzm-ann and Steve Young等人提出了agenda user simulator模型來模擬使用者,不斷與對話管理模組進行訓練,一定程度上解決了標註資料稀缺的問題。但對於複雜對話還是不能很好應付。Jianfeng Gao等通過實驗,證明了基於強化學習訓練的對話管理系統對噪聲的抗干擾能力較強,同時整體誤差來看槽位誤差造成的影響比意圖誤差造成的影響更嚴重。

2.3 自然語言生成模組

自然語言模組通常採用基於模版,基於語法或模型等。模版與語法主要基於規則的策略,模型可以用如LSTM等網路生成自然語言。

2.4 端到端的模型

這裡以微軟的End-to-End 模型 (Jianfeng Gao et al., 2018)為例,見下圖。

img

文章的主要亮點是根據 (Jost Schatzmann and Steve Young, Fellow et al., 2009) 從語義層次上升到自然語言層次,同時用誤差模型對基於DQN強化學習的對話管理系統深入探究。User Simulator 沿用Steve Young之前的基於堆疊的agenda模型,自然語言生成模組和自然語言理解模組採用LSTM模型,對話管理模組採用基於DQN (Jianfeng Gao et al., 2018)

img

3. 應用:阿里小蜜調研

阿里小蜜機器人整體演算法體系如下,採用領域識別將輸入的query和context分發到不同的機器人執行任務。

img

其中任務型機器人的演算法框架如下,基本上採用第一部分所講的框架。

img

4. 總結

本文較為淺顯的介紹了基於任務型對話的框架與一些方法,大家如果需要深入研究可在參考文獻中尋找相應的文章閱讀。當然,目前這個領域還存在較多的問題,如:

  1. 語義的表示方式。如何將句子設計成合適的語義結構形式,增添語義解析,語義推理,領域遷移的魯棒性等,一直是十分有挑戰性的問題。
  2. 任務型的資料收集和標註非常困難,如何設計一套較為通用的資料標註格式,有待研究推進,隨著使用者對任務型領域要求的日益增多,利用已有的資源對領域遷移的研究變得尤其重要。

問答
如何用php檢測搜尋引擎機器人?
相關閱讀
任務型對話之語言理解 
文字情感分析綜述
當深度學習遇見自動文字摘要

此文已由作者授權騰訊雲+社群釋出,原文連結:https://cloud.tencent.com/dev…

歡迎大家前往騰訊雲+社群或關注雲加社群微信公眾號(QcloudCommunity),第一時間獲取更多海量技術實踐乾貨哦~

相關文章