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