對話機器人:ChatBot概況詳解 | 人人都是產品經理

編輯導讀:ChatBot這個概念已經提出很久了,意指可幫助人進行對話交互的對話機器人,也簡稱為Bot.。本文主要闡述ChatBot的概況,方便你了解NLP領域目前主流的應用對話機器人的基礎詳情,一起來看一下吧。

一、ChatBot 類型

按照訪客預期的機器人應答方式的不同,ChatBot分為3個類型:諮詢型、閑聊型、任務型。

  • 諮詢型:通常為訪客期望就自己提出的問題,機器人能給出相應的專業解答。表現為一問一答的形式。機器人相當於一個「知識顧問」,做「答疑解惑」的事情;
  • 閑聊型:訪客的預期是可陪伴自己聊天的機器人。無論訪客說什麼問題,機器人都可以接得上,聊得上。訪客期待的不是某個具體目標的完成,而是情感上的陪伴;
  • 任務型:通常為訪客期望就自己提出的問題,機器人不僅能給出專業解答,還能主動反問獲取相關信息,根據不同信息給出不同的解答。同時還可完成一些任務指令。廣義上將,無論是「專業解答」,還是「完成任務指令」,都是完成任務,故為「任務型」。

Why:為什麼這麼分?

這樣的劃分方式,相信大家已經見得很多了。但是為什麼這麼劃分呢?主要有兩個原因。

1)對話的本質

對話的本質是:對話雙方的信息同步。(此刻停留10秒鐘可回想下你接觸過的各種對話)

對話只是工具,在對話中的信息傳遞,即對話雙方想通過對話傳遞的信息,才是對話的意義。

舉個例子:你跟你的朋友說:「我們去玩吧!」你的朋友接收到這個信息的時候,他心裡會有幾個問題想問你:「為啥突然要去玩」、「啥時候去玩」、「去哪裡玩」。因為這些信息,你沒告訴他,他需要獲得這些信息,以達到與你同步的階段,才能進行下一步:去完成「去玩」這件事。而對話,就是達成信息同步的工具。(難道他跟你眼對眼對視下就可以知道嘛?)

2)AI現有的技術發展限制

雖然AI迎來了新的一春(相對於以前的發展),但是基於機器學習/深度學習的NLP技術,目前只能解決一部分問題,或者說,一小部分問題。一個對話系統中,真正用到AI技術的,目前是基於【意圖】【實體】框架的識別體系,而這部分,也僅僅占對話系統10%-20%(具體我們可以專門開一篇文章詳細分析,這裡暫不贅述)。

而基於【意圖】【實體】識別框架,目前最容易達成的,就是「指令式」的對話(沒錯,這裡是我給它取的名字)。比如,你對機器人說:「幫我訂張火車票」(抱歉我還是用這個快被說爛的例子)。「訂張火車票」這是一個非常明確的指令。機器人通過識別意圖「訂張火車票」,馬上可進行相應信息的填充(詞槽填充追問),幫訪客完成「訂火車票」的任務目標。

相反的,一些「非指令式」的對話,對話系統很難通過現有的AI技術處理。比如,在醫療營銷機器人中,訪客問「我最近肚子有點痛」。這是一個很模糊的指令,機器人並不知道訪客的意圖是什麼,甚至人也很難知道。「肚子痛」很可能是腸胃的問題,可能是女性疾病問題,等等。現有的NLP技術無法識別,因為無法做 邏輯推理。

所以,現有的ChatBot能處理的,且擅長處理的問題,是那些指令式的問題,這就對應了我們剛才說的3種分類中的兩種:諮詢型、任務型,這也是目前應用於商業中最廣泛的兩種類型的ChatBot。而另外一種 閑聊型,是基於 記憶神經網路模型 的對話方式,是現有神經網路可支持的實現方式

What:他們的聯繫與區別是什麼?

從訪客的預期來看,可以分為2大類:任務達成(Get things done)與 情感陪伴(Get company)

1)任務達成(Get things done)

諮詢型ChatBot 與任務型 ChatBot

識別角度上,二者機理一致。均是通過分類(相似度匹配)的方式。

  • 諮詢型(FAQ相似度計算):通過訪客問句與每條FAQ的問題,計算相似度匹配,從而回復問題相應的回答。
  • 任務型(意圖識別):通過訪客問句與每個意圖配置的對應query,計算相似度匹配。通過多輪的詢問交互,最終解決訪客的問題。

應答功能上:任務型是升級版的諮詢型

  • 諮詢型是針對訪客query,直接給予答案回應
  • 任務型是針對訪客query,收集query相關的信息(意圖-詞槽 機制),根據收集的情況給予答案回應(答案回應包括:富文本、鏈接跳轉、外部資源調用),是以任務達成為目的的對話。

2)情感陪伴

閑聊型ChatBot 的對話宗旨在於,基於話題讓對話延續。在對話理念上與前者有較大區別。其目的是讓訪客,通過對話得到情感上的支持與陪伴。比如你跟iPhone Siri 說「我想你」,她會回復你「我也想你」等之類的話,讓你得到情感上的陪伴體驗。

但是從NLP現有的發展情況來看,閑聊型ChatBot的效果並不是太理想。因為對話沒有一個主題,機器人是因訪客問題回答而回答,是一種「被動式」的應答,並無主導對話的能力。所以通俗講,目前的應用基本就是讓訪客「圖個樂」的階段。

二、ChatBot平台

What and What For?為了解決什麼問題?

由ChatBot 應運而生的就是ChatBot對話平台。什麼是對話平台呢?對話平台即為了讓機器人使用者可以配置自己想要的機器人而與之對應的機器人配置工具。在這個工具上,用戶可以根據自己不同的業務需求,搭建與之對應的機器人,以實現自己的業務目標。

舉個栗子:比如A用戶要搭建一個用於接待訪客問題的客服機器人A,與B用戶要搭建一個個人助理類的機器人B。

二者的業務目標不同:A主要用於答疑解惑,比如解答「你們銀行借記卡怎麼辦理」的問題;B主要用於任務執行,比如發出一個指令「幫我看看附近有什麼適合約會的餐廳」,機器人會根據用戶的需求做相應的任務動作。

但是二者可以使用同一套ChatBot 平台,來搭建其相應的業務。因為二者基於的AI基礎、對話基礎是一致的(或者說是類似的)。

So,ChatBot有幾個特性:

  • 可實現不同類型的機器人搭建
  • 為用戶不同業務訴求提供服務

順便說一句,現有的對話平台廠商,同質化相當嚴重。各家基於的對話框架可以說基本相同。不同點,也是商業落地突圍點,在於如何落地,如何基於垂類行業的精細化設計與運營。

What’s good?什麼樣的對話平台才是好的對話平台?

基於上述的幾點,我們可以反推過來,什麼樣的ChatBot平台,才是好的對話平台呢?

高度抽象:高度抽象ChatBot的基本元素,使之成為所有對話構建的基石。

  1. 高度抽象意味著將ChatBot組塊化,類似於「搭積木」進行搭建。每個積木,都需要做得具有高度通用性
  2. 高度抽象其實是個「反推」的過程。即從業務側反推,抽象各種業務的共性,得到適用於諸多場景的對話元素。如現有ChatBot平台框架,「意圖」、「詞槽」、「上下文」等對話元素。當然,最通用的部分,已經由國內外大廠ChatBot平台定義好了,並形成了行業內的規範,這部分對於從業者來說,更多的是沿用,而不是重複造一個輪子。

拼裝規律明確:明確與Highlight 組裝拼接元素的規律,幫助ChatBot使用者快速理清思路,高效配置出符合自己業務需求的ChatBot

搭建機器人是有一套規律的,通俗講叫做「套路」。比如從分析與劃分機器人場景,到確定每個意圖,再到意圖內多輪對話、意圖間多輪對話,都是可以有一套可復用的規範和配置規律的。在ChatBot中,這套規律應該是足夠明確,有效幫助用戶理清思路的

簡單易用:簡單、高效、易用,降低新手成本,儘可能預置通用的的對話原材料,開箱即用。

  1. 簡單,對於ChatBot平台來說,是個不簡單的詞。如果是一個新手小白,未受過AI訓練師的培訓,來配置一個機器人的話,學習成本是很高的。因為ChatBot本身就不是一個C端易用的產品。我們以行業標杆Google DialogFlow為例,即使Google已經做得足夠易用了(交互體驗較於其他B端產品),但是對於小白用戶,還是需要參照操作手冊學習上手。所以,盡量做得簡單,對ChatBot來說是較難的事情。
  2. 基於1,在「預置通用的對話原材料」的維度上,可作為的地方大得多。有資源的廠,可以利用自己的行業積累,為用戶提供預置語料的服務。可別小看,在搭建機器人中,語料數據的重要性,可以說是重中之重。不僅影響的是冷啟動的效率與質量,更影響機器人運營的效果好壞,直接或間接覺得機器人產品的生命周期。
  3. 基於2,目前行業的一個論調是,在【演算法】【算力】【數據】這AI三駕馬車中,【演算法】已通過開源代碼受到廣為人知,且現有的深度學習的能力閾限大家也都了解一二,用深度學習可以實現的對話領域的巨大突破可能性極小;【算力】通過GPU等技術硬體的購買,花錢都能達到差不多的算力水平。現在的【數據】是各廠間做出產品差異化的重要點。因為【數據】以為著技術落地業務的關鍵橋樑,一個能解決業務問題的機器人,好過一百個用牛逼的技術堆出來但不解決業務問題的機器人。【數據】作為ChatBot的養料,至關重要。

四、ChatBot Skill 5要素

ChatBot Skill 5要素(當然,也是我這麼劃分的)分別是:意圖、實體、詞槽、回復、上下文。為什麼是這5個要素?這5個要素具體是什麼作用?他們背後有什麼具體邏輯呢?

我們可以這麼理解,ChatBot是要幫訪客做事的(此處我們只討論應用最廣也最容易落地的任務型ChatBot)。這個「事」,有可能是回答問題(答疑解惑),也有可能是幫助訪客完成一個任務(任務執行)。回答問題通常我們通過FAQ的問句相似度匹配即能完成。

回到我們上文說的,對話的本質是信息的交換與同步。機器人要幫訪客做一件事,首先得知道訪客要做什麼事(意圖),所以,現有ChatBot系統的首要任務,就是確定訪客想要幹嘛,也就是 意圖識別。只要當ChatBot信息與訪客對等了(至少在訪客想做的事情的維度),ChatBot才能幫訪客做相應的任務。

1. 意圖

意圖描述的是某個訪客query領域內的封閉問題。一次意圖框架的完成(意圖識別-詞槽填充-回復),會完成一次對話閉環。
相比於意圖,上下文 描述的是對話上下文不同意圖之間的問題。

詞槽、回復與意圖掛鉤。即:一個意圖,對應特定的詞槽、回復

1)如何進行意圖識別?

意圖識別本質上是分類問題。目前行業主流的做法就是,將同類的句子做句子集合,相應的邊成為一個意圖。即:將所有相同含義的話,抽象為一個意圖。比如【訂火車票】這個意圖,同類的句子是:「我要訂火車票」、「給我訂張火車票」、「火車票能訂不」,等等。所以本質上講,ChatBot是通過判斷訪客問句與意圖中配置的問句是否相似,來判定是否屬於該意圖的,即進行歸類。

2)意圖的配置

意圖配置的原理:通過預測訪客會問的問題,與意圖建立關係。在機器學習以前,這些類似的表述,是需要人工一句一句地去配置的,只有配置了某問法,機器才會做相應的匹配命中,觸發相應的回答,即通過規則來判斷。配置這麼多問句,是不是現在想想都頭皮發麻?

而NLP的意圖識別能力,就是可以通過配置少量的語料,進行自主地泛化。把那些未配置的,但是表述又相近的問句,也可識別到該意圖中(當然,識別也是有準確率的,跟演算法模型、訓練數據相關)

舉個例子:剛才【訂火車票】這個意圖,假如配置的幾個問句:「我要訂火車票」、「給我訂張火車票」、「火車票能訂不」。ChatBot不僅可以識別到這幾個問句,也能識別到如「你能給我訂個火車票么」、「給我來張火車票」,等等的表述,歸為該意圖。

2. 實體

1)什麼是實體?

實體是對話(表現為訪客query)中,有實際意義和指代的詞。

2)為什麼需要實體?

  1. 通過定義實體,讓系統去採集訪客query中有用的、人想要採集的信息
  2. 實體識別(NER):相當於是使用AI技術的採集器
  3. 枚舉實體/規則實體: 相當於是使用人為規則的採集器

3)如何進行實體識別?

NER過程:從訪客query–>分詞–>實體識別 的過程

3. 詞槽

1)詞槽是什麼?

詞槽是與意圖綁定的變數

2)為什麼需要詞槽?

因為詞槽是對話中信息傳遞的載體,對於對話的信息來說至關重要。

3)如何進行詞槽的填充?

通過實體識別,將實體識別的值,賦值給詞槽

回到剛才的例子,當識別到意圖后,如:訪客說「幫我訂張火車票」(原諒我還是舉這個被說爛的例子,誰讓它通俗易懂呢),識別到意圖為【訂車票】,那麼ChatBot需要知道你要定啥時候的票,從哪兒到哪兒,乘車人是誰,要幾等票。對應的參數為:出發時間,出發地點,到達地點,乘車人,票類型。所以ChatBot接下來需要做什麼?當然需要問訪客這麼些個信息呀。所以,這幾個參數信息,就是【訂車票】這個意圖下,關聯的幾個詞槽。

這幾個詞槽該如何收集呢?沒關係,交給NLP演算法。現有NLP一個很重要的成就是就NER,即實體識別。通俗地說,就是可以把訪客問句中的重要信息給摳出來,作為對話的關鍵信息(相當於機器人理解了訪客的意思,雖然在人看來還是挺智障的程度,但是誰讓它可以在某些領域應用的好呢)。所以回到剛才的問題,NLP演算法可以把ChatBot想要的幾個參數信息,通過發問的形式,從訪客問句中提取出來:出發時間,出發地點,到達地點,乘車人,票類型。

4. 回復

一旦獲取了這些信息,ChatBot就該干正事兒了所以ChatBot就應該基於收集到的信息,給出相應的回復。回復分為純文本回復、調用介面回復、執行動作回復。「訂火車票」的最終結果是幫助訪客「訂成功火車票」,所以需要執行「訂票」的動作,並把訂票信息返回給訪客。

5. 上下文

最後,上下文 的意思是指不同意圖間,可能存在繼承信息與意圖切換的情況。

舉個例子:訪客問「今天北京的天氣怎麼樣?」,ChatBot回復:「今天北京晴轉多雲,有陣風,25攝氏度」。訪客接著又問「那上海呢」,那麼ChatBot應該需要知道,「那上海呢」這句話,還是意指「查天氣」這個意圖,而不是在問「上海的空氣質量」、「上海的限號是多少」其他意圖的問題。所以需要用到【上下文】的概念來配置ChatBot。

一個對話的進行,是跟對話進行中的信息繼承與更新相關的。所以不同的意圖之間,不止存在同等並列的關係,還存在嵌套關係(父意圖、子意圖、子子意圖)、上下繼承關係,等等。這些均需使用上下文這個對話元素來實現。

五、總結

ChatBot在目前的各行業、各領域,有廣泛的應用,也不乏各大廠、中小廠進入ChatBot平台開發的賽道。萬變不離其宗,無論ChatBot在領域中多垂直、應用多豐富,其始終離不開上文闡述的基礎要點內容。原因其實也很簡單,因為目前的AI技術、NLP技術發展到這個層面,其對應的底層原理是相對固定的。國內外對於ChatBot的設計理念,大致是趨同的。同時也期待AI的發展,可以突破目前的一些壁壘和限制,基於AI的設計就可更加智能、更加靈活。希望對你有幫助。

 

作者:咖喱魚丸,5年PM經驗,2年AI PM經驗