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