對話機器人:ChatBot概況詳解
編輯導(dǎo)讀:ChatBot這個概念已經(jīng)提出很久了,意指可幫助人進行對話交互的對話機器人,也簡稱為Bot.。本文主要闡述ChatBot的概況,方便你了解NLP領(lǐng)域目前主流的應(yīng)用對話機器人的基礎(chǔ)詳情,一起來看一下吧。
一、ChatBot 類型
按照訪客預(yù)期的機器人應(yīng)答方式的不同,ChatBot分為3個類型:咨詢型、閑聊型、任務(wù)型。
- 咨詢型:通常為訪客期望就自己提出的問題,機器人能給出相應(yīng)的專業(yè)解答。表現(xiàn)為一問一答的形式。機器人相當于一個“知識顧問”,做“答疑解惑”的事情;
- 閑聊型:訪客的預(yù)期是可陪伴自己聊天的機器人。無論訪客說什么問題,機器人都可以接得上,聊得上。訪客期待的不是某個具體目標的完成,而是情感上的陪伴;
- 任務(wù)型:通常為訪客期望就自己提出的問題,機器人不僅能給出專業(yè)解答,還能主動反問獲取相關(guān)信息,根據(jù)不同信息給出不同的解答。同時還可完成一些任務(wù)指令。廣義上將,無論是“專業(yè)解答”,還是“完成任務(wù)指令”,都是完成任務(wù),故為“任務(wù)型”。
Why:為什么這么分?
這樣的劃分方式,相信大家已經(jīng)見得很多了。但是為什么這么劃分呢?主要有兩個原因。
1)對話的本質(zhì)
對話的本質(zhì)是:對話雙方的信息同步。(此刻停留10秒鐘可回想下你接觸過的各種對話)
對話只是工具,在對話中的信息傳遞,即對話雙方想通過對話傳遞的信息,才是對話的意義。
舉個例子:你跟你的朋友說:“我們?nèi)ネ姘?!”你的朋友接收到這個信息的時候,他心里會有幾個問題想問你:“為啥突然要去玩”、“啥時候去玩”、“去哪里玩”。因為這些信息,你沒告訴他,他需要獲得這些信息,以達到與你同步的階段,才能進行下一步:去完成“去玩”這件事。而對話,就是達成信息同步的工具。(難道他跟你眼對眼對視下就可以知道嘛?)
2)AI現(xiàn)有的技術(shù)發(fā)展限制
雖然AI迎來了新的一春(相對于以前的發(fā)展),但是基于機器學(xué)習(xí)/深度學(xué)習(xí)的NLP技術(shù),目前只能解決一部分問題,或者說,一小部分問題。一個對話系統(tǒng)中,真正用到AI技術(shù)的,目前是基于【意圖】【實體】框架的識別體系,而這部分,也僅僅占對話系統(tǒng)10%-20%(具體我們可以專門開一篇文章詳細分析,這里暫不贅述)。
而基于【意圖】【實體】識別框架,目前最容易達成的,就是“指令式”的對話(沒錯,這里是我給它取的名字)。比如,你對機器人說:“幫我訂張火車票”(抱歉我還是用這個快被說爛的例子)。“訂張火車票”這是一個非常明確的指令。機器人通過識別意圖“訂張火車票”,馬上可進行相應(yīng)信息的填充(詞槽填充追問),幫訪客完成“訂火車票”的任務(wù)目標。
相反的,一些“非指令式”的對話,對話系統(tǒng)很難通過現(xiàn)有的AI技術(shù)處理。比如,在醫(yī)療營銷機器人中,訪客問“我最近肚子有點痛”。這是一個很模糊的指令,機器人并不知道訪客的意圖是什么,甚至人也很難知道?!岸亲油础焙芸赡苁悄c胃的問題,可能是女性疾病問題,等等?,F(xiàn)有的NLP技術(shù)無法識別,因為無法做?邏輯推理。
所以,現(xiàn)有的ChatBot能處理的,且擅長處理的問題,是那些指令式的問題,這就對應(yīng)了我們剛才說的3種分類中的兩種:咨詢型、任務(wù)型,這也是目前應(yīng)用于商業(yè)中最廣泛的兩種類型的ChatBot。而另外一種 閑聊型,是基于?記憶神經(jīng)網(wǎng)絡(luò)模型 的對話方式,是現(xiàn)有神經(jīng)網(wǎng)絡(luò)可支持的實現(xiàn)方式
What:他們的聯(lián)系與區(qū)別是什么?
從訪客的預(yù)期來看,可以分為2大類:任務(wù)達成(Get things done)與 情感陪伴(Get company)
1)任務(wù)達成(Get things done)
咨詢型ChatBot 與任務(wù)型 ChatBot
識別角度上,二者機理一致。均是通過分類(相似度匹配)的方式。
- 咨詢型(FAQ相似度計算):通過訪客問句與每條FAQ的問題,計算相似度匹配,從而回復(fù)問題相應(yīng)的回答。
- 任務(wù)型(意圖識別):通過訪客問句與每個意圖配置的對應(yīng)query,計算相似度匹配。通過多輪的詢問交互,最終解決訪客的問題。
應(yīng)答功能上:任務(wù)型是升級版的咨詢型
- 咨詢型是針對訪客query,直接給予答案回應(yīng)
- 任務(wù)型是針對訪客query,收集query相關(guān)的信息(意圖-詞槽 機制),根據(jù)收集的情況給予答案回應(yīng)(答案回應(yīng)包括:富文本、鏈接跳轉(zhuǎn)、外部資源調(diào)用),是以任務(wù)達成為目的的對話。
2)情感陪伴
閑聊型ChatBot 的對話宗旨在于,基于話題讓對話延續(xù)。在對話理念上與前者有較大區(qū)別。其目的是讓訪客,通過對話得到情感上的支持與陪伴。比如你跟iPhone Siri 說“我想你”,她會回復(fù)你“我也想你”等之類的話,讓你得到情感上的陪伴體驗。
但是從NLP現(xiàn)有的發(fā)展情況來看,閑聊型ChatBot的效果并不是太理想。因為對話沒有一個主題,機器人是因訪客問題回答而回答,是一種“被動式”的應(yīng)答,并無主導(dǎo)對話的能力。所以通俗講,目前的應(yīng)用基本就是讓訪客“圖個樂”的階段。
二、ChatBot平臺
What and What For?為了解決什么問題?
由ChatBot 應(yīng)運而生的就是ChatBot對話平臺。什么是對話平臺呢?對話平臺即為了讓機器人使用者可以配置自己想要的機器人而與之對應(yīng)的機器人配置工具。在這個工具上,用戶可以根據(jù)自己不同的業(yè)務(wù)需求,搭建與之對應(yīng)的機器人,以實現(xiàn)自己的業(yè)務(wù)目標。
舉個栗子:比如A用戶要搭建一個用于接待訪客問題的客服機器人A,與B用戶要搭建一個個人助理類的機器人B。
二者的業(yè)務(wù)目標不同:A主要用于答疑解惑,比如解答“你們銀行借記卡怎么辦理”的問題;B主要用于任務(wù)執(zhí)行,比如發(fā)出一個指令“幫我看看附近有什么適合約會的餐廳”,機器人會根據(jù)用戶的需求做相應(yīng)的任務(wù)動作。
但是二者可以使用同一套ChatBot 平臺,來搭建其相應(yīng)的業(yè)務(wù)。因為二者基于的AI基礎(chǔ)、對話基礎(chǔ)是一致的(或者說是類似的)。
So,ChatBot有幾個特性:
- 可實現(xiàn)不同類型的機器人搭建
- 為用戶不同業(yè)務(wù)訴求提供服務(wù)
順便說一句,現(xiàn)有的對話平臺廠商,同質(zhì)化相當嚴重。各家基于的對話框架可以說基本相同。不同點,也是商業(yè)落地突圍點,在于如何落地,如何基于垂類行業(yè)的精細化設(shè)計與運營。
What’s good?什么樣的對話平臺才是好的對話平臺?
基于上述的幾點,我們可以反推過來,什么樣的ChatBot平臺,才是好的對話平臺呢?
高度抽象:高度抽象ChatBot的基本元素,使之成為所有對話構(gòu)建的基石。
- 高度抽象意味著將ChatBot組塊化,類似于“搭積木”進行搭建。每個積木,都需要做得具有高度通用性
- 高度抽象其實是個“反推”的過程。即從業(yè)務(wù)側(cè)反推,抽象各種業(yè)務(wù)的共性,得到適用于諸多場景的對話元素。如現(xiàn)有ChatBot平臺框架,“意圖”、“詞槽”、“上下文”等對話元素。當然,最通用的部分,已經(jīng)由國內(nèi)外大廠ChatBot平臺定義好了,并形成了行業(yè)內(nèi)的規(guī)范,這部分對于從業(yè)者來說,更多的是沿用,而不是重復(fù)造一個輪子。
拼裝規(guī)律明確:明確與Highlight 組裝拼接元素的規(guī)律,幫助ChatBot使用者快速理清思路,高效配置出符合自己業(yè)務(wù)需求的ChatBot
搭建機器人是有一套規(guī)律的,通俗講叫做“套路”。比如從分析與劃分機器人場景,到確定每個意圖,再到意圖內(nèi)多輪對話、意圖間多輪對話,都是可以有一套可復(fù)用的規(guī)范和配置規(guī)律的。在ChatBot中,這套規(guī)律應(yīng)該是足夠明確,有效幫助用戶理清思路的
簡單易用:簡單、高效、易用,降低新手成本,盡可能預(yù)置通用的的對話原材料,開箱即用。
- 簡單,對于ChatBot平臺來說,是個不簡單的詞。如果是一個新手小白,未受過AI訓(xùn)練師的培訓(xùn),來配置一個機器人的話,學(xué)習(xí)成本是很高的。因為ChatBot本身就不是一個C端易用的產(chǎn)品。我們以行業(yè)標桿Google DialogFlow為例,即使Google已經(jīng)做得足夠易用了(交互體驗較于其他B端產(chǎn)品),但是對于小白用戶,還是需要參照操作手冊學(xué)習(xí)上手。所以,盡量做得簡單,對ChatBot來說是較難的事情。
- 基于1,在“預(yù)置通用的對話原材料”的維度上,可作為的地方大得多。有資源的廠,可以利用自己的行業(yè)積累,為用戶提供預(yù)置語料的服務(wù)??蓜e小看,在搭建機器人中,語料數(shù)據(jù)的重要性,可以說是重中之重。不僅影響的是冷啟動的效率與質(zhì)量,更影響機器人運營的效果好壞,直接或間接覺得機器人產(chǎn)品的生命周期。
- 基于2,目前行業(yè)的一個論調(diào)是,在【算法】【算力】【數(shù)據(jù)】這AI三駕馬車中,【算法】已通過開源代碼受到廣為人知,且現(xiàn)有的深度學(xué)習(xí)的能力閾限大家也都了解一二,用深度學(xué)習(xí)可以實現(xiàn)的對話領(lǐng)域的巨大突破可能性極小;【算力】通過GPU等技術(shù)硬件的購買,花錢都能達到差不多的算力水平。現(xiàn)在的【數(shù)據(jù)】是各廠間做出產(chǎn)品差異化的重要點。因為【數(shù)據(jù)】以為著技術(shù)落地業(yè)務(wù)的關(guān)鍵橋梁,一個能解決業(yè)務(wù)問題的機器人,好過一百個用牛逼的技術(shù)堆出來但不解決業(yè)務(wù)問題的機器人?!緮?shù)據(jù)】作為ChatBot的養(yǎng)料,至關(guān)重要。
四、ChatBot Skill 5要素
ChatBot Skill 5要素(當然,也是我這么劃分的)分別是:意圖、實體、詞槽、回復(fù)、上下文。為什么是這5個要素?這5個要素具體是什么作用?他們背后有什么具體邏輯呢?
我們可以這么理解,ChatBot是要幫訪客做事的(此處我們只討論應(yīng)用最廣也最容易落地的任務(wù)型ChatBot)。這個“事”,有可能是回答問題(答疑解惑),也有可能是幫助訪客完成一個任務(wù)(任務(wù)執(zhí)行)?;卮饐栴}通常我們通過FAQ的問句相似度匹配即能完成。
回到我們上文說的,對話的本質(zhì)是信息的交換與同步。機器人要幫訪客做一件事,首先得知道訪客要做什么事(意圖),所以,現(xiàn)有ChatBot系統(tǒng)的首要任務(wù),就是確定訪客想要干嘛,也就是 意圖識別。只要當ChatBot信息與訪客對等了(至少在訪客想做的事情的維度),ChatBot才能幫訪客做相應(yīng)的任務(wù)。
1. 意圖
意圖描述的是某個訪客query領(lǐng)域內(nèi)的封閉問題。一次意圖框架的完成(意圖識別-詞槽填充-回復(fù)),會完成一次對話閉環(huán)。
相比于意圖,上下文 描述的是對話上下文不同意圖之間的問題。
詞槽、回復(fù)與意圖掛鉤。即:一個意圖,對應(yīng)特定的詞槽、回復(fù)
1)如何進行意圖識別?
意圖識別本質(zhì)上是分類問題。目前行業(yè)主流的做法就是,將同類的句子做句子集合,相應(yīng)的邊成為一個意圖。即:將所有相同含義的話,抽象為一個意圖。比如【訂火車票】這個意圖,同類的句子是:“我要訂火車票”、“給我訂張火車票”、“火車票能訂不”,等等。所以本質(zhì)上講,ChatBot是通過判斷訪客問句與意圖中配置的問句是否相似,來判定是否屬于該意圖的,即進行歸類。
2)意圖的配置
意圖配置的原理:通過預(yù)測訪客會問的問題,與意圖建立關(guān)系。在機器學(xué)習(xí)以前,這些類似的表述,是需要人工一句一句地去配置的,只有配置了某問法,機器才會做相應(yīng)的匹配命中,觸發(fā)相應(yīng)的回答,即通過規(guī)則來判斷。配置這么多問句,是不是現(xiàn)在想想都頭皮發(fā)麻?
而NLP的意圖識別能力,就是可以通過配置少量的語料,進行自主地泛化。把那些未配置的,但是表述又相近的問句,也可識別到該意圖中(當然,識別也是有準確率的,跟算法模型、訓(xùn)練數(shù)據(jù)相關(guān))
舉個例子:剛才【訂火車票】這個意圖,假如配置的幾個問句:“我要訂火車票”、“給我訂張火車票”、“火車票能訂不”。ChatBot不僅可以識別到這幾個問句,也能識別到如“你能給我訂個火車票么”、“給我來張火車票”,等等的表述,歸為該意圖。
2. 實體
1)什么是實體?
實體是對話(表現(xiàn)為訪客query)中,有實際意義和指代的詞。
2)為什么需要實體?
- 通過定義實體,讓系統(tǒng)去采集訪客query中有用的、人想要采集的信息
- 實體識別(NER):相當于是使用AI技術(shù)的采集器
- 枚舉實體/規(guī)則實體: 相當于是使用人為規(guī)則的采集器
3)如何進行實體識別?
NER過程:從訪客query–>分詞–>實體識別 的過程
3. 詞槽
1)詞槽是什么?
詞槽是與意圖綁定的變量
2)為什么需要詞槽?
因為詞槽是對話中信息傳遞的載體,對于對話的信息來說至關(guān)重要。
3)如何進行詞槽的填充?
通過實體識別,將實體識別的值,賦值給詞槽
回到剛才的例子,當識別到意圖后,如:訪客說“幫我訂張火車票”(原諒我還是舉這個被說爛的例子,誰讓它通俗易懂呢),識別到意圖為【訂車票】,那么ChatBot需要知道你要定啥時候的票,從哪兒到哪兒,乘車人是誰,要幾等票。對應(yīng)的參數(shù)為:出發(fā)時間,出發(fā)地點,到達地點,乘車人,票類型。所以ChatBot接下來需要做什么?當然需要問訪客這么些個信息呀。所以,這幾個參數(shù)信息,就是【訂車票】這個意圖下,關(guān)聯(lián)的幾個詞槽。
這幾個詞槽該如何收集呢?沒關(guān)系,交給NLP算法?,F(xiàn)有NLP一個很重要的成就是就NER,即實體識別。通俗地說,就是可以把訪客問句中的重要信息給摳出來,作為對話的關(guān)鍵信息(相當于機器人理解了訪客的意思,雖然在人看來還是挺智障的程度,但是誰讓它可以在某些領(lǐng)域應(yīng)用的好呢)。所以回到剛才的問題,NLP算法可以把ChatBot想要的幾個參數(shù)信息,通過發(fā)問的形式,從訪客問句中提取出來:出發(fā)時間,出發(fā)地點,到達地點,乘車人,票類型。
4. 回復(fù)
一旦獲取了這些信息,ChatBot就該干正事兒了所以ChatBot就應(yīng)該基于收集到的信息,給出相應(yīng)的回復(fù)?;貜?fù)分為純文本回復(fù)、調(diào)用接口回復(fù)、執(zhí)行動作回復(fù)?!坝喕疖嚻薄钡淖罱K結(jié)果是幫助訪客“訂成功火車票”,所以需要執(zhí)行“訂票”的動作,并把訂票信息返回給訪客。
5. 上下文
最后,上下文 的意思是指不同意圖間,可能存在繼承信息與意圖切換的情況。
舉個例子:訪客問“今天北京的天氣怎么樣?”,ChatBot回復(fù):“今天北京晴轉(zhuǎn)多云,有陣風(fēng),25攝氏度”。訪客接著又問“那上海呢”,那么ChatBot應(yīng)該需要知道,“那上海呢”這句話,還是意指“查天氣”這個意圖,而不是在問“上海的空氣質(zhì)量”、“上海的限號是多少”其他意圖的問題。所以需要用到【上下文】的概念來配置ChatBot。
一個對話的進行,是跟對話進行中的信息繼承與更新相關(guān)的。所以不同的意圖之間,不止存在同等并列的關(guān)系,還存在嵌套關(guān)系(父意圖、子意圖、子子意圖)、上下繼承關(guān)系,等等。這些均需使用上下文這個對話元素來實現(xiàn)。
五、總結(jié)
ChatBot在目前的各行業(yè)、各領(lǐng)域,有廣泛的應(yīng)用,也不乏各大廠、中小廠進入ChatBot平臺開發(fā)的賽道。萬變不離其宗,無論ChatBot在領(lǐng)域中多垂直、應(yīng)用多豐富,其始終離不開上文闡述的基礎(chǔ)要點內(nèi)容。原因其實也很簡單,因為目前的AI技術(shù)、NLP技術(shù)發(fā)展到這個層面,其對應(yīng)的底層原理是相對固定的。國內(nèi)外對于ChatBot的設(shè)計理念,大致是趨同的。同時也期待AI的發(fā)展,可以突破目前的一些壁壘和限制,基于AI的設(shè)計就可更加智能、更加靈活。希望對你有幫助。
作者:咖喱魚丸,5年P(guān)M經(jīng)驗,2年AI PM經(jīng)驗
本文由 @咖喱魚蛋egg 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
明確與Highlight 組裝拼接元素的規(guī)律——highlight是指什么
很不錯,通俗易懂