面向NLP的AI產(chǎn)品方法論——如何通過數(shù)據(jù)分析迭代優(yōu)化
本系列文字是一位創(chuàng)業(yè)者的投稿《面向NLP的AI產(chǎn)品方法論》,老曹盡量不做變動(dòng)和評(píng)價(jià),盡量保持系列文章的原貌,這是本系列的最后一篇——第5篇
語音/對(duì)話式交互是一件非常有挑戰(zhàn)性的設(shè)計(jì),極少有業(yè)務(wù)能一蹴而就。筆者所在的公司,過往開發(fā)了十幾個(gè)多輪語音交互技能,平均算下來,首個(gè)BOT上線后,差不多得有半年時(shí)間進(jìn)行迭代,才能夠有穩(wěn)定的,比較好的數(shù)據(jù)表現(xiàn)。
迭代優(yōu)化的方法論有很多種,本文著重講,如何通過數(shù)據(jù)分析(也是筆者最喜歡用的),去迭代語音/對(duì)話式交互技能。
先引用此前筆者寫的《NLP方法論:如何設(shè)計(jì)多輪語音技能》一文,最后一個(gè)模塊的兩句話:
“上線前,依照流程標(biāo)準(zhǔn),已經(jīng)做好了數(shù)據(jù)埋點(diǎn),并搭建好了完整的用戶對(duì)話log分析后臺(tái)。
上線后,通過業(yè)務(wù)后臺(tái)觀察業(yè)務(wù)數(shù)據(jù),和實(shí)際真實(shí)用戶的表述,繼而迭代技能,提升體驗(yàn)。”
工欲善其事,必先利其器,強(qiáng)大的數(shù)據(jù)后臺(tái)集群,是讓業(yè)務(wù)變得越來越好的神兵利器。此前筆者也寫過如何搭建數(shù)據(jù)后臺(tái),這里就只講,在已有后臺(tái)的情況下數(shù)據(jù)分析思路。
一個(gè)AI語音交互助手,核心價(jià)值是幫助用戶完成任務(wù),而在完成任務(wù)的過程中,又有著各種阻礙影響到AI助手為用戶服務(wù),傷害體驗(yàn),影響價(jià)值交付。所以我們解決問題的思考點(diǎn)在于:如何從業(yè)務(wù)過程中,通過數(shù)據(jù)發(fā)現(xiàn)各種問題。
問題一旦能被發(fā)現(xiàn),就自然有解決方案。
從分析角度,筆者分為三層(遞進(jìn)延展):
- 用戶在使用AI助手的過程中遭遇過哪些顯性問題。
- 為什么AI助手最終沒有幫助用戶完成任務(wù)。
- 如果用戶最終完成了任務(wù),使用過程中有哪些不爽。
下圖是全文邏輯結(jié)構(gòu)。
一、如何發(fā)現(xiàn)顯性問題
所謂顯性異常,指的是那些明顯影響用戶體驗(yàn),最終影響AI助手幫助用戶達(dá)成任務(wù)目標(biāo)的問題。各家公司都能夠通過基本的規(guī)則設(shè)計(jì)發(fā)現(xiàn)問題,只要能發(fā)現(xiàn)問題,就有解決方案,各個(gè)業(yè)務(wù)設(shè)計(jì)者無非是,在有限條件下做業(yè)務(wù)權(quán)衡取舍。
來源1、數(shù)據(jù)后臺(tái)+風(fēng)控預(yù)警
上線前一定要做好的數(shù)據(jù)埋點(diǎn)工作行為。例如:網(wǎng)絡(luò)延遲、響應(yīng)慢、異常、軟硬件故障、崩潰……此前在數(shù)據(jù)字典一文中也統(tǒng)計(jì)了這種情況(字段有刪減)。
既要統(tǒng)計(jì)行為數(shù),也要統(tǒng)計(jì)人次,行為數(shù)代表著一共發(fā)生了多少次這類問題,人次代表著影響了多少個(gè)用戶(即范圍),事先設(shè)定好閾值,達(dá)到了一定情況就郵件/短信預(yù)警。
BOT業(yè)務(wù)一旦異常,就會(huì)迅速的被發(fā)現(xiàn)。當(dāng)時(shí)間拉長(zhǎng)到3個(gè)月,產(chǎn)品里出現(xiàn)的各個(gè)方面的異常問題也能夠得出一條曲線,問題一暴露,針對(duì)性進(jìn)行優(yōu)化即可。
這類問題,屬于AI助手的穩(wěn)定性考量范疇,但是一旦發(fā)生,極為嚴(yán)重,基本上任務(wù)就沒法完成了。
來源2、踩贊分析+用戶后臺(tái)
DUI一般會(huì)設(shè)計(jì)這類功能反饋,以出門問問舉例,每次AI完成一句話后,底部都會(huì)有一個(gè)贊或者踩的功能。
同時(shí)也直接把客服模塊放到了較深的一個(gè)層級(jí),用戶在使用過程中,向我們提出的各種建議,找客服人員投訴什么的。
出門問問這一塊做得比較細(xì)致,頁面層級(jí)比較深,期望用戶能夠給予更精準(zhǔn)的反饋,到底自己的AI助手哪里做的不夠好。
但是實(shí)際上,只有少量的用戶,會(huì)幫你做思考和分類,(我自己就是點(diǎn)個(gè)踩就跑掉,才不幫你做分類呢,我就表達(dá)不爽,問題出在哪你自己想去),甚至你也攔不住用戶瞎填,這一塊完全就是把壓力推到用戶那邊,期望用戶付出更多的成本幫助定位業(yè)務(wù)問題。
但從另外一個(gè)角度而言,不也是有相當(dāng)一部分用戶,認(rèn)真分類填寫了,節(jié)省了我們的壓力么?你看這其實(shí)是設(shè)計(jì)選擇,沒有好壞之分。
用戶的每次業(yè)務(wù)反饋都會(huì)在后臺(tái)出現(xiàn),不管用哪種方式收集,都能夠以埋點(diǎn)的方式暴露出問題,暴露的人越多,這一塊的問題就越值得重視。自然這種問題類型,也會(huì)長(zhǎng)期積累,跑出一個(gè)問題分布圖。
來源3、關(guān)鍵詞搜索+情緒識(shí)別
前面的基本是用戶使用GUI交互行為表達(dá)了不爽,但是這個(gè)范圍依舊不夠大,我們需要繼續(xù)延展。
如果是,用戶基本上不給點(diǎn)觸反饋、產(chǎn)品沒有設(shè)計(jì)踩的功能,亦或者是純語音交互,怎么抓出來問題呢?
這一塊就能夠用得到對(duì)話log分析了,不討論隱私問題,基本上用戶跟AI助手發(fā)生的每一句語音,對(duì)話,點(diǎn)觸行為,都會(huì)生成log。
一些關(guān)鍵詞搜索,必然是用戶表述的一些話,很容易就推理出,用戶必然受挫,只不過情緒程度不一樣。
另外一種就是使用模型算法,一般是用于輿情監(jiān)控用的,可以抓出來用戶的積極/消極情緒和言論。有很多大廠都開放這類業(yè)務(wù),不避嫌的話埋入自己的業(yè)務(wù)模塊里面就好,當(dāng)然你也可以自己訓(xùn)練。
找到這些東西之后,然后分析這些話術(shù)出現(xiàn)在哪些技能里面,分布在哪個(gè)環(huán)節(jié)上,問題就自然暴露出來了。
二、是什么導(dǎo)致任務(wù)未完成
用戶使用AI助手,就是為了完成任務(wù)的。
對(duì)話過程中,如果用戶啟動(dòng)了某項(xiàng)業(yè)務(wù),最終(不管結(jié)果是好還是壞,用戶是否滿意)沒有結(jié)果,就是巨大的問題。
此處定義:任務(wù)未完成,指的是未成功填充全部槽位,用戶最終沒有得到結(jié)果。例如:買電影票和買機(jī)票沒到確認(rèn)下單環(huán)節(jié),問天氣,最終沒給到天氣結(jié)果等。
越是槽位越多的業(yè)務(wù),越值得好好打磨,畢竟輪次越多,意外就越多,用戶隨時(shí)隨地會(huì)離開。
一般AI助手返回結(jié)果給用戶都會(huì)有一個(gè)標(biāo)記。所以,此處的規(guī)則就比較容易定義。在一次會(huì)話行為中,觸發(fā)了某項(xiàng)技能,最終該項(xiàng)技能沒有(標(biāo)記)返回結(jié)果。這類問題就值得抓出來,進(jìn)行定位分析。
數(shù)據(jù)提出來還要進(jìn)行一些清洗行為,例如:有些是失誤觸發(fā),暴露的是中控錯(cuò)誤理解,錯(cuò)誤分配。有些用戶單單是啟動(dòng)了該技能,最后直接退出,沒有超過1輪以上的對(duì)話,這些就不值得算進(jìn)統(tǒng)計(jì)項(xiàng)內(nèi)。
找出正常的用戶后,進(jìn)行分析統(tǒng)計(jì),比如4個(gè)槽位,僅僅填充了2個(gè),用戶努力對(duì)話幾輪后,放棄掉了,哪里卡住了,哪里半途放棄了,這種就非常值得研究。很容易形成一個(gè)數(shù)據(jù)漏斗,看看問題主要集中出現(xiàn)在哪。
先解決有無結(jié)果的問題,然后才有條件去討論結(jié)果優(yōu)劣。
三、如何發(fā)現(xiàn)隱性問題
很多時(shí)候,用戶即使是磕磕碰碰,但最終還是可以完成任務(wù),這些問題都是隱形的,那么如何發(fā)現(xiàn)這些對(duì)話中的“磕磕碰碰”呢?
磕磕碰碰影響體驗(yàn),這種感受多了,用戶自然放棄。要發(fā)現(xiàn)這類問題,我們就得使用另外一項(xiàng)業(yè)務(wù)工具,對(duì)話log分析后臺(tái)。
討論之前,我們先明確一個(gè)概念:會(huì)話行為,也稱之為session。(雖然是業(yè)內(nèi)大家都懂的,但可能定義不一樣,文章內(nèi)還得解釋下。)
從進(jìn)入到離開稱為一次會(huì)話行為,x分鐘(自定義)未檢測(cè)到用戶的對(duì)話,算作一次會(huì)話行為的結(jié)束。
用戶一天內(nèi)可產(chǎn)生x次會(huì)話行為,每次會(huì)話行為可能觸發(fā)1~y個(gè)業(yè)務(wù),并進(jìn)行z個(gè)對(duì)話輪次。
以用戶A舉例,該用戶在當(dāng)天3個(gè)不同的時(shí)間段,產(chǎn)生了3次會(huì)話行為,總共激活了5個(gè)業(yè)務(wù),總計(jì)產(chǎn)生了11句對(duì)話輪次。
而我們的對(duì)話log分析后臺(tái),就能夠以session為單位,還原用戶的對(duì)話log,并解析在這次會(huì)話行為中,用戶的表述和AI的理解。
簡(jiǎn)單來說,用戶在一輪對(duì)話過程中,觸發(fā)了什么技能,AI是如何理解這句話的意圖,并基于怎樣的業(yè)務(wù)邏輯進(jìn)行回復(fù),(比如:獲得槽位后AI繼續(xù)追問,不滿意展示結(jié)果頻繁更換槽位,切換到其他技能)都可以通過這個(gè)工具進(jìn)行展示和統(tǒng)計(jì)。
為了幫助大家理解,引用此前寫過的文章中的例子。
“幫我找個(gè)好看點(diǎn)的/有內(nèi)涵的/羞羞的電影”“我想看關(guān)于海戰(zhàn)的電影”“幫我找一個(gè)高大上的電影院”“附近方便停車么”“我想選一個(gè)靠門的座位”“這個(gè)電影院能辦理會(huì)員卡么”
當(dāng)AI遇見這類問題無法問題,會(huì)出現(xiàn)如下幾種結(jié)果。
無法滿足需求,漏給兜底閑聊。無法識(shí)別意圖、觸發(fā)認(rèn)慫話術(shù)。
兜底閑聊能接上話就好,一般AI認(rèn)慫話術(shù)是,“抱歉我不明白,請(qǐng)對(duì)我說blablabla……”
如果上面的例子比較扯的話,來看下面在買電影場(chǎng)景下正常一些的例子。
“有沒有斯皮爾伯格導(dǎo)演的”“我想看速激7”“有沒有便宜點(diǎn)的”“我要倒數(shù)第三排中間的座位”“有沒有適合情侶去的私人電影院”
這些又回歸到業(yè)務(wù)設(shè)計(jì)上,就完全是業(yè)務(wù)以及語義覆蓋問題了。
此時(shí),我們可以發(fā)現(xiàn),在一次會(huì)話過程中,頻繁出現(xiàn)兜底,頻繁切換業(yè)務(wù),頻繁認(rèn)慫……這些都是非常影響用戶體驗(yàn)的。
我們只需要設(shè)計(jì)一個(gè)抽樣規(guī)則,即,在一組會(huì)話中,若兜底大于x,切換業(yè)務(wù)大于y,認(rèn)慫行為大于z,可單獨(dú)抽樣,可疊加抽樣,就很容易篩選出對(duì)應(yīng)的問題了。
同時(shí)我們還能對(duì)用戶的行為進(jìn)行抽樣分析。
個(gè)人認(rèn)為,能完成下單行為的用戶,是真需求的用戶,他們的對(duì)話行為的可信度非常高,如此可以規(guī)避掉那些隨便試試的用戶,類比就是逛淘寶但是不買的用戶。
例如:買飛機(jī)票這件事,最短路徑是3輪對(duì)話完成下單付費(fèi)行為,最長(zhǎng)的是10幾輪后才完成下單付費(fèi)行為。為什么會(huì)有10幾輪呢?每個(gè)用戶不一樣,這個(gè)就得進(jìn)一步去統(tǒng)計(jì)分析了。
比如我們可以統(tǒng)計(jì)出,過往x天(一般以BOT版本為時(shí)間周期),所有完成訂單行為的用戶,在指定業(yè)務(wù)下的平均對(duì)話輪數(shù)。用這個(gè)基準(zhǔn)作為比較,去發(fā)現(xiàn)問題。
提供幾個(gè)筆者的分析案例,也是此前的一些文章里面提到過的。
案例一(買飛機(jī)票時(shí),用戶切換技能后下單)
用戶在買飛機(jī)票的時(shí)候,我們發(fā)現(xiàn)相當(dāng)一部分用戶會(huì)(擔(dān)心延誤)查看天氣,這個(gè)是用戶的購買決策依據(jù),所以這個(gè)就給了我們啟發(fā),不要讓用戶問,在查詢機(jī)票的時(shí)候,就直接一并顯示天氣情況了,如果有影響飛行的天氣,同時(shí)根據(jù)兩個(gè)城市的距離測(cè)算,給予一個(gè)火車/打車出行方式,給用戶做選擇。
同理推理出,在使用其他技能的時(shí)候,一定會(huì)有關(guān)聯(lián)查詢的,這就是通過分析得出的一個(gè)小優(yōu)化點(diǎn)。這些都是通過數(shù)據(jù)分析暴露出使用習(xí)慣,而做出的優(yōu)化行為。
案例二(買電影票時(shí),用戶口語習(xí)慣)
買電影票剛剛上線那段時(shí)間,發(fā)現(xiàn)大量用戶在填充電影名詞槽那里卡住了。
《速度與激情8》剛剛上映,用戶會(huì)表述是我想看速度與激情、速激、速8等等;《魔童哪咤》上映的時(shí)候,用戶的表述是,我想看哪咤的電影;《葉問3》上映的時(shí)候,用戶的表述會(huì)是,葉問。甚至是甄子丹的那個(gè)電影;
而AI先提取對(duì)應(yīng)的影片名,然后交給接口方去完成查詢行為,只有正確填充“指定電影的全稱”才能夠可查詢成功,所以此處就需要做映射關(guān)系的特殊處理。在定電影票例子中,十分考慮場(chǎng)景和時(shí)效性,也就是說,用戶在不同的時(shí)間點(diǎn),說我要看《某》系列電影的時(shí)候,口語上大概率是絕對(duì)不會(huì)帶上第幾部的。
只要能暴露問題,就會(huì)有解決方案。
案例三(買電影票時(shí),用戶的交互習(xí)慣)
我們?cè)谠O(shè)計(jì)電影票技能的時(shí)候,內(nèi)部曾經(jīng)討論到,如果用戶需求明確,且一口氣完整滿足4個(gè)詞槽,是否應(yīng)當(dāng)直接給予結(jié)果?例如:我?guī)臀屹I2張《魔童哪咤》的電影票,附近找個(gè)最近的電影院,晚上8點(diǎn)鐘左右開場(chǎng)的,隨便什么座位都行。
為了完成這個(gè),我們花費(fèi)了不少精力。從我們后臺(tái)的實(shí)際數(shù)據(jù)表現(xiàn)去看,實(shí)際上用戶并不會(huì)這么說,很少有用戶做多個(gè)復(fù)合條件疊加查詢的,且從來沒有用戶會(huì)一口氣說出4個(gè)詞槽!可以明確一個(gè)結(jié)論,我們此前的的一部分工作被浪費(fèi)掉了!
案例四(某一類業(yè)務(wù)用戶篩選習(xí)慣)
產(chǎn)品人員看自己負(fù)責(zé)的業(yè)務(wù)模塊,比如下圖。展示的是:某個(gè)單位時(shí)間內(nèi),多少用戶,使用了XX業(yè)務(wù),中間更換了多少意圖,最終完成下單行為。
比如定個(gè)酒店(這種非標(biāo)準(zhǔn)品確實(shí)很難搞),用戶會(huì)就自己在意的查詢條件,反復(fù)進(jìn)行篩選行為,導(dǎo)致對(duì)話變得非常長(zhǎng)。這個(gè)能暴露出用戶在意什么,我們就可以基于用戶特別在意進(jìn)行優(yōu)化了。
長(zhǎng)期使用對(duì)話log分析后臺(tái),就能夠加深用戶使用的真實(shí)理解,我才能夠?qū)懗觥度绾卧u(píng)測(cè)語音助手的智能程度(1)意圖理解》這類受各位內(nèi)行認(rèn)同的文章。
文末總結(jié)
其實(shí)很多的公司都在做數(shù)據(jù)分析,但是分析的范圍、顆粒度、效率都不一樣。
有了諸多業(yè)務(wù)后臺(tái),數(shù)據(jù)分析才能夠得以開展。
有些后臺(tái)能直接呈現(xiàn)問題(看趨勢(shì),看分布,看漏斗),有些問題則需要跟剝洋蔥一樣,一層層的做抽樣、對(duì)比和驗(yàn)證。
這中間最難的就是,雖然AI助手幫助用戶完成了任務(wù),但是用戶完成任務(wù)的整個(gè)過程是黑盒的,你不知道用戶爽或者不爽,而針對(duì)用戶的對(duì)話log進(jìn)行抽樣分析,就能夠快速找到用戶使用過程中的那些不爽點(diǎn),使用習(xí)慣等等等等。
還是那句老話,只要問題能夠暴露出來,解決方案就是在有限條件下做業(yè)務(wù)權(quán)衡取舍。
出于公司業(yè)務(wù)隱私保護(hù),本文不適合展示太多的實(shí)際業(yè)務(wù)圖表,希望各位理解。但是方法論都是共通的,我可以隨便換任何業(yè)務(wù)的任何案例,其實(shí)這一塊也不難,做互聯(lián)網(wǎng)的時(shí)候數(shù)據(jù)分析技能過關(guān),切換到AI領(lǐng)域也是一樣的,技能可以應(yīng)用于很多行業(yè)。
而做數(shù)據(jù)分析和做工具是兩件事,后者可能是諸多AI公司需要考量的事情。
歡迎各位同學(xué)與作者進(jìn)行討論,一起精進(jìn)專業(yè)。
【本文來自51CTO專欄作者“老曹”的原創(chuàng)文章,作者微信公眾號(hào):喔家ArchiSelf,id:wrieless-com】