上篇 | 如何设计一个多轮对话机器人
導(dǎo)語:多輪對話聊天機(jī)器人,作為人工智能的典型應(yīng)用場景,也是一項極具挑戰(zhàn)的任務(wù),不僅涉及多方面異構(gòu)知識的表示、抽取、推理和應(yīng)用,還涉及包括自然語言理解在內(nèi)的其他人工智能核心技術(shù)的綜合利用
簡介與相關(guān)技術(shù)調(diào)研
目前,多輪對話聊天機(jī)器人已經(jīng)產(chǎn)生了很多應(yīng)用,有萌妹子小冰,有佛法大師賢二,也有應(yīng)用在各行各業(yè)的智能客服。多輪對話聊天機(jī)器人,作為人工智能的典型應(yīng)用場景,也是一項極具挑戰(zhàn)的任務(wù),不僅涉及多方面異構(gòu)知識的表示、抽取、推理和應(yīng)用(如語言知識、領(lǐng)域知識、常識知識等),還涉及包括自然語言理解在內(nèi)的其他人工智能核心技術(shù)(如用戶畫像、對話管理等)的綜合利用。
實(shí)現(xiàn)對話機(jī)器人常見的方法,可以從最簡單的“關(guān)鍵字匹配”,到最前沿的深度學(xué)習(xí)“端到端生成”應(yīng)答。分別應(yīng)用到不同的場景:閑聊、任務(wù)(垂直領(lǐng)域)、問答(QA)。
?
設(shè)計一個聊天機(jī)器人
要想機(jī)器能與人產(chǎn)生對話,那么第一步,就必須先“理解”人說話的內(nèi)容,對于機(jī)器來說,“理解”就是把自然語言轉(zhuǎn)成具有結(jié)構(gòu)化的表達(dá)。機(jī)器解析結(jié)構(gòu)化表達(dá)的內(nèi)容,根據(jù)知識庫(可能是QA對、可能是if-then規(guī)則、可能是業(yè)務(wù)流程等)獲取相應(yīng)的回答。
如下圖,一次對話,就是一個會話的接入,語義理解就是理解人說話的內(nèi)容,應(yīng)答引擎就是根據(jù)理解的內(nèi)容做出的應(yīng)答。
1、語義理解
建立語言模型
因為人類語言的本質(zhì)是為了傳遞人與人之間的信息(意思)。那么,我們可以定義出N種意思分類(意思的種類越多,機(jī)器人的理解能力越強(qiáng))。所以,一個語言模型就是一個多標(biāo)簽的數(shù)學(xué)模型,把自然語言轉(zhuǎn)成具有結(jié)構(gòu)化的表達(dá)。有以下三個步驟:
1)文本預(yù)處理:切詞、詞向量、詞義消解等(這里內(nèi)容很大,不詳細(xì)介紹)。
2)樣本準(zhǔn)備:抽取一些經(jīng)典的發(fā)言,在我們的myModel平臺進(jìn)行標(biāo)注。
3)序列模型:多標(biāo)簽?zāi)P?#xff0c;如下圖就是一種CNN與LSTM組合的神經(jīng)網(wǎng)絡(luò)方法。
盡管已經(jīng)在一個垂直的領(lǐng)域,而且看似簡單的三步,但是要做一個好的語義理解模型,是非常難的,例如一個小改動導(dǎo)致預(yù)測結(jié)果差異,可分兩種:
1)一種是句中的詞語位置變了、輔助詞變了,如:“這就是給我的回復(fù)?”與“你們就這么回復(fù)我?”。
2)一種是增加一些無關(guān)核心內(nèi)容的詞,如:“但是我后面沒開掛都被制裁”與“但是我后面沒開掛都被制裁我就想不通了”。
備注:增加更多有標(biāo)注的樣本量、基于大規(guī)模數(shù)據(jù)訓(xùn)練的模型(如BERT等)二次訓(xùn)練、神經(jīng)網(wǎng)絡(luò)增加attention、結(jié)合知識庫等,都是一些優(yōu)化的手段。
?
語言模型在系統(tǒng)中的應(yīng)用
理解用戶說話的意思,我們分為了三層:第一層,是理解當(dāng)前聊天處于哪一個話題,有沒有切換話題;第二層,是理解具體的內(nèi)容,含有意圖與實(shí)體;第三層,是理解當(dāng)前發(fā)言的情感,跟蹤用戶的情緒變化。
1)?話題模型(Topic模型)
在我們系統(tǒng)中,它是一個分類模型,與后面的應(yīng)答引擎是有對應(yīng)的關(guān)系,根據(jù)不同的話題,進(jìn)入不同的業(yè)務(wù)流程,所以模型的標(biāo)簽的業(yè)務(wù)的分類。
2)?意圖理解(Act-Slot模型、Value模型)
A.? ?Act-Slot模型
在我們系統(tǒng)中,它是一個多標(biāo)簽?zāi)P?#xff0c;相同一句話,不同的角度,有不同的理解。所以,模型的標(biāo)簽是意圖與實(shí)體類型,如下圖的“inform,QQ”。
例如,在具體的項目中,我們定義了:
? ??
B.? ??Value模型
在我們系統(tǒng)中,獲取到用戶發(fā)言的Act-Slot之后,根據(jù)Act-Slot的意圖,得到其相對應(yīng)的實(shí)體值。總共設(shè)計了三種方法以獲取不同類型的Value,方法如下:
正則表達(dá)式:如抽取時間、等級等有一定格式的實(shí)體。
詞庫對比:如安圖恩等游戲?qū)S性~匯。
LSTM模型:當(dāng)句式中不明顯表達(dá)實(shí)體時,將通過模型分到6類中:
ENV:涉及到電腦環(huán)境相關(guān)信息。
?MAPID:涉及到地圖相關(guān)信息。
ROLE:涉及到角色相關(guān)信息。
TEAM:涉及到組隊相關(guān)信息。
?LOGIN:涉及到登錄相關(guān)信息。
EQUIP:涉及到裝備相關(guān)信息。
備注:并非所有聊天機(jī)器人都這么設(shè)計,有些系統(tǒng)會把意圖作為一個模型,實(shí)體與value作為一個模型。
3)?情感模型
在我們系統(tǒng)中,它是一個分類模型,把用戶的發(fā)言分為了以下幾種不同級別的情緒(標(biāo)簽):臟話、生氣、平和、贊揚(yáng)。
?
2、應(yīng)答引擎
定義業(yè)務(wù)描述語言
為了能快速接入各種服務(wù),基于XML描述語言,定義了一套業(yè)務(wù)流程的描述語言??偣卜譃槿龑?#xff0c;最底層是基礎(chǔ)流程控制單元,如分支if、循環(huán)while、順序sequence、并行parallel;第二層,是每個話題都需要的通用組件,如詢問QQ號、游戲名、情緒安撫等;最頂層是具體的業(yè)務(wù)應(yīng)用服務(wù),如裝備找回流程、被盜處理流程等。
???
例子:獲取QQ號與大區(qū)號流程。
?
業(yè)務(wù)流程控制引擎
如下圖所示,有Task1到Task5,共5個業(yè)務(wù)流程(業(yè)務(wù)應(yīng)用),這些業(yè)務(wù)流程可以使用上述描述語言刻畫出來。而下圖中涉及到的為上述語言的解析過程。
話題切換監(jiān)聽器:作為旁路分類模型,用于跟蹤聊天話題的切換。以用戶發(fā)言為輸入,輸出1、2、3、4、5,分別代表Task1,Task2 …. Task5。(用戶每次輸入,都會有一次判斷,反映話題是否有變化與切換到哪一個Task)
會話信息:表示在對話當(dāng)抽取出來的上下文信息,局部信息表示在本Task可見,全局信息表示所有Task可見。
狀態(tài):表示Task運(yùn)行狀態(tài)。而流程中斷的位置,并非所有位置都可以中斷,如下圖標(biāo)記紅點(diǎn)的是可被中斷(當(dāng)運(yùn)行到有標(biāo)記紅的地方,就會請求“話題切換監(jiān)聽器”,當(dāng)前是否有話題變化)。
?掛起:表示當(dāng)前流程暫停(如下圖,P2表示Task1中的第二個點(diǎn)掛起)
未激活:“-”表示該Task沒有啟動過。
激活:Running表示正處于該Task的流程中。
結(jié)束:Close表示該Task已結(jié)束。
?
備注:每一個紅點(diǎn)的地方,都可能由于用戶發(fā)言導(dǎo)致切換到另一個Task流程中。會話開始時,會根據(jù)“起始問題識別”,得到需要走哪一個Task,作為起始Task。在起始Task流程中,如果遇到紅點(diǎn)的地方,并且話題切換監(jiān)聽到需要轉(zhuǎn)到另外的Task,剛切換到新的Task流程,新流程走完后再回到切換話題的斷點(diǎn)處,繼續(xù)原流程一直走完。
一個業(yè)務(wù)流程例子
例子:假設(shè)有四個業(yè)務(wù)流程Task,每個流程都根據(jù)流程控制單元畫出相應(yīng)的流程圖。
Task1為“處罰查詢”流程。
Task2為“處罰申訴”流程。
Task3為“修改密碼”流程。
Task4為“實(shí)名驗證”流程。
備注:每個Task都可以單獨(dú)由“起始問題識別”觸發(fā),也可以如下例子嵌套對話。
?
TP小天
對話是一種比網(wǎng)頁或APP更自由的表達(dá)形式,用戶有了主動表達(dá)訴求的空間,可以實(shí)現(xiàn)有別于網(wǎng)頁或APP的一些特殊功能:用戶安全教育、輿論監(jiān)控、信息收集。
根據(jù)上述的機(jī)器人設(shè)計方法,我們設(shè)計了TP小天,用戶可以通過游戲安全中心公眾號,咨詢游戲安全相關(guān)的信息。如下圖所示,已經(jīng)接入了處罰查詢、申訴、舉報、帳號凍結(jié)等游戲安全功能與話題。
?
在實(shí)戰(zhàn)中,一個可運(yùn)營的聊天機(jī)器人,還會涉及到很多其它的內(nèi)容,如何提升語義理解的豐富性、大樣本推薦標(biāo)注、FAQ應(yīng)答、快速可配置修正、對話生成多樣性、閑聊等等。
總結(jié)
以上是生活随笔為你收集整理的上篇 | 如何设计一个多轮对话机器人的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 首届腾讯运维技术开放日!对外报名正式启动
- 下一篇: 中篇 | 多轮对话机器之话题意图识别