如何設(shè)計一款垂直領(lǐng)域的對話型機器人?
文章主要討論垂直領(lǐng)域?qū)υ挋C器人的設(shè)計,簡單的闡述一下意圖分析的典型思路和方法,并實現(xiàn)一個基本的意圖分類器。那設(shè)計一款垂直領(lǐng)域的對話型機器人,應(yīng)該包括哪些模塊呢?
如何設(shè)計一款垂直領(lǐng)域?qū)υ挋C器人,首先要了解一下對話型機器人要解決問題。
其實主要有兩方面:
- 第一是聽得懂,主要是講的機器人要能夠理解用戶的語言——也就是自然語言理解。在這方面,已經(jīng)很成熟,已經(jīng)可以做到情緒的識別。
- 第二方面就是答得出,就是說在聽懂的基礎(chǔ)上,我能夠給出最準(zhǔn)確的答案,這就需要有一個龐大的語料做儲備,或者說答案做儲備。
作為一款垂直領(lǐng)域的機器人,可以解決兩個問題:
- 第一,我可以預(yù)測到用戶問的問題方向。
- 第二,我的語料可以做的非常的精細(xì)精密,能夠做到問不漏,可以提升很大的用戶體驗。
所以說垂直領(lǐng)域的機器人搭建更簡單,也更實用。
對話型機器人包括哪些模塊
1. 問題的語義理解
問題的語義理解的過程包括兩個子任務(wù):意圖識別和實體抽取。
意圖識別?(intention classification):用來識別用戶所提問題的意圖,也就是用戶希望做一件什么事。
本文只是簡單的闡述一下意圖分析的典型思路和方法,并實現(xiàn)一個基本的意圖分類器。因為本文主要討論垂直領(lǐng)域?qū)υ挋C器人的設(shè)計,所以用戶的問題意圖限定在了特定領(lǐng)域,因此答案的結(jié)果的準(zhǔn)確率也會很高。
- 意圖分類:做意圖識別第一步是要做意圖分類,根據(jù)所在領(lǐng)域,搜集歸納數(shù)個意圖。并為意圖命名。
- 數(shù)據(jù)準(zhǔn)備:意圖識別離不開數(shù)據(jù),搜索領(lǐng)域的意圖識別用到的數(shù)據(jù)通常就是用戶的搜索日志了。一般一條搜索日志記錄會包括時間-查詢串-點擊URL記錄-在結(jié)果中的位置等信息。對話領(lǐng)域則需要批量的意圖語料。
- 特征提取:特征的提取是為了方便進(jìn)行分類計算,每一個特征都具備一定的權(quán)重,表明它的權(quán)值。通過特征的權(quán)值,就能夠確定句子屬于哪一個類別。這里我們將每一個字作為一個特征,1/(字出現(xiàn)的總次數(shù))作為權(quán)值,并構(gòu)建字典。
- 模型準(zhǔn)備:模型準(zhǔn)備需要的是建立分類模型。這里我們通過給每一個特征賦予一個得分,然后將句子中每一個字的特征得分進(jìn)行相加,然后就可以得到句子在某一個類別下特征的總得分,從而能夠?qū)渥舆M(jìn)行分類。
- 訓(xùn)練模型:在完成特征任務(wù)后,接下來就是選擇合適的分類器進(jìn)行訓(xùn)練了,因為意圖識別可以看作是一個多分類任務(wù),所以通常可以選擇SVM、決策樹等來訓(xùn)練分類器。
完成以上工作后基本上一個意圖識別分類模型就建立好了,接下來就是對已識別語句的實體進(jìn)行抽取。
實體抽取?(entity extraction):用于提取用戶對話中所提供的和意圖相關(guān)的參數(shù)(實體),例如:時間、地點等。
要想實現(xiàn)實體抽取,主要分為兩步:
- 系統(tǒng)分詞:現(xiàn)在都有一些開源的分詞工具,可以實現(xiàn)很高精度的分詞效果,如:jieba分詞,它的全模式就是把句子中所有的可以成詞的詞語都掃描出來,速度非???。
- 信息抽取:利用jieba分詞后我們得到了切分好的短詞信息,將該信息輸入到語義識別模型中就可以實現(xiàn)機器人“聽得懂”的功能了。
舉個例子:智小保是一款保險行業(yè)的機器人,主要回答保險相關(guān)的問題。
那么可以如此定義意圖和實體:
- Case1:推薦一款小孩的醫(yī)療險給我?—— 意圖:保險推薦;保險類型實體:醫(yī)療險,被保人實體:小孩 。
- Case2:e生保的產(chǎn)品特色是什么?—— 意圖:保險產(chǎn)品了解;了解維度實體:產(chǎn)品特色,產(chǎn)品實體:e生保。
垂直領(lǐng)域的對話機器人就可以根據(jù)該領(lǐng)域所涉及的所有問題進(jìn)行聚合,梳理若干意圖,根據(jù)意圖拆分實體,意圖越具象,實體顆粒度越細(xì),回答越準(zhǔn)確。
2. 知識庫構(gòu)建
知識庫分為聊天話語庫和聊天人屬性庫,聊天話語庫由多個聊天話語記錄構(gòu)成,每個記錄包含一條聊天話語、該聊天話語的語境信息、該聊天話語的多個回復(fù)話語及每一回復(fù)話語的限制條件集合。
聊天人屬性庫由多個聊天人屬性記錄構(gòu)成,每個記錄包含聊天人的靜態(tài)屬性和動態(tài)屬性。聊天機器人都含有一個聊天知識庫以及對話控制模塊,聊天知識庫就像聊天機器人的大腦,存儲著回復(fù)用戶輸入的聊天知識,而對話控制模塊則用于控制對話進(jìn)程。
對于垂直領(lǐng)域的對話型機器人,知識庫搭建則更為垂直。一般分為以下幾個步驟:
(1)數(shù)據(jù)獲取
- 人工維護(hù)錄入數(shù)據(jù):非標(biāo)性答案。
- 第三方開放平臺接口數(shù)據(jù),例:金融股票行業(yè)對于股票實時信息有相應(yīng)的API接口。
- 垂直爬蟲爬取數(shù)據(jù):所謂垂直爬蟲,通俗的講,可以認(rèn)為是針對某一領(lǐng)域或行業(yè)的爬蟲。網(wǎng)上的數(shù)據(jù)畢竟是錯綜復(fù)雜的,用戶所需獲取的信息是需要有針對性的。比如:保險行業(yè)可以去百度貼吧保險吧等類似垂直領(lǐng)域爬取數(shù)據(jù)。
- 數(shù)據(jù)商城購買數(shù)據(jù)。
(2)數(shù)據(jù)清洗
網(wǎng)路獲取到的數(shù)據(jù)畢竟是雜亂無章和帶有很多噪點,無法拿來直接使用,必須經(jīng)過清洗后才能使用。
清洗基本也分為三個方向:
- 文本挖掘:從海量文本中提取出有用的信息。
- 協(xié)同過濾:協(xié)同過濾是利用集體智慧的一個典型方法——也就是說的少數(shù)服從多數(shù)。對數(shù)據(jù)中權(quán)重大的做優(yōu)先級排序,類似今日頭條的推薦系統(tǒng)。
- 深度學(xué)習(xí):目前深度學(xué)習(xí)做對話系統(tǒng),主流的核心算法是seq2seq,之后還有很多優(yōu)化算法,如使用beam search解決前k個字符概率乘積最大、考慮低頻回復(fù)的MMI,兼顧問題前后字符的信息——attention mechanism,解決連續(xù)多輪的問答HRED,同時使用reinforcement learning也能在一定程度上解決多輪問題。
總的來說,這些優(yōu)秀的算法在一定程度上確實解決了問題,不過你還是得有合適的數(shù)據(jù)(如多輪問答數(shù)據(jù))才能測試、評估、改進(jìn)等。
(3)搭建知識庫
知識庫的類型又有結(jié)構(gòu)化和非結(jié)構(gòu)化之分,非結(jié)構(gòu)化數(shù)據(jù)庫的使用涉及復(fù)雜的數(shù)據(jù)分析、挖掘技術(shù),在實現(xiàn)的效果和性能等方面都很難滿足聊天機器人的要求,因此通常采用結(jié)構(gòu)化的知識庫。
例如:對于一個機器人對話系統(tǒng),你說一句話,語音轉(zhuǎn)成文字之后,根據(jù)文字的分詞、句法、語義分析結(jié)果,去對應(yīng)的語言庫中,尋求或自動生成最合理的應(yīng)答。
以保險行業(yè)為例來說:需要搭建。
- 通用知識庫:所有保險名稱及專屬名稱解釋;
- 保險產(chǎn)品知識庫?:所有保險產(chǎn)品,及相關(guān)維度信息;
- 保險產(chǎn)品推薦邏輯庫:每款保險產(chǎn)品的適用地區(qū)、人群等相關(guān)維度信息;
- 保險公司庫:所有保險公司相關(guān)信息;
- 核保知識庫:針對所有情況的核保信息等。
總結(jié)
在完成了上述工作后,一個可以理解人類語言的垂直領(lǐng)域的聊天機器人就可以為顧客服務(wù)了。但是這僅僅是可以服務(wù),具體服務(wù)效果還需后期的驗證,對于對話型機器人產(chǎn)品,其實這只是完成了30%工作,后續(xù)的標(biāo)注、糾偏、訓(xùn)練才是重點。
作者:老張, 宜信集團(tuán)保險事業(yè)部智能保險產(chǎn)品負(fù)責(zé)人,運營軍師聯(lián)盟創(chuàng)始人之一,《運營實戰(zhàn)手冊》作者之一。
本文由 @老張 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
- 目前還沒評論,等你發(fā)揮!