對話式人工智能產(chǎn)品越來越常見,從Siri到電話客服,不知不覺中它們已在你身邊尋覓了一個位置。筆者的產(chǎn)品是一款去年上線的客服機器人,簡單聊聊從0到1的經(jīng)驗。
從交互形式來劃分,智能客服包括純語音(如天貓精靈),純文本(如小冰),純可視化界面(如一些電商的客服,完全通過界面交互來完成對話),語音+可視化界面(如Siri等手機助手)。交互形式?jīng)]有好壞,這一點同非AI產(chǎn)品一樣,根據(jù)用戶使用場景選擇最合適的形式即可。
從產(chǎn)品定義出發(fā),智能客服類產(chǎn)品,最根本的價值在于以低成本取代人工客服工作中大量重復(fù)性的部分,再基于這個前提,去挖掘更多商業(yè)變現(xiàn)的可能性。人工客服的工作大致分為兩種,一種是咨詢類的,客服只需回答問題;另一種是申請類的,客服要幫客戶完成一些業(yè)務(wù)辦理。
因此,從可實現(xiàn)的功能來劃分,智能客服可分為問答式和業(yè)務(wù)辦理式,再細分為單輪/多輪問答與單輪/多輪業(yè)務(wù)申請。首先什么叫單輪對話呢?
“吃了嗎您吶?”“吃了”
那么多輪對話的概念呢?
“吃了嗎您吶?”“吃了”“吃了什么呀”“老北京炸醬面”
多輪對話的另一個名字,叫作基于上下文關(guān)系的對話。單輪與多輪申請也是同理,一句話就能解決的為單輪,需要反復(fù)幾次的是為多輪。
無論是問答還是申請業(yè)務(wù),作為一個智能客服,它就離不開NLP,NLP就離不開語料。在如上的例子中,通常的工作方法是,我們定義一個用戶意圖叫“吃了嗎”,然后把相似的語料(吃了么?吃飯了嗎?吃了沒?你有沒有吃飯?……)喂給機器人,之后寫一些用例來測試它識別的準確率,如果識別率較低,就繼續(xù)喂它語料,直到我們對識別率滿意為止。用同樣的方法,我們就可以讓機器人學(xué)會理解很多種用戶意圖了。
多說一嘴,其實這里就是機器學(xué)習(xí)中樣本集與測試集的概念。樣本集用來學(xué)習(xí),測試集用來測試學(xué)習(xí)的效果。另外由于機器學(xué)習(xí)的本質(zhì)還是數(shù)學(xué)與統(tǒng)計,并沒有真正的理解,所以學(xué)習(xí)效果非常依賴語料的質(zhì)量。直觀的表現(xiàn)是,不同的意圖中,語料差異越大,識別的準確率越高。比如,“吃了嗎”和“吃了沒”是相似的,“吃了嗎”和“看星星看月亮從詩詞歌賦談到人生哲學(xué)”是不相似的,那么后者作為兩種意圖去做識別,就是容易分開的,而前者兩個說法過于相近,可能會得到很差的識別結(jié)果。所以訓(xùn)練師需要了解基本的機器學(xué)習(xí)原理,才能夠檢查和調(diào)整樣本集的質(zhì)量。
現(xiàn)在我們的機器人已經(jīng)能夠聽懂一些人話了,下一步只要定義好回復(fù)的內(nèi)容,比如給“吃了嗎”回復(fù)“吃了”,給“睡了嗎”回復(fù)“沒睡”,再把這些需求交給可愛的開發(fā)同學(xué),一個支持單輪問答的機器人就完成了!(好的這是做一個PM最愉快的時刻了)
多輪對話設(shè)計的本質(zhì),是定義場景和將多個單輪對話進行組合。對于前面提到的例子來說,在“吃了”后面問“吃了什么呀”是正常的結(jié)合語境的問法,而脫離語境問這一句的話,就會讓聽者感到困惑。所以這部分的需求是這樣寫:
當(dāng)用戶表達“吃了嗎”的意圖,機器人應(yīng)回復(fù)“吃了”;當(dāng)用戶上一個表達是“吃了嗎”and機器人回復(fù)是“吃了”and用戶這一個表達是“吃了什么呀”,機器人應(yīng)回復(fù)“老北京炸醬面”;當(dāng)用戶上一個表達是“睡了嗎”and機器人回復(fù)是“沒睡”and用戶這一個表達是“吃了什么呀”,機器人應(yīng)回復(fù)“親您想問什么呢?”
再次把需求交給開發(fā),我們就得到了一個支持兩輪對話的機器人。如果需要增加輪次或新的場景,那么在此基礎(chǔ)上添加相應(yīng)的邏輯即可。
再說到業(yè)務(wù)辦理,本質(zhì)是在問答的基礎(chǔ)上增加與用戶相關(guān)的數(shù)據(jù)交互,比如當(dāng)用戶說“幫我訂個車去人民廣場”,那么機器人應(yīng)該回復(fù)“好的”的同時,拿用戶的手機號和“人民廣場”等信息去完成訂車這一操作。大部分時候,業(yè)務(wù)辦理和多輪對話是交叉的,比如訂車的場景下,機器人可能需要再問一下什么時間出發(fā),對車輛是否有要求,那么這至少要用三輪對話來完成。
講完了基本框架,再說說落地。在實際的需求分析過程中,我們需要了解業(yè)務(wù)背景,了解業(yè)務(wù)規(guī)則下人工客服的工作內(nèi)容。從其中歸納出最終用戶一般有哪些需求,他們會問什么,怎么問,抽取出用戶意圖,根據(jù)重復(fù)性高的對話流程做對應(yīng)的輪次設(shè)計。假設(shè)我們做的是信用卡客服機器人,那么用戶意圖很可能有“手續(xù)費怎么算”“逾期了有什么影響”,下一句用戶則可能會繼續(xù)問,“那我還上了還影響嗎”。這其中需要思考的點很多,原則包括但不限于:
以及有一個格外需要注意的地方是,對話式智能產(chǎn)品與其他產(chǎn)品的不同在于,用戶的表達是不受限的。它不像普通的產(chǎn)品,一個頁面上如果只有一個按鈕,那么用戶就不可能有第二個操作。而對話中,用戶可能會講任何東西,例如我的小機器人已經(jīng)被問了若干次,“你的爸爸媽媽是誰呀”。所以在設(shè)計流程時,需要考慮用戶不按正常流程走完的可能性,也要在設(shè)計回復(fù)時,盡可能引導(dǎo)用戶往自己想要的方向去做表達,根本原則是收斂而非發(fā)散。