面向NLP的AI產(chǎn)品方法論之如何做好“多輪對(duì)話管理”
看著這個(gè)標(biāo)題我就想笑,原來(lái)的標(biāo)題是,如何做好多輪對(duì)話管理,然后我就默默的加了個(gè)引號(hào),用于斷句。
本文是前一篇文章《NLP方法論:如何設(shè)計(jì)多輪語(yǔ)音對(duì)話技能》的延續(xù),本文主要討論的是對(duì)話設(shè)計(jì),是業(yè)務(wù)設(shè)計(jì)中的重中之重。
VUI相比于GUI,沒(méi)有流程預(yù)設(shè),全程使用對(duì)話輸入,用戶可以隨意表述,無(wú)法有效控制用戶的輸入行為。
有些人會(huì)一句話表達(dá)自己的訴求,有些人不能;有些人表述啰嗦,邏輯混亂,不能一次說(shuō)清所有的要點(diǎn),需反復(fù)追問(wèn);有些人頻繁改變主意,機(jī)器人需要不斷理解,并適配更改意圖;有些人就是跑題大王,經(jīng)常性的多個(gè)頻道切換;有些人壓根不知道自己要啥,希望機(jī)器人給建議;有些人就是無(wú)聊,純屬挑逗機(jī)器人。有些人……
畢竟“人工智能皇冠上的明珠”,理解不了,接不好話就是人工智障。
而當(dāng)用戶想怎么說(shuō)就怎么說(shuō),好比脫韁的野馬,上下文指代、否定、反問(wèn),雙重否定、以漢語(yǔ)言的博大精深之處,又會(huì)分分鐘教計(jì)算機(jī)做人。
- “中國(guó):我們這邊快完了。
- ”“歐洲:我們這邊快完了。
- ”“中國(guó):我們這邊好多了。
- ”“歐洲:我們這邊好多了。”
以上對(duì)話也是2020年3月中旬這個(gè)場(chǎng)景才看懂,過(guò)一段時(shí)間后,大家偶爾翻到這篇文章,未必會(huì)理解。
此前的對(duì)話管理的學(xué)術(shù)報(bào)告的定義是:“考慮歷史對(duì)話信息和上下文的語(yǔ)境等信息進(jìn)行全面地分析,決定系統(tǒng)要采取的相應(yīng)的動(dòng)作,如追問(wèn)、澄清和確認(rèn)等。主要任務(wù)有:對(duì)話狀態(tài)跟蹤和生成對(duì)話策略。實(shí)現(xiàn)途徑上,目前有檢索模型、生成模型等。”
我自己提煉了一套簡(jiǎn)單便于理解的,對(duì)話設(shè)計(jì)的本質(zhì)是管理。目標(biāo)即:通過(guò)問(wèn)答行為,控制用戶的表述,明確其需求,并方便計(jì)算機(jī)理解。
還是以買電影票舉例,我們就是基于各種主副詞槽,模擬出用戶各種各樣的表述,去完成每一輪的查詢,檢索行為。從結(jié)果上而言,用戶只要確認(rèn)好4個(gè)主詞槽(為什么是4個(gè)上篇文章有討論過(guò)思路)就可以完成下單行為了。
當(dāng)用戶的話術(shù)中,一旦分析出,用戶有買電影票的意圖的時(shí)候,此時(shí)主動(dòng)權(quán)就應(yīng)該完全由對(duì)話管理去掌控了。
接下來(lái)的問(wèn)題是?(以買電影票場(chǎng)景為例)如何設(shè)計(jì)問(wèn)題?
一、自己如何問(wèn)?
設(shè)計(jì)話術(shù)問(wèn)題之前,先要把基本功打牢固。
問(wèn)題有兩種,一種是開放式,一種是封閉式。
開放問(wèn)題:?jiǎn)栴}提得比較籠統(tǒng),圈定的范圍很不固定,給回答者很多自由發(fā)揮的空間。用戶回答起來(lái)比較輕松,更易于展示自己,沒(méi)有太多的壓力。
封閉問(wèn)題:?jiǎn)栴}提得很具體,圈定的范圍比較固定,要求回答者在范圍內(nèi)給予明確回答。用戶會(huì)感到壓力,有種被審問(wèn)的感覺(jué)。
所以,面試的時(shí)候,相親的時(shí)候,盡量提開放性問(wèn)題,以方便對(duì)方自由發(fā)揮,更容易展示自己,容易發(fā)散,容易給彼此接話,也不會(huì)把天給聊死。
而在統(tǒng)計(jì)問(wèn)卷,做填表,調(diào)查的時(shí)候,封閉問(wèn)題更容易做到統(tǒng)計(jì),文科生理科生的思維就在于此,要不怎么說(shuō)程序員嚴(yán)謹(jǐn)刻板不浪漫呢,畢竟跟計(jì)算機(jī)打交道過(guò)多。此處沒(méi)有黑程序員的意思,畢竟我也敲過(guò)一些代碼,也認(rèn)識(shí)很多有趣的可愛(ài)的程序員。這是社會(huì)偏見(jiàn),是刻板印象,不可取。
故而,我們可以對(duì)不同的提問(wèn)方式做一個(gè)總結(jié)和提煉。
PS:NER(命名實(shí)體識(shí)別)常見(jiàn)的有時(shí)間、數(shù)字、人名、地名……等等,大家理解為方便做填空題即可,具體可以查詢百科。
回到買電影票場(chǎng)景,我們的核心目標(biāo)是引導(dǎo)用戶說(shuō)出4個(gè)主槽位,最終完成下單的目標(biāo)。
我們可以嘗試著做下練習(xí),以便自己熟悉語(yǔ)感。
練習(xí)填入開放性的問(wèn)題,并且自己寫上答案是為了培養(yǎng)自己“寫問(wèn)句”的業(yè)務(wù)敏感度,確認(rèn)自己使用的話術(shù)是否會(huì)引發(fā)用戶的開發(fā)性回答。同樣我們可以需要做一下封閉型問(wèn)句的練習(xí)。
之所以每個(gè)都寫,完全是出于幫大家理解,以及感受合適不合適。
比如確認(rèn)座位,直接替用戶選好,然后用【確認(rèn)】的問(wèn)法去請(qǐng)求“肯定”回答,就比較合適,如果用戶不滿意可以交付給GUI,絕不推薦語(yǔ)音選座。
比如影片名這類,用【確認(rèn)】問(wèn)句去求“肯定”回答,就不合適,有限條件下,我們無(wú)法命中用戶的喜好,視當(dāng)時(shí)的情況,用【填空】或者【選擇】比較合適
在實(shí)際的過(guò)程中,還會(huì)加入一些話術(shù)比如“為您找到……為您推薦……附近有……請(qǐng)問(wèn)……您看這個(gè)可以么?”等語(yǔ)氣助詞,顯得不那么生硬。
工作中很多的同學(xué),一開始就寫句子經(jīng)常無(wú)頭緒,畢竟任何一個(gè)問(wèn)句都是合理的。
語(yǔ)感不好的人一定要練習(xí),規(guī)避“開放問(wèn)題”,同時(shí)掌握好,使用【填空】【選擇】【確認(rèn)】三種問(wèn)法結(jié)構(gòu)的選擇,做到熟練應(yīng)用,在我們部門是所有人的基本功。
以后再遇見(jiàn)任何業(yè)務(wù),便可基于業(yè)務(wù)情況做問(wèn)法選擇,做到“運(yùn)用之妙,存乎一心 ”。
本階段重點(diǎn):
- 理解開放問(wèn)題和封閉問(wèn)題,以及封閉問(wèn)題的三種方案。
- 使用封閉問(wèn)題去管理用戶答案,以便于計(jì)算機(jī)理解。
問(wèn),是非常重要的基本功,是做好對(duì)話設(shè)計(jì)的前提。
二、用戶如何答?
經(jīng)常有人說(shuō)用戶的回復(fù)千奇百怪,就固定域?qū)υ捊换ザ?,事?shí)并非如此。本章節(jié)主要做預(yù)判,嘗試窮舉用戶的可能答復(fù)。
直接公布方法論,筆者歸納總結(jié)如下:
無(wú)論對(duì)話行為是單輪還是多輪,只要你把對(duì)話的機(jī)會(huì)交給用戶表述,每回復(fù)均有可能發(fā)生。讓我們來(lái)看一下各種情況,以及不同場(chǎng)景下的應(yīng)對(duì)方案。
(1)用戶回復(fù)歸類:跟隨
以看電影舉例,用戶如果每個(gè)都依據(jù)話術(shù),完成指定回答,很容易完成任務(wù),我私下稱這類用戶為“小乖型用戶”。
應(yīng)對(duì)策略:成功提取槽位后,推進(jìn)程就好。
(2)用戶回復(fù)歸類:篩選與修訂
在對(duì)話的過(guò)程中,對(duì)方會(huì)基于自己的需求做篩選行為,亦或者是,明明需要用戶確認(rèn)當(dāng)前詞槽(確定電影場(chǎng)次),而用戶臨時(shí)起意,需要改此前的槽位,比如換電影,或者換影院。
首先,如果每次都讓用戶做肯定否定,必然出現(xiàn)推薦不到位不精準(zhǔn),把用戶逼成“挑選型用戶”。同時(shí),再者,用戶也有挑挑揀揀的權(quán)力啊。我十分不好意思,稱之為“挑選型用戶”。
應(yīng)對(duì)策略:應(yīng)該基于用戶的需求,進(jìn)行調(diào)整,幫助用戶完成查詢/修訂結(jié)果。
語(yǔ)境內(nèi)篩選,非??紤]語(yǔ)義理解,是做好NLP必備的功底,篩選做的好,體驗(yàn)才能夠穩(wěn)穩(wěn)超過(guò)GUI,用戶有需求才篩選,當(dāng)用戶篩選完,自然最終完成填槽行為,最終達(dá)成目的。
還有一種情況,我稱之為無(wú)法處理的篩選,請(qǐng)看例句:
“幫我找一個(gè)高大上的電影院;好看的/有內(nèi)涵的/羞羞的電影;舒服的,觀影效果好的座位;適合我南山吳彥祖/福田劉亦菲看的電影院;”
人類看來(lái),這是屬于無(wú)意義的前置條件,其實(shí)取決于內(nèi)容標(biāo)簽和指代關(guān)系。
例如,“我想看關(guān)于海戰(zhàn)的電影;停車比較方便的電影院;想選一個(gè)靠門的座位”,這句話在人類看來(lái)是有意義的,如果內(nèi)容層面沒(méi)有這個(gè)標(biāo)簽,篩選也無(wú)法做起,從計(jì)算機(jī)角度,我統(tǒng)一歸納為,無(wú)法處理的篩選。而不是無(wú)意義篩選。
應(yīng)對(duì)策略統(tǒng)一處理成,隨機(jī)推薦,并反饋封閉問(wèn)句,請(qǐng)求對(duì)方的封閉回答即可。
如果你反復(fù)跟人類糾結(jié),企圖讓對(duì)方定義更為明確的篩選條件。
“抱歉,我不太明白,什么是羞羞的/有內(nèi)涵的電影。”
“抱歉,我不太明白,什么是海戰(zhàn)有關(guān)的電影。”
那又變成開放問(wèn)題了,這種情況是就算是用戶給AI解釋,AI也未必聽得懂,對(duì)話變長(zhǎng)不利于業(yè)務(wù)的后續(xù)推進(jìn),這種體驗(yàn)就十分不爽了。
(3)用戶回復(fù)歸類:關(guān)聯(lián)咨詢
在某些對(duì)話語(yǔ)境下,很容易問(wèn)出邊界外的問(wèn)題,畢竟有些問(wèn)題是影響用戶購(gòu)買決策的。
例如用戶買機(jī)票的時(shí)候會(huì)問(wèn)天氣情況,人類能懂能猜測(cè)能推理,因?yàn)檫@些是常識(shí),但是計(jì)算機(jī)是否理解常識(shí)并推理,就看各家的設(shè)計(jì)了。
應(yīng)對(duì)策略:本質(zhì)上是如何處理好,任務(wù)、問(wèn)答、閑聊之間的關(guān)系。其實(shí)各家都處理得不一致。
這種基于業(yè)務(wù)需求的關(guān)聯(lián)咨詢,某種意義上也是開放域了,你可以選擇認(rèn)慫,無(wú)法回答此類問(wèn)題,并請(qǐng)求用戶重新確認(rèn)該關(guān)鍵點(diǎn)上的詞槽。
再者你比較負(fù)責(zé),會(huì)盡量覆蓋一些對(duì)話領(lǐng)域,并訓(xùn)練各種FAQ的響應(yīng),但要處理好交叉對(duì)話之間的記憶關(guān)系。
例如:訂機(jī)票業(yè)務(wù),下單之前。
- AI:blablabla(介紹機(jī)票的各種情況)……需要為你預(yù)定么?
- 用戶:哎對(duì)了,上海那天天氣怎么樣?
- AI:blablabla……
- 用戶:那杭州呢?
- AI:blablabla……
- 用戶:行吧,下單吧。
此時(shí)AI應(yīng)該如何處理?兩輪天氣對(duì)話之后的下單?好,如果用戶再問(wèn)三輪,關(guān)于機(jī)場(chǎng),行李托運(yùn),打折情況,然后決定下單,此時(shí)AI應(yīng)該如何處理?
以上并非杜撰,是筆者在用戶對(duì)話log后臺(tái)看到用戶的真實(shí)使用情況。
應(yīng)對(duì)策略的選擇,凡事考量性價(jià)比,在此前的一篇文章中,在思考場(chǎng)景和確定業(yè)務(wù)邊界的時(shí)候,應(yīng)該考量到位,此處不展開。
(4)用戶回復(fù)歸類:無(wú)意圖表述
在某些對(duì)話語(yǔ)境下,很容易問(wèn)出邊界外的問(wèn)題,畢竟有些問(wèn)題是影響用戶購(gòu)買決策的。
例如用戶買機(jī)票的時(shí)候會(huì)問(wèn)天氣情況,人類能懂能猜測(cè)能推理,因?yàn)檫@些是常識(shí),但是計(jì)算機(jī)是否理解常識(shí)并推理,就看各家的設(shè)計(jì)了。這也是一種可能存在的情況。這首先是用戶的權(quán)力,會(huì)出現(xiàn)的異常情況。亦或者是自己的語(yǔ)義理解覆蓋不到位,用戶的明確意圖,識(shí)別成了無(wú)意圖。
應(yīng)對(duì)策略:語(yǔ)義理解不到位的不討論,自己通過(guò)對(duì)話log強(qiáng)化語(yǔ)義覆蓋即可。而真的確定為無(wú)意圖表述,轉(zhuǎn)向做推薦,請(qǐng)求用戶確認(rèn)。
如果用戶反復(fù)選擇無(wú)意圖表述,不填槽便始終無(wú)法推進(jìn),對(duì)話進(jìn)入死循環(huán),AI只需要處理,隨機(jī)回復(fù)策略即可。
(5)用戶回復(fù)歸類:命令控制
命令控制是一個(gè)全局的指令,它僅僅在特定的語(yǔ)境、技能、場(chǎng)景、流程點(diǎn)上完成激活行為。買電影票這個(gè)例子用命令控制的場(chǎng)景較少。其實(shí)相當(dāng)多的技能在某些場(chǎng)合會(huì)激活命令控制,比如播放類的音樂(lè)/視頻和或者游戲等。
應(yīng)對(duì)策略:
每個(gè)流程點(diǎn)的命令控制都是特定的規(guī)則是提前定義好的。如果用戶在未激活的場(chǎng)景下說(shuō)了命令控制,也不會(huì)響應(yīng),而是交由其他業(yè)務(wù)邏輯完成回復(fù)。一種比較通用的回復(fù)是AI:抱歉超出我的理解范圍……(增加一個(gè)封閉提問(wèn)請(qǐng)求用戶回答)?
(6)用戶回復(fù)歸類:跳出或退出
任何輪次,用戶都可以做出“跳出或退出”行為。跳出和退出都是結(jié)束當(dāng)前任務(wù)的表現(xiàn)。
一般而言跳出是打開某個(gè)其他的技能。退出則是明確說(shuō)再見(jiàn)。
同樣存在誤識(shí)別的可能性,特別是看電影,或者聽歌,作品名字可以隨意取。比如《我想去拉薩》就是一個(gè)歌名,會(huì)不會(huì)被導(dǎo)航識(shí)別呢?比如說(shuō)有些音樂(lè)或者電影名,可以完全可以命名為《滾》《退出》《再見(jiàn)》等等。
應(yīng)對(duì)策略:
1、語(yǔ)義理解增強(qiáng)NER的識(shí)別表現(xiàn),以規(guī)避歧義雙關(guān)語(yǔ)表述。2、明確跳出,開啟另一輪任務(wù)對(duì)話,明確退出就結(jié)束對(duì)話。3、基于用戶付出的成本,增加挽留確認(rèn)和退出話術(shù)引導(dǎo)。
為方便記憶,這一段的知識(shí)點(diǎn)歸納于此,做到了以下圖中的幾點(diǎn)就完成了對(duì)話管理,且這種方法論,可用于絕大多數(shù)的任務(wù)型業(yè)務(wù)場(chǎng)景。
三、對(duì)話管理思維
再次重申對(duì)話管理的目標(biāo):通過(guò)問(wèn)答行為,控制用戶的表述,明確其需求,并方便計(jì)算機(jī)理解。
達(dá)成目標(biāo)需要行動(dòng),而思維是統(tǒng)一行動(dòng)綱領(lǐng)的。
最開始我想說(shuō)“理性思維”和“感性思維”的,但是從個(gè)人語(yǔ)感上,從各位讀者的理解角度而言,用在這個(gè)場(chǎng)景下,不精準(zhǔn),遂修訂為“直男思維”和“暖男思維”。
直男思維:目標(biāo)性強(qiáng),簡(jiǎn)潔準(zhǔn)確,不繞彎。
暖男思維:識(shí)別意圖,幽默風(fēng)趣,有溫度。
我們?cè)O(shè)計(jì)一個(gè)技能,就是利用VUI的特性,快速幫助用戶達(dá)成目標(biāo)。即:任務(wù)導(dǎo)向,結(jié)果導(dǎo)向。
全程是幫助用戶快速完成任務(wù)的心態(tài),想讓對(duì)方快速達(dá)成結(jié)果的,用封閉提問(wèn)。
用戶找AI助手是解決問(wèn)題的,而不是調(diào)情的。所有的填槽行為都是為了完成某個(gè)任務(wù),用戶有需求,就應(yīng)該快速給結(jié)果,不墨跡。
下面我用一個(gè)例子來(lái)解釋這兩個(gè)詞兒的準(zhǔn)確與方便記憶所在。
就好比,女生跟男生說(shuō)肚子痛。
男生的身份如果是醫(yī)生,直接封閉型問(wèn)題走起:“痛了幾天了,具體哪個(gè)位置啊,睡眠好不好”,基于用戶的特征判斷,填槽即可,然后開藥、休息、多喝熱水都是解決方案。
男生的身份如果是男朋友或者男同事,上來(lái)就“多喝熱水”,直男無(wú)法識(shí)別意圖(渣男往往更有嗅覺(jué)),直男回復(fù)無(wú)法滿足其預(yù)期,就別怪女生翻白眼了。
這一切的原因是,AI助手在用戶心中是一個(gè)怎樣的角色定位,以及用戶使用AI助手的目的。如果AI助手的定位是情感機(jī)器人,那么處理策略又另當(dāng)別論了,受限于篇幅此處不展開討論。
其實(shí)直男思維和暖男思維并不對(duì)立沖突,跟理和感性思維一樣,可以融合統(tǒng)一,但在不同的場(chǎng)景下,分主次。
在快速幫助用戶解決問(wèn)題的前提下,AI助手一樣能做到幽默風(fēng)趣有溫度。
處理策略歸屬于理性,實(shí)際話術(shù)表現(xiàn)處理歸屬于感性。這一塊需要大量的語(yǔ)感練習(xí),有天賦才能夠發(fā)現(xiàn)對(duì)話文字之間的細(xì)微差別之處。
對(duì)話設(shè)計(jì),在掌握了理性的邏輯思考之后,余下部分其實(shí)是文科生發(fā)揮優(yōu)勢(shì)的戰(zhàn)場(chǎng)。
這里,一張圖片整理本篇方法論知識(shí)點(diǎn)。
文末提幾個(gè)問(wèn)題,給大家思考,也留作后續(xù)的NLP方法論文章的遞進(jìn),同時(shí)也是做好一個(gè)對(duì)話助手的遞進(jìn)。
以下是工作中的同事以及一些讀者朋友留言的問(wèn)題。
1、新用戶對(duì)VUI是陌生的,有時(shí)候看用戶使用非常掙扎,偶爾突破性的提問(wèn)就會(huì)碰到邊界,如何教會(huì)用戶使用各種巧妙的表述,快速達(dá)成任務(wù)目標(biāo)?
2、機(jī)器人的回復(fù)是固定套路,很多時(shí)候用戶僅僅改了一個(gè)篩選條件,AI又不得不從頭到尾念完,然后請(qǐng)求用戶確認(rèn),我自己用都覺(jué)得羅嗦,何況是用戶,而這類信息又必不可少,如何處理好這類問(wèn)題?
私以為,只有當(dāng)我們面對(duì)的問(wèn)題,達(dá)到這種顆粒度,才更能夠做好對(duì)話管理行為。歡迎各位同學(xué)留言評(píng)論,期待著與你的交流。
【本文來(lái)自51CTO專欄作者“老曹”的原創(chuàng)文章,作者微信公眾號(hào):喔家ArchiSelf,id:wrieless-com】