連載 | 2.4 五步創(chuàng)建一個對話系統(tǒng)

以下為視頻文字內(nèi)容:

歡迎大家來到第二章的第四節(jié),五步搭建一個對話系統(tǒng)。

image
  • 對話的六個步驟

說到在計算機領(lǐng)域如何搭建一個對話系統(tǒng),我們可以先從現(xiàn)實生活中的對話系統(tǒng)開始。

在現(xiàn)實生活中,人與人之間的對話通常有下面幾個步驟:

  1. 打開溝通的渠道,建立溝通的基礎(chǔ):A向B發(fā)送一條消息;

  2. B向A表達要進行對話的意愿;

  3. 建立語言的表意,A和B基于一系列既有認知和潛在的背景上下文建立聯(lián)系;

  4. 進行擴充,A和B基于它們之間的互動進行學習和積累;

  5. 達成一致,如果沒有達成一致,就進一步的修復和改善;

  6. 進行行動或者互動,對話的結(jié)果可以引發(fā)有效的行動,達成一些潛在的目標。

以上是我們抽象的一些步驟,在計算機領(lǐng)域中又是如何搭建對話系統(tǒng)呢?

總共需要分五個步驟。

image.gif
  • 定義對話系統(tǒng)

第一個是定義對話系統(tǒng),通常會分為四個步驟。

首先是確定場景邊界。比如我要做一個差旅機器人,我們需要知道這個聊天機器人的場景邊界在哪里,換句話說功能有哪些,是只能定機票,酒店,火車票的一種或者幾種,還是所有的任務(wù)都能完成。以及要確定機器人是否支持閑聊功能。

第二步要梳理業(yè)務(wù)要素和知識庫,同樣用機票酒店預訂機器人舉例子,我們需要知道具體的機票酒店信息,包括時間地點等等。在后續(xù)章節(jié)中我們會繼續(xù)的詳細介紹,這些都是要梳理到的業(yè)務(wù)要素。

那什么是知識庫呢,比如說用戶問“什么叫經(jīng)停航班”,那么機器人需要有能力再庫中匹配到相應的回答出來,這就叫知識庫。

第三步要撰寫故事線,這就想一個編劇編寫劇本一樣,需要把場景中每個人說的話通過一個完整的故事線體現(xiàn)出來。

同樣當我們做一個對話系統(tǒng)的時候,也需要把一個場景下機器人和人的完整對話寫出來,這也叫故事線。在差旅機器人的例子中,故事線就是從最開始,“你好我要訂一張北京到上海的機票”,到機器人最后說:“好的,已經(jīng)收集到你所有的信息了。我已經(jīng)幫您訂票完畢” 的完整話術(shù)。

一問一答的整個過程叫做故事線。最簡單完整故事線,我們稱之為愉悅路線,具體的撰寫的方法和要點,我會在稍后的課程里邊進一步細講。

第四部分叫抽取對話流程,換句話說,畫出對話流程圖。

比如訂機票酒店的機器人,從第一步用戶說到了不同的話不同的參數(shù),到下一步要跳轉(zhuǎn)到哪一步。這個和在GUI,或者做app的產(chǎn)品、網(wǎng)頁的產(chǎn)品的之前需要先畫交互圖是一個邏輯:用戶點擊了不同的按鈕后后應該執(zhí)行什么操作。

在對話系統(tǒng)里,當用戶觸發(fā)了某些的參數(shù)或產(chǎn)生某種行為,也會觸發(fā)聊天機器人的行為或者回答。這個時候我們需要制作一個流程圖,方便后面的系統(tǒng)搭建,具體細節(jié)后面我也會進一步仔細講解。

第二步叫富集數(shù)據(jù)資源,那什么叫富集數(shù)據(jù)資源或者說有哪些資源類型呢?

image
  • 富集數(shù)據(jù)資源

第一個就是詞典詞槽,比如說我們要做一個電影票的機器人,那我們是不是要把電影、電影院這些都收集好,這個就叫做詞典詞槽值。把具體的電影名、電影院名收集好作為詞典值。

第二個是對話樣本,對話樣本就是一問一答的對話。我們的目標就是要找到足夠多的這種對話樣本。

第三個是問答對,像剛剛我們說的“經(jīng)停航班”的問答叫做問答對。

如何富集呢?其實有很多種方法,我這里簡單的列了三點,后面我們也會具體的教大家。

第一種就是在指定的業(yè)務(wù)場景中提取數(shù)據(jù),或者我們先拍腦子給出一些具體的數(shù)據(jù)。

第二種是在對話日志中進一步分析,當系統(tǒng)上線以后用戶和機器人會產(chǎn)生真實的對話交互,我們在這種真實的對話交互中,再進行二次的抽取以完善我們的對話系統(tǒng)。

第三個是官方的數(shù)據(jù)庫,比如電影院、機票、酒店,這些其實是一些開放的語料庫,以及一些航空公司或者院線的信息。它們的數(shù)據(jù)庫能夠爬取或者直接下載,換句話說,我們可以從官方數(shù)據(jù)庫中獲取詞槽詞典。

  • 搭建系、訓練、評估和調(diào)優(yōu)。

通常搭建系統(tǒng)可以有兩大種方式去搭建。

image

一種是用很多很厲害的對話系統(tǒng)工程師,用代碼的方式搭建整個的系統(tǒng)搭建。包括進行系統(tǒng)的訓練,算法和工程上的實現(xiàn)。這當然非常棒,不過花費的成本是很多公司承擔不起的。

第二種我們可以用第三方工具實現(xiàn),如百度的UNIT。我們用了百度的UNIT,不懂代碼的業(yè)務(wù)人員通過可視化界面一步步的操作進行系統(tǒng)的搭建,完成最核心的對話系統(tǒng)的一部分,進而完成整個對話系統(tǒng)的實現(xiàn)。

image

對話系統(tǒng)的搭建系統(tǒng)、訓練、評估和調(diào)優(yōu)通常情況下還有一些小的細節(jié)要和大家介紹。

當你搭建完了對話系統(tǒng)以后,可以找一些搭建系統(tǒng)之外的人,不告訴他任何背景信息讓他進行對話測試,多測試幾遍就能發(fā)現(xiàn)一些你想不到的有趣問題。

比如哪個對話任務(wù)完成起來有困難,或者是用戶在和系統(tǒng)進行語音交互的過程中,給用戶的感受是怎么樣的。通過這種方式收集主觀反饋,知道他們在哪里卡住了,在什么地方不順暢,進行進一步的優(yōu)化。這些是上線之前的。

其實這些信息在你上線之后從用戶那里也能夠收集到。但由于每個人的對話方式和行為習慣不一樣,建議還是要找到一些團隊之外的人,至少說10-20個來先測試對話系統(tǒng)。這樣在上線之后,系統(tǒng)才會更加擬人化,讓用戶覺得機器人還沒那么笨一些。

image
  • 系統(tǒng)接入:全渠道API接入

第四步我們要做的叫做系統(tǒng)接入:全渠道的API接入

經(jīng)常會有人問我:“我們的對話機器人更適合放在哪里?”,其實回答很簡單:用戶在哪里,我們的機器人就放在哪里,我們的服務(wù)就接入到哪里。

比如可以接入到DuerOS里邊,也可以接入到微信、微博、京東、阿里旺旺、小程序,甚至可以接到我們的電話里,網(wǎng)頁和app中。

這一塊是需要工程化的操作的,當創(chuàng)建完語言模型后,就會抽象出一個一進一出的API。用戶每說一句話,系統(tǒng)返回一句話。開發(fā)者只要把API一步步的對接到這些不同的系統(tǒng)里邊就可以完成了。

也就是說,把搭建好的語言模型插到不同的message app里,叫做系統(tǒng)接入。

image
  • 系統(tǒng)接入:通用模塊

同時系統(tǒng)接入還有第二個部分,也是很多人會經(jīng)常忽略卻非常重要的,有三個模塊。

1.智能的人機協(xié)作 我們知道現(xiàn)在的機器人一定不是100%的智能,也不可能100%的解決用戶的需求。當用戶已經(jīng)呈現(xiàn)出不滿意,或者用戶的反饋已經(jīng)不好,需要人工接入的時候。我們的系統(tǒng)要能夠判斷出來并做一個迅速切換。把機器人切換到人上面,人接管之后也需要知道用戶和機器人交流的上下文。

**2. 用戶評價 **那么每一次機器人完成一個任務(wù)后可以給用戶推送一個反饋,比如“您對我的服務(wù)滿意嗎?0到10分,你打幾分?”

通過用戶的評價能幫助我們發(fā)現(xiàn)對話系統(tǒng)的問題,以進行進一步的優(yōu)化,優(yōu)化之后再上線后還可以通過用戶的評價系統(tǒng)了解優(yōu)化之后提升的效果。

比如平均分是從3分提升到6分,還是從6分提升到了7分,或者從7分又降低到了4分。這個有助于我們持續(xù)優(yōu)化對話系統(tǒng)。

3. 數(shù)據(jù)化的商業(yè)決策,根據(jù)用戶數(shù)據(jù),引導商業(yè)上決策。

我們需要要多推薦哪個產(chǎn)品,舉個金融消費類的例子,比如通過用戶情緒判斷多推薦哪一個保險用戶購買轉(zhuǎn)化率會比較高。以上是系統(tǒng)接入的部分 。

image
  • 運營迭代

最后一部分叫****運營迭代****,記錄與觀察機器人和用戶的交流應答,沉淀用戶信息。

舉個例子,包括消息類型的統(tǒng)計、用戶情感的分析,在統(tǒng)計中查看熱點業(yè)務(wù)問題的答案命中次數(shù)。根據(jù)統(tǒng)計結(jié)果可以更好的調(diào)整客服工作策略,甚至進一步調(diào)整企業(yè)市場的宣傳重點。

這個是根據(jù)我剛剛在說第四部分一些小的模塊中,結(jié)合這些模塊的數(shù)據(jù)做數(shù)據(jù)分析,進行下一步的運營迭代。

image

我們也可以像傳統(tǒng)的GUI設(shè)計中一樣,設(shè)置對話漏斗,層層追蹤信息轉(zhuǎn)化的比例,了解用戶在哪一層丟失了,用戶在哪一類對話中放棄了,就著重優(yōu)化這一句話說的方式并進行對話流的修改。

比如機器人問:“你想去哪里?”,還是問“你想訂哪里的機票?!?/p>

雖然看起來是一個意思,但是每種問法產(chǎn)生的效果是不一樣的。通過數(shù)據(jù)幫助我們優(yōu)化機器人和用戶交流的方式。

image
  • 對話系統(tǒng)的生命周期

最后給大家介紹一下對話系統(tǒng)的生命周期,對話系統(tǒng)不是從第一步到第五步完成后就結(jié)束了,而是一個周而復始循環(huán)的過程

它的生命周期和傳統(tǒng)的軟件開發(fā)有相似的地方也有不同的地方,著重介紹幾個不同的點。

首先,傳統(tǒng)軟件開發(fā)在設(shè)計了產(chǎn)品文檔后就可以做開發(fā)了,而對話系統(tǒng)在產(chǎn)品文檔和開發(fā)中間要加入對話腳本,也就是故事線的設(shè)計。

另外,傳統(tǒng)軟件上線后的測試可能不需要考慮多個平臺,而對話系統(tǒng)的設(shè)計需要加入適配不同的消息平臺的控制機制。

最后,對話系統(tǒng)的分析中要善于利用線上的對話日志,通過用戶在對話過程中的糾正、反饋來優(yōu)化對話模型的對話理解效果,讓機器人越來越聰明。

這一課給大家講了如何搭建一個對話系統(tǒng),也希望大家知道對話系統(tǒng)不是五步就完成了。是需要五步之后再不停的優(yōu)化,我們要小步快跑,快速迭代

最后希望每一個人都能夠通過五步搭建出你喜歡的對話系統(tǒng),謝謝大家,我們下期再見!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容