以下為視頻文字內(nèi)容:
歡迎大家來到第二章的第四節(jié),五步搭建一個對話系統(tǒng)。
- 對話的六個步驟
說到在計算機領(lǐng)域如何搭建一個對話系統(tǒng),我們可以先從現(xiàn)實生活中的對話系統(tǒng)開始。
在現(xiàn)實生活中,人與人之間的對話通常有下面幾個步驟:
打開溝通的渠道,建立溝通的基礎(chǔ):A向B發(fā)送一條消息;
B向A表達要進行對話的意愿;
建立語言的表意,A和B基于一系列既有認知和潛在的背景上下文建立聯(lián)系;
進行擴充,A和B基于它們之間的互動進行學習和積累;
達成一致,如果沒有達成一致,就進一步的修復和改善;
進行行動或者互動,對話的結(jié)果可以引發(fā)有效的行動,達成一些潛在的目標。
以上是我們抽象的一些步驟,在計算機領(lǐng)域中又是如何搭建對話系統(tǒng)呢?
總共需要分五個步驟。

- 定義對話系統(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ù)資源或者說有哪些資源類型呢?
- 富集數(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)可以有兩大種方式去搭建。
一種是用很多很厲害的對話系統(tǒng)工程師,用代碼的方式搭建整個的系統(tǒng)搭建。包括進行系統(tǒng)的訓練,算法和工程上的實現(xiàn)。這當然非常棒,不過花費的成本是很多公司承擔不起的。
第二種我們可以用第三方工具實現(xiàn),如百度的UNIT。我們用了百度的UNIT,不懂代碼的業(yè)務(wù)人員通過可視化界面一步步的操作進行系統(tǒng)的搭建,完成最核心的對話系統(tǒng)的一部分,進而完成整個對話系統(tǒng)的實現(xiàn)。
對話系統(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)才會更加擬人化,讓用戶覺得機器人還沒那么笨一些。
- 系統(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)接入。
- 系統(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)接入的部分 。
- 運營迭代
最后一部分叫****運營迭代****,記錄與觀察機器人和用戶的交流應答,沉淀用戶信息。
舉個例子,包括消息類型的統(tǒng)計、用戶情感的分析,在統(tǒng)計中查看熱點業(yè)務(wù)問題的答案命中次數(shù)。根據(jù)統(tǒng)計結(jié)果可以更好的調(diào)整客服工作策略,甚至進一步調(diào)整企業(yè)市場的宣傳重點。
這個是根據(jù)我剛剛在說第四部分一些小的模塊中,結(jié)合這些模塊的數(shù)據(jù)做數(shù)據(jù)分析,進行下一步的運營迭代。
我們也可以像傳統(tǒng)的GUI設(shè)計中一樣,設(shè)置對話漏斗,層層追蹤信息轉(zhuǎn)化的比例,了解用戶在哪一層丟失了,用戶在哪一類對話中放棄了,就著重優(yōu)化這一句話說的方式并進行對話流的修改。
比如機器人問:“你想去哪里?”,還是問“你想訂哪里的機票?!?/p>
雖然看起來是一個意思,但是每種問法產(chǎn)生的效果是不一樣的。通過數(shù)據(jù)幫助我們優(yōu)化機器人和用戶交流的方式。
- 對話系統(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),謝謝大家,我們下期再見!