如何設(shè)計一款垂直領(lǐng)域的對話型機器人?

0 評論 6320 瀏覽 38 收藏 11 分鐘

文章主要討論垂直領(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ù)獲取

  1. 人工維護(hù)錄入數(shù)據(jù):非標(biāo)性答案。
  2. 第三方開放平臺接口數(shù)據(jù),例:金融股票行業(yè)對于股票實時信息有相應(yīng)的API接口。
  3. 垂直爬蟲爬取數(shù)據(jù):所謂垂直爬蟲,通俗的講,可以認(rèn)為是針對某一領(lǐng)域或行業(yè)的爬蟲。網(wǎng)上的數(shù)據(jù)畢竟是錯綜復(fù)雜的,用戶所需獲取的信息是需要有針對性的。比如:保險行業(yè)可以去百度貼吧保險吧等類似垂直領(lǐng)域爬取數(shù)據(jù)。
  4. 數(shù)據(jù)商城購買數(shù)據(jù)。

(2)數(shù)據(jù)清洗

網(wǎng)路獲取到的數(shù)據(jù)畢竟是雜亂無章和帶有很多噪點,無法拿來直接使用,必須經(jīng)過清洗后才能使用。

清洗基本也分為三個方向:

  1. 文本挖掘:從海量文本中提取出有用的信息。
  2. 協(xié)同過濾:協(xié)同過濾是利用集體智慧的一個典型方法——也就是說的少數(shù)服從多數(shù)。對數(shù)據(jù)中權(quán)重大的做優(yōu)先級排序,類似今日頭條的推薦系統(tǒng)。
  3. 深度學(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è)為例來說:需要搭建。

  1. 通用知識庫:所有保險名稱及專屬名稱解釋;
  2. 保險產(chǎn)品知識庫?:所有保險產(chǎn)品,及相關(guān)維度信息;
  3. 保險產(chǎn)品推薦邏輯庫:每款保險產(chǎn)品的適用地區(qū)、人群等相關(guān)維度信息;
  4. 保險公司庫:所有保險公司相關(guān)信息;
  5. 核保知識庫:針對所有情況的核保信息等。

總結(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é)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!