[NLP] 關於意圖式 (Intent-based) 跟流程式 (flow-based) Chatbot

簡單整理這兩種方式的對話機器人之優缺點。

閱讀時間:3 分鐘。

近幾年 Chatbot 越來越流行,Chatbot 製作平台也如雨後春筍,從 Google dialogflow(前 API.ai)、IBM Waston 這些主打 NLP 的公司,到 Manychat、Chatfuel 這類非技術背景的人也可以上手的平台,有各種設計 Chatbot 的方式與流程。

這篇文章想整理的是現有平台設計 Chatbot 的兩派邏輯,主要可以分成 intent-based 跟 flow-based,也就是判斷使用者意圖跑流程的兩種作法。接著我們會討論這兩種方式的優缺點,並談談怎麼結合彼此的優勢。

那讓我們繼續看下去吧。


先前提提要一下,一般 Chatbot 會有的流程(PC by 我們家正妹老師)

source: https://www.csie.ntu.edu.tw/~yvchen/s105-icb/project.html

我知道字很多,我們只要注意上面紅色框框的部分即可。

0. 語音辨識 (ASR)

大家可以自動略過這段,目前我們談的 Chatbot 並不包含這件事。

1. 自然語言理解 (Natural Language Understanding, NLU)

這裏強調如何理解使用者的 input,並做下一步的處理。

2. 對話流程 (Dialogue Management, DM)

在接收使用者 input 後,決定要做什麼動作 (action)。

3. 自然語言生成 (Natural Language Generation, NLG)

因為是 chatbot,所以這個回應的動作通常是伴隨一句話或是其他多媒體素材,在這裡會決定生成的內容。


那麼這個流程實際在 intent-based 跟 flow-based 平台是怎麼應用的呢?

1. intent-based 的平台

  • NLU: 判定使用者 input 的 intent(意圖),也就是找出使用者打這句話是想做什麼事(ex. 想找產品、想問問題)。
  • DM: 決定要做什麼動作來回應(ex. 提供產品介紹、回答問題)。
  • NLG: 決定到底要產生什麼文字/放什麼圖,完成一次對話。

2. flow-based 的平台

  • NLU: 在某個流程內接收使用者某個按鈕/回覆/關鍵字。
  • DM & NLG: 根據我們事先寫好的腳本,跳到下一個流程並回話。

應該不難發現,前者重點放在「怎麼正確判斷使用者現在想幹嘛」,再做出相應的動作;後者重點是放在「使用者在流程內的互動體驗」,並沒有太多 NLU (語言理解)的技術。

在大部分的 intent-based 的 chatbot 設計裡,使用者可以隨便輸入內容(超、可、怕!!),因此 chatbot 能正確判斷現在的機器人狀態 (state) 跟上下文 (context) 是非常重要的。為了讓回話更能呼應使用者行為 (user behavior),通常會需要大量 data 來訓練這些判斷 intent 的 model(光用關鍵字難以預測我們千奇百怪的使用者啊)。現有例子像 Siri、Google Assistant、Amazon Alexa。

至於 flow-based 的 chatbot,目前大部分平台限縮使用者只能以某些字或是按鈕的方式回話,所以會花許多時間在設計使用者流程 (user flow)。這些流程必須清楚定義所有使用者可能會有的想法與動作,並在流程裡呈現。相較於前者,flow-based 被廣泛運用在電商或許多任務導向 (task-oriented) 的領域裡,需要的開發成本較低,也沒有什麼程式門檻。例子像是 H&M Bot、 Wholesome Bot,還有之前我們家幫 Audi 做的 line bot 也是(趁機打廣告 XD)

簡單比較一下兩者:

比較 intent-based 與 flow-based 的 chatbot 設計優缺點。

意圖 vs. 流程:何不嘗試結合兩者的優點?

這是一個大哉問:到底要怎麼結合兩者的優點呢?

在現今機器學習與自然語言處理的技術下,也許可以有更多結合兩者優點的方法。我們可以創造一個 AI Chatbot ,在幫助使用者進入單一流程時,同時考慮使用者的 input、context,以及個人特質。這個問題的核心是,到底要怎麼建立一個更智慧的流程設計?

以現有的技術來說,以 intent-based 輔助 flow-based 的使用者意圖辨識,並在流程設計裡加入更多個人化 (personalization) 與好的使用者體驗,是比較可行的做法(有點像一個大型的 state machine model,聽不懂就當我沒說)。我們一樣可以讓使用者跑流程,但步驟上除了進入流程,也可以考慮以下幾點:

  1. 使用者從哪個流程來的?之前的使用者狀態 (state) 有什麼參數?
  2. 使用者輸入裡有什麼主要 & 其他意圖 (intent)?
  3. 使用者輸入裡有沒有某些 slot value?
  4. 使用者到目前的情緒變化 (sentiment) 是如何?
  5. 使用者的對話歷史裡有沒有特別提到的關鍵字或一直存在的意圖?

還有很多我沒有列出來的,大家也可以自己想想看。

總之我個人認為,要結合的話,目標就是想盡辦法以 Flow-based 設計出一套感覺有個人化的對話流程,讓人有 intent-based 的錯覺(以為好像很自由其實都是寫好的),也才能滿足一般大眾對 Chatbot 的錯誤想像(X)

至於這些資訊要怎麼取得 & 設計,我之後有機會再來寫一篇講講我自己的看法好了。

(ps. 抱歉我中文太爛,不知道怎麼翻譯 slot value 嗚嗚。slot value 在 NLP task 裡面,有點像要填入特定 attribution 的值,好比說訂機票系統裡,使用者輸入「我要一張去倫敦的機票」,系統可能就會抓出「張數、目的點」這兩個 slot ,他們的 value 分別就是「1、倫敦」這樣。)

那我要怎麼檢測我的 Chatbot 的設計好不好呢?

一個比較好來設計&檢視你的 chatbot 的方法應該是這樣子:

source: https://blog.instabot.io/instabot-blog/nlp-hybrid-bots-pt1

訓練 Chatbot 的時間可以拉到非常長,在一般 intent-based 的 Chatbot 裡,因為需要大量的資料 train model ,所以從搜集、調參數,就會是一段很漫長而且想死的過程(掩面)。

對於 flow-based 的 Chatbot 來說,這段時間就會投注在設計流程上啦(攤手),也就是說設計 Chatbot 對話的過程中,事前就要依據目標族群 (Target Audience) 有不同設計,並且要花大量時間找使用者測試流程,然後一改再改,改到天荒地老(掩面)

有興趣的人也可以參考這一篇文章,主要以 business 的角度討論設計 chatbot 的成本。

https://chatbotsmagazine.com/how-much-time-goes-into-developing-a-messenger-chatbot-ce86afdfb969

如果你不知道怎麼開始設計一個新的 Chatbot,通常 Flow-based 會是一個比較好入門的方法,這時候歡迎參考我們家的產品 👉 業配開始(X)

這是官網👇

https://chatbotsmagazine.com/how-much-time-goes-into-developing-a-messenger-chatbot-ce86afdfb969

身為一個中文很爛的人,謝謝各位看完這篇落落長的文字,祝大家都可以好好設計完畢自己的 Chatbot 齁齁齁,週末記得去投票啊 <3333

同場加映:我家 Chatbot 夠 Chatbot 嗎?


Reference

https://chatbotsmagazine.com/how-much-time-goes-into-developing-a-messenger-chatbot-ce86afdfb969

https://chatbotsmagazine.com/how-much-time-goes-into-developing-a-messenger-chatbot-ce86afdfb969


我是 Mu,目前在 BotBonnie 擔任 UX 實習生。

BotBonnie 是一個聊天機器人製作平台,利用簡單的圖像化介面就可以親手打造出自己的聊天機器人嘍,想了解更多請點選這裡 👇

https://chatbotsmagazine.com/how-much-time-goes-into-developing-a-messenger-chatbot-ce86afdfb969

大家掰掰 🍌🍌🍌🍌

有什麼想告訴邦妮的嗎?

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料