面向NLP的AI產品方法論——如何做好“多輪對話管理”

本系列文字是一位創業者的投稿《面向NLP的AI產品方法論》,老曹儘量不做變動和評價,儘量保持系列文章的原貌,這是第3篇。

看着這個標題我就想笑,原來的標題是,如何做好多輪對話管理,然後我就默默的加了個引號,用於斷句。

本文是前一篇文章《NLP方法論:如何設計多輪語音對話技能》的延續,本文主要討論的是對話設計,是業務設計中的重中之重。

VUI相比於GUI,沒有流程預設,全程使用對話輸入,用戶可以隨意表述,無法有效控制用戶的輸入行爲。

有些人會一句話表達自己的訴求,有些人不能;有些人表述囉嗦,邏輯混亂,不能一次說清所有的要點,需反覆追問;有些人頻繁改變主意,機器人需要不斷理解,並適配更改意圖;有些人就是跑題大王,經常性的多個頻道切換;有些人壓根不知道自己要啥,希望機器人給建議;有些人就是無聊,純屬挑逗機器人。有些人……

畢竟“人工智能皇冠上的明珠”,理解不了,接不好話就是人工智障。

而當用戶想怎麼說就怎麼說,好比脫繮的野馬,上下文指代、否定、反問,雙重否定、以漢語言的博大精深之處,又會分分鐘教計算機做人。

“中國:我們這邊快完了。”
“歐洲:我們這邊快完了。”
“中國:我們這邊好多了。”
“歐洲:我們這邊好多了。”

以上對話也是2020年3月中旬這個場景纔看懂,過一段時間後,大家偶爾翻到這篇文章,未必會理解。

此前的對話管理的學術報告的定義是:“考慮歷史對話信息和上下文的語境等信息進行全面地分析,決定系統要採取的相應的動作,如追問、澄清和確認等。主要任務有:對話狀態跟蹤和生成對話策略。實現途徑上,目前有檢索模型、生成模型等。”

我自己提煉了一套簡單便於理解的,對話設計的本質是管理。目標即:通過問答行爲,控制用戶的表述,明確其需求,並方便計算機理解。

還是以買電影票舉例,我們就是基於各種主副詞槽,模擬出用戶各種各樣的表述,去完成每一輪的查詢,檢索行爲。從結果上而言,用戶只要確認好4個主詞槽(爲什麼是4個上篇文章有討論過思路)就可以完成下單行爲了。

當用戶的話術中,一旦分析出,用戶有買電影票的意圖的時候,此時主動權就應該完全由對話管理去掌控了。

接下來的問題是?(以買電影票場景爲例)如何設計問題?

一、自己如何問?

設計話術問題之前,先要把基本功打牢固。

問題有兩種,一種是開放式,一種是封閉式。

開放問題:問題提得比較籠統,圈定的範圍很不固定,給回答者很多自由發揮的空間。用戶回答起來比較輕鬆,更易於展示自己,沒有太多的壓力。

封閉問題:問題提得很具體,圈定的範圍比較固定,要求回答者在範圍內給予明確回答。用戶會感到壓力,有種被審問的感覺。

所以,面試的時候,相親的時候,儘量提開放性問題,以方便對方自由發揮,更容易展示自己,容易發散,容易給彼此接話,也不會把天給聊死。

而在統計問卷,做填表,調查的時候,封閉問題更容易做到統計,文科生理科生的思維就在於此,要不怎麼說程序員嚴謹刻板不浪漫呢,畢竟跟計算機打交道過多。此處沒有黑程序員的意思,畢竟我也敲過一些代碼,也認識很多有趣的可愛的程序員。這是社會偏見,是刻板印象,不可取。

故而,我們可以對不同的提問方式做一個總結和提煉。

PS:NER(命名實體識別)常見的有時間、數字、人名、地名……等等,大家理解爲方便做填空題即可,具體可以查詢百科。

回到買電影票場景,我們的核心目標是引導用戶說出4個主槽位,最終完成下單的目標。

我們可以嘗試着做下練習,以便自己熟悉語感。

練習填入開放性的問題,並且自己寫上答案是爲了培養自己“寫問句”的業務敏感度,確認自己使用的話術是否會引發用戶的開發性回答。同樣我們可以需要做一下封閉型問句的練習。

之所以每個都寫,完全是出於幫大家理解,以及感受合適不合適。

比如確認座位,直接替用戶選好,然後用【確認】的問法去請求“肯定”回答,就比較合適,如果用戶不滿意可以交付給GUI,絕不推薦語音選座。

比如影片名這類,用【確認】問句去求“肯定”回答,就不合適,有限條件下,我們無法命中用戶的喜好,視當時的情況,用【填空】或者【選擇】比較合適

在實際的過程中,還會加入一些話術比如“爲您找到……爲您推薦……附近有……請問……您看這個可以麼?”等語氣助詞,顯得不那麼生硬。

工作中很多的同學,一開始就寫句子經常無頭緒,畢竟任何一個問句都是合理的。

語感不好的人一定要練習,規避“開放問題”,同時掌握好,使用【填空】【選擇】【確認】三種問法結構的選擇,做到熟練應用,在我們部門是所有人的基本功。

以後再遇見任何業務,便可基於業務情況做問法選擇,做到“運用之妙,存乎一心 ”。

本階段重點:

  1. 理解開放問題和封閉問題,以及封閉問題的三種方案。

  2. 使用封閉問題去管理用戶答案,以便於計算機理解。

問,是非常重要的基本功,是做好對話設計的前提。

二、用戶如何答?

經常有人說用戶的回覆千奇百怪,就固定域對話交互而言,事實並非如此。本章節主要做預判,嘗試窮舉用戶的可能答覆。

直接公佈方法論,筆者歸納總結如下:

無論對話行爲是單輪還是多輪,只要你把對話的機會交給用戶表述,每回復均有可能發生。讓我們來看一下各種情況,以及不同場景下的應對方案。

(1)用戶回覆歸類:跟隨

以看電影舉例,用戶如果每個都依據話術,完成指定回答,很容易完成任務,我私下稱這類用戶爲“小乖型用戶”。

應對策略:成功提取槽位後,推進程就好。

(2)用戶回覆歸類:篩選與修訂

在對話的過程中,對方會基於自己的需求做篩選行爲,亦或者是,明明需要用戶確認當前詞槽(確定電影場次),而用戶臨時起意,需要改此前的槽位,比如換電影,或者換影院。

首先,如果每次都讓用戶做肯定否定,必然出現推薦不到位不精準,把用戶逼成“挑選型用戶”。同時,者,用戶也有挑挑揀揀的權力啊。我十分不好意思,稱之爲“挑選型用戶”。

應對策略:應該基於用戶的需求,進行調整,幫助用戶完成查詢/修訂結果。

語境內篩選,非常考慮語義理解,是做好NLP必備的功底,篩選做的好,體驗才能夠穩穩超過GUI,用戶有需求才篩選,當用戶篩選完,自然最終完成填槽行爲,最終達成目的。

還有一種情況,我稱之爲無法處理的篩選,請看例句:

“幫我找一個高大上的電影院;好看的/有內涵的/羞羞的電影;舒服的,觀影效果好的座位;適合我南山吳彥祖/福田劉亦菲看的電影院;”

人類看來,這是屬於無意義的前置條件,其實取決於內容標籤和指代關係。

例如,“我想看關於海戰的電影;停車比較方便的電影院;想選一個靠門的座位”,這句話在人類看來是有意義的,如果內容層面沒有這個標籤,篩選也無法做起,從計算機角度,我統一歸納爲,無法處理的篩選。而不是無意義篩選。

應對策略統一處理成,隨機推薦,並反饋封閉問句,請求對方的封閉回答即可。

如果你反覆跟人類糾結,企圖讓對方定義更爲明確的篩選條件。

“抱歉,我不太明白,什麼是羞羞的/有內涵的電影。”

“抱歉,我不太明白,什麼是海戰有關的電影。”

那又變成開放問題了,這種情況是就算是用戶給AI解釋,AI也未必聽得懂,對話變長不利於業務的後續推進,這種體驗就十分不爽了。

(3)用戶回覆歸類:關聯諮詢

在某些對話語境下,很容易問出邊界外的問題,畢竟有些問題是影響用戶購買決策的。

例如用戶買機票的時候會問天氣情況,人類能懂能猜測能推理,因爲這些是常識,但是計算機是否理解常識並推理,就看各家的設計了。

應對策略:本質上是如何處理好,任務、問答、閒聊之間的關係。其實各家都處理得不一致。

這種基於業務需求的關聯諮詢,某種意義上也是開放域了,你可以選擇認慫,無法回答此類問題,並請求用戶重新確認該關鍵點上的詞槽。

再者你比較負責,會盡量覆蓋一些對話領域,並訓練各種FAQ的響應,但要處理好交叉對話之間的記憶關係。

例如:訂機票業務,下單之前。

AI:blablabla(介紹機票的各種情況)……需要爲你預定麼?
用戶:哎對了,上海那天天氣怎麼樣?
AI:blablabla……
用戶:那杭州呢?
AI:blablabla……
用戶:行吧,下單吧。

此時AI應該如何處理?兩輪天氣對話之後的下單?好,如果用戶再問三輪,關於機場,行李託運,打折情況,然後決定下單,此時AI應該如何處理?

以上並非杜撰,是筆者在用戶對話log後臺看到用戶的真實使用情況。

應對策略的選擇,凡事考量性價比,在此前的一篇文章中,在思考場景和確定業務邊界的時候,應該考量到位,此處不展開。

(4)用戶回覆歸類:無意圖表述

在某些對話語境下,很容易問出邊界外的問題,畢竟有些問題是影響用戶購買決策的。

例如用戶買機票的時候會問天氣情況,人類能懂能猜測能推理,因爲這些是常識,但是計算機是否理解常識並推理,就看各家的設計了。這也是一種可能存在的情況。這首先是用戶的權力,會出現的異常情況。亦或者是自己的語義理解覆蓋不到位,用戶的明確意圖,識別成了無意圖。

應對策略:語義理解不到位的不討論,自己通過對話log強化語義覆蓋即可。而真的確定爲無意圖表述,轉向做推薦,請求用戶確認。

如果用戶反覆選擇無意圖表述,不填槽便始終無法推進,對話進入死循環,AI只需要處理,隨機回覆策略即可。

(5)用戶回覆歸類:命令控制

命令控制是一個全局的指令,它僅僅在特定的語境、技能、場景、流程點上完成激活行爲。買電影票這個例子用命令控制的場景較少。其實相當多的技能在某些場合會激活命令控制,比如播放類的音樂/視頻和或者遊戲等。

應對策略

每個流程點的命令控制都是特定的規則是提前定義好的。如果用戶在未激活的場景下說了命令控制,也不會響應,而是交由其他業務邏輯完成回覆。一種比較通用的回覆是AI:抱歉超出我的理解範圍……(增加一個封閉提問請求用戶回答)?

(6)用戶回覆歸類:跳出或退出

任何輪次,用戶都可以做出“跳出或退出”行爲。跳出和退出都是結束當前任務的表現。

一般而言跳出是打開某個其他的技能。退出則是明確說再見。

同樣存在誤識別的可能性,特別是看電影,或者聽歌,作品名字可以隨意取。比如《我想去拉薩》就是一個歌名,會不會被導航識別呢?比如說有些音樂或者電影名,可以完全可以命名爲《滾》《退出》《再見》等等。

應對策略

1、語義理解增強NER的識別表現,以規避歧義雙關語表述。2、明確跳出,開啓另一輪任務對話,明確退出就結束對話。3、基於用戶付出的成本,增加挽留確認和退出話術引導。

爲方便記憶,這一段的知識點歸納於此,做到了以下圖中的幾點就完成了對話管理,且這種方法論,可用於絕大多數的任務型業務場景。

三、對話管理思維

再次重申對話管理的目標:通過問答行爲,控制用戶的表述,明確其需求,並方便計算機理解。

達成目標需要行動,而思維是統一行動綱領的。

最開始我想說“理性思維”和“感性思維”的,但是從個人語感上,從各位讀者的理解角度而言,用在這個場景下,不精準,遂修訂爲“直男思維”和“暖男思維”。

直男思維:目標性強,簡潔準確,不繞彎。

暖男思維:識別意圖,幽默風趣,有溫度。

我們設計一個技能,就是利用VUI的特性,快速幫助用戶達成目標。即:任務導向,結果導向。

全程是幫助用戶快速完成任務的心態,想讓對方快速達成結果的,用封閉提問。

用戶找AI助手是解決問題的,而不是調情的。所有的填槽行爲都是爲了完成某個任務,用戶有需求,就應該快速給結果,不墨跡。

下面我用一個例子來解釋這兩個詞兒的準確與方便記憶所在。

就好比,女生跟男生說肚子痛。

男生的身份如果是醫生,直接封閉型問題走起:“痛了幾天了,具體哪個位置啊,睡眠好不好”,基於用戶的特徵判斷,填槽即可,然後開藥、休息、多喝熱水都是解決方案。

男生的身份如果是男朋友或者男同事,上來就“多喝熱水”,直男無法識別意圖(渣男往往更有嗅覺),直男回覆無法滿足其預期,就別怪女生翻白眼了。

這一切的原因是,AI助手在用戶心中是一個怎樣的角色定位,以及用戶使用AI助手的目的。如果AI助手的定位是情感機器人,那麼處理策略又另當別論了,受限於篇幅此處不展開討論。

其實直男思維和暖男思維並不對立衝突,跟理和感性思維一樣,可以融合統一,但在不同的場景下,分主次。

在快速幫助用戶解決問題的前提下,AI助手一樣能做到幽默風趣有溫度。

處理策略歸屬於理性,實際話術表現處理歸屬於感性。這一塊需要大量的語感練習,有天賦才能夠發現對話文字之間的細微差別之處。

對話設計,在掌握了理性的邏輯思考之後,餘下部分其實是文科生髮揮優勢的戰場。

這裏,一張圖片整理本篇方法論知識點。

文末提幾個問題,給大家思考,也留作後續的NLP方法論文章的遞進,同時也是做好一個對話助手的遞進。

以下是工作中的同事以及一些讀者朋友留言的問題。

1、新用戶對VUI是陌生的,有時候看用戶使用非常掙扎,偶爾突破性的提問就會碰到邊界,如何教會用戶使用各種巧妙的表述,快速達成任務目標?

2、機器人的回覆是固定套路,很多時候用戶僅僅改了一個篩選條件,AI又不得不從頭到尾唸完,然後請求用戶確認,我自己用都覺得羅嗦,何況是用戶,而這類信息又必不可少,如何處理好這類問題?

私以爲,只有當我們面對的問題,達到這種顆粒度,才更能夠做好對話管理行爲。歡迎各位同學留言評論,期待着與你的交流。

關聯閱讀:

一篇文章深入理解VUI和GUI的優劣對比

面向NLP的AI產品方法論之一——尋找語音交互的業務場景

面向NLP的AI產品方法論之二——如何設計多輪語音技能

——DuerOS 相關——

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章