天天看點

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

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

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

1. 什麼是任務型機器人

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

2. 任務型機器人的組成

任務型機器人核心子產品主要包括三部分:

  1. 自然語言了解子產品 —— Language Understanding
  2. 對話管理子產品 —— Dialog Management
  3. 自然語言生成子產品 —— Natural Language Generation

整體架構如下:

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

下面根據各個子產品進行詳細介紹:

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. 規則沖突,較難維護。

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

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

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

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

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

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

3. 統計方法(對齊)

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

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

4. 統計方法(非對齊)

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

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

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。

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

6. 基于上述方法的例子

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

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

基于LSTM的模型:句子的标注格式如下,采用BIO标注,以及對整個句子所屬的意圖示注,采用極大化槽位與意圖的似然來求解模型參數。

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

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

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

2.2 對話管理子產品

2.2.1 簡介

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

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

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)為例,見下圖。

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

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

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

3. 應用:阿裡小蜜調研

阿裡小蜜機器人整體算法體系如下,采用領域識别将輸入的query和context分發到不同的機器人執行任務。

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

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

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

4. 總結

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

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

問答

如何用php檢測搜尋引擎機器人?

相關閱讀

任務型對話之語言了解 

文本情感分析綜述

當深度學習遇見自動文本摘要

**此文已由作者授權騰訊雲+社群釋出,原文連結:https://cloud.tencent.com/developer/article/1145685?fromSource=waitui **

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

海量技術實踐經驗,盡在雲加社群!

https://cloud.tencent.com/developer

繼續閱讀