本文基於作者在對話機器人專案實踐過程中,對任務型對話系統(多輪對話平臺)的幾點認知,如存在介紹有誤之處,歡迎各位指正。

近年來,隨著Echo、Google Home、天貓精靈、 小愛同學等智慧音箱的普及,人們對智慧對話類產品的接受度也越來越高。以天貓精靈為例,我們可以透過語音對話控制天貓精靈播放音樂、查詢天氣、播放德雲社相聲,甚至還可以實現訂外賣、充話費、網上購物等複雜需求。天貓精靈是如何實現這些功能的呢?本文將會向大家進行介紹,對話機器人中的重要組成部分——

任務型對話系統

對話機器人系列——任務型對話系統介紹

對於對話機器人而言,常見的對話形式有三種:

問答型(QA)

任務型(Task)

閒聊型(Chat):

1。

問答型對話(QA)

:主要為一問一答的形式,機器人對使用者提出的問題進行解析,在知識庫已有的內容中查詢並返回正確答案。對於機器人而言,每次問答均是獨立的,與上下文資訊無關。

對話機器人系列——任務型對話系統介紹

2。

任務型對話(Task)

:主要指機器人為滿足使用者某一需求而產生的多輪對話,機器人透過理解、澄清等方式確定使用者意圖,繼而透過答覆、呼叫API等方式完成該任務。在該任務內,機器人需要理解上下文資訊並作出下一步的動作。

對話機器人系列——任務型對話系統介紹

3。

閒聊型對話(Chat)

:閒聊型對話大多為開放域的對話,主要以滿足使用者的情感需求為主,透過產生有趣、富有個性化的答覆內容,與使用者進行互動。

對話機器人系列——任務型對話系統介紹

當然,對於一個對話機器人而言,並非只包含一種型別的對話,通常是多種對話型別的組合。

任務型對話系統也常被稱為

多輪對話系統

,目前工業界有兩種實現方式,一種是基於

規則

的實現方式,另一種則是基於

End-to-End

的實現方式。基於End-to-End的實現方式試圖訓練一個從使用者端自然語言輸入到機器端自然語言輸出的整體對映關係,從而提高系統的靈活性與可拓展性,但該模型對資料的質量和數量要求非常高,並且存在不可解釋性,因此,

目前工業界大多采用基於規則的實現方式

。本文以下內容中所提到的任務型對話系統也是基於規則的實現方式。

像天貓精靈這種透過語音形式進行互動的任務型對話系統,由ASR、NLP、DM和TTS四部分構成。由於ASR與TTS在工業界已經有非常成熟的產品(科大訊飛、阿里等),所以對於任務型對話系統而言,其產品設計的核心是NLP和DM。

對話機器人系列——任務型對話系統介紹

(任務型對話(多輪對話)系統構成)

語音識別(ASR)

:將語音訊號轉換為文字資訊。

自然語言理解( NLU)

:對文字資訊進行識別解析,轉換成計算機可理解的結構化語義表示。

對話狀態跟蹤(DST)

:根據對話歷史和NLU模組輸出的語義表示,維護並更新當前的對話狀態。

對話策略(Policy)

:根據當前的對話狀態執行下一步系統動作。

自然語言生成(NLG)

:將對話策略輸出的語義表示轉換成自然語言文字。

語音合成(TTS)

:將文字資訊轉換為語音並輸出給使用者。

舉個栗子,比如我想要訂上海到深圳的機票,我們來看看機器人是如何完成這個任務的:

對話機器人系列——任務型對話系統介紹

首先,當用戶輸入“幫我訂張機票”這句話後,系統透過AI模型識別到使用者這句話的意圖為“訂機票”(以前系統只能處理關鍵詞、正則表示式等結構化的資料,而如今機器學習尤其是深度學習的發展極大提高了NLU能力,透過大量的語料訓練,模型便可以實現非常好的泛化能力);

然後,根據常規訂機票的流程可知,要完成“訂機票”這個意圖,系統需要獲取[出發地]、[目的地]和[出發時間]這三項關鍵資訊。因此,系統透過提前配置好的澄清話術向用戶進行反問以獲取該資訊;

最後,當系統獲取到所有關鍵資訊後,透過API介面查詢到符合條件的航班資訊並向用戶進行確認。當用戶確認後,系統則執行訂機票的動作,幫助使用者完成訂機票這一任務。

透過上面的例子,我們可以發現多輪對話其實是圍繞使用者意圖進行的,因此我們可以簡單定義一個

意圖

即為一個最基本的多輪對話。

在多輪對話過程中,系統為完成任務而需要獲取的關鍵資訊我們稱之為“

槽位

”,上面“訂機票”這個意圖所包含的槽位就是[出發地]、[目的地]和[出發時間];而槽位內的資訊我們稱之為“

槽值

”(行業內也有稱之為實體或槽位引數),上面的例子中,[出發地]這一槽位內的槽值就是“上海”;而系統把“上海”這兩個字填充到[出發地]這個槽位的過程,則被稱之為“

填槽

”,即 Slot filling。

想要完成填槽這一過程,首先,系統需要在使用者這句話中識別出“上海”這兩個字是一個地點(這裡涉及到NLP的NER任務,不詳細展開),然後再將“上海”這兩個字填充到對應的[出發地]槽位中。目前工業界主流的填槽方式是透過“

澄清

”這一動作來完成,簡單講就是在每個槽位配置好相應的話術,當該槽位未被填充時,系統透過向用戶傳送澄清話術來詢問該槽位的資訊。

以上僅僅是以一個最簡單、最理想化的訂機票為例進行介紹,實際訂機票過程中可能還會涉及到飛機艙位、座位的選擇以及在對話過程中使用者進行打斷等。。。這對於任務型對話系統的設計,則需要考慮意圖跳轉、多意圖任務、指代識別、槽位繼承等多種複雜的對話策略,在這裡就不一一展開介紹了。

看到這裡,如果你現在能夠了解什麼是填槽,那麼恭喜你,你已經知道多輪對話系統的基本原理了!

本文最開始我們提到的智慧音箱應該是現階段多輪對話系統商業化應用的最成功的例子,除此之外,多輪對話系統還常被應用於線上客服機器人、外呼機器人、車載語音助手、智慧手機助理、企業辦公助手等產品上。

最後,引用Caffe之父賈揚清對於人工智慧的看法:“人工智慧是接受輸入的資訊,透過資訊的整理判斷,像人一樣對輸入的資訊做出一系列理性行為和決策。”其實對於對話機器人而言,最核心的能力也正是“

感知

”與“

決策

”。

題圖來自Unsplash,基於CCO協議

參考資料:

1。 Serban I V, Sordoni A, Lowe R, et al。 A hierarchical latent variable encoder-decoder model for generating dialogues[C]//Thirty-First AAAI Conference on Artificial Intelligence。 2017。

2。 Berant J, Chou A, Frostig R, et al。 Semantic parsing on freebase from question-answer pairs[C]//Proceedings of the 2013 Conference on Empirical Methods in Natural Language Processing。 2013: 1533-1544。

3。 Dhingra B, Li L, Li X, et al。 Towards end-to-end reinforcement learning of dialogue agents for information access[J]。 arXiv preprint arXiv:1609。00777, 2016。

4。 Lei W, Jin X, Kan M Y, et al。 Sequicity: Simplifying task-oriented dialogue systems with single sequence-to-sequence architectures[C]//Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)。 2018: 1437-1447。

5。 Madotto A, Wu C S, Fung P。 Mem2seq: Effectively incorporating knowledge bases into end-to-end task-oriented dialog systems[J]。 arXiv preprint arXiv:1804。08217, 2018。

6。 《人機對話系統設計邏輯探究》——朱鵬臻

7。 《任務導向型對話系統——對話管理模型研究最新進展》——戴音培、虞暉華、蔣溢軒、唐呈光、李永彬、孫健