對話機器人平臺智能問答技術(shù)拆解

3 評論 12552 瀏覽 77 收藏 22 分鐘

筆者對智能問答機器人技術(shù)進行了分析,從實際場景切入,闡釋其功能邏輯。

個人計算機的發(fā)展史要追溯到上個世紀90年代末,人們用鍵盤和鼠標向購物網(wǎng)站發(fā)送請求,購買心儀的商品,隨后的十多年間,互聯(lián)網(wǎng)飛速發(fā)展,智能手機應(yīng)運而生,人們開始習(xí)慣用觸摸的方式更加靈活地操縱手機、Pad等設(shè)備,可與之進行交互的產(chǎn)品也穩(wěn)步落地在數(shù)以百萬計APP中,這些產(chǎn)品都是基于GUI (Graphical User Interface)設(shè)計的。

鑒于人類向外界發(fā)送指令的方式除了用手做(以鍵盤鼠標、觸摸為代表),還可以用嘴說,因此語音控制設(shè)備進行人機交互也開始進入人類探索的領(lǐng)域。

然而,讓機器聽懂人類的語言是一件十分困難的事,近幾年隨著深度學(xué)習(xí)的崛起,語音識別和自然語言理解的快速發(fā)展,為這一交互模式的流行創(chuàng)造了可能,相信不久的將來,人類會逐步邁入CUI (Conversational User Interface)時代。

智能問答簡介

在我們的生活中,智能對話被廣泛應(yīng)用在客服、營銷等重復(fù)性對話頻繁發(fā)生的場景,或者作為GUI的補充,為用戶提供高效、個性化的體驗,甚至是直接集成到智能音箱、智能家居、智能導(dǎo)航等硬件設(shè)備中,獨立承載人機交互的重擔(dān)。

按照對話的智能程度,我們可以把智能問答分為5個階段:單輪問答、多輪會話、意圖推理、個性化以及情感互動。

而從問答的種類來講,我們又可以將其分為Community QA、KBQA、TableQA、PassageQA、VQA這5大類。

圖1 智能問答領(lǐng)域分類[Duan 2017]

  • KBQA:基于知識圖譜的問答,所有的知識被組織成三元組的形式,比如<姚明、妻子、葉莉>這個三元組是知識圖譜里的一條知識,當(dāng)用戶詢問“姚明的妻子是誰”的時候,問答模型會將答案定位到“葉莉”;
  • TableQA:知識是用表格的形式組織的,商家的產(chǎn)品信息用表格的形式存儲,當(dāng)用戶詢問關(guān)于某個產(chǎn)品的具體屬性時,問答模型可以把用戶的自然語言轉(zhuǎn)化成SQL查詢語句,直接從數(shù)據(jù)庫里定位答案;
  • PassageQA:閱讀理解,它是基于文檔的問答,我們的問答模型會基于用戶的問題,將答案定位在文檔的某個段落、某句話甚至是某個短語;
  • VQA:基于圖像或視頻的問答,以上圖為例,用戶問“這個女孩兒的臉被什么擋住了”,問答模型會告訴我們答案是“香蕉”;
  • Community QA:從命名上來看,它是基于社區(qū)知識的問答,比如一個讀書論壇,底下有人在交流值得一讀的人工智能書籍,在母嬰論壇有人在討論寶寶發(fā)燒了怎么辦?需要吃藥嗎?那么這些對話內(nèi)容都可以沉淀為知識,我們定義的Community QA就來源于這些場景,在不同的領(lǐng)域,我們通過挖掘、或者收集、標注的方式沉淀了一批知識,用問答對的形式把它們組織起來,在這批知識集合下,用戶提問一個領(lǐng)域相關(guān)的問題,問答模型會告訴我們答案到底是什么。

智能問答工程實踐

面對智能問答的廣泛應(yīng)用,本篇文章以如何搭建一套智能問答系統(tǒng)為切入點,深入淺出介紹一下在Community QA上所做的嘗試。

1. 業(yè)務(wù)簡介

我們再基于幾個實際的例子看一下問答的使用場景:

  • 第一類是常見的客服場景,詢問產(chǎn)品、詢問業(yè)務(wù)、詢問經(jīng)驗,這類場景比較泛,他會衍生在生活中的各個方面,客服機器人相比傳統(tǒng)的客服,他永不打烊,回答永遠標準,而且面對各種刁鉆甚至不友好的問題,都會永遠積極正面地給出響應(yīng)。
  • 同時,該類問答機器人進一步深化拓寬到領(lǐng)域,會孵化出某些領(lǐng)域通用的機器人,比如HR領(lǐng)域,相信不同公司的HR,很大程度上面臨的問題集合都是固定的,也就是說,垂直領(lǐng)域的問答機器人是可以有效滲透并橫向復(fù)制給不同企業(yè)使用的。
  • 在英語學(xué)習(xí)相關(guān)產(chǎn)品上,我們想給小孩報名英文課,但是不清楚課程內(nèi)容和價格,那我們會問相關(guān)的問題。對于商家來講,我們不僅是提問的人,還是潛在的商機,可能我們僅僅只想問一個問題,但是商家卻希望能獲得我們更多的信息,電話、小孩年紀、上課意向等,進而讓我們留存下來最后能成功消費,類似的場景還有很多,我們把這一類應(yīng)用場景叫營銷機器人,它是商務(wù)團隊的好幫手,能在多個平臺自由切換,回答問題標準且及時,最終往往能通過更小的人力投入,獲取更多的有效線索。

2. 問答建模

基于前面的例子,我們對問答場景有了更具體的畫像,需要做什么已經(jīng)很清晰了,那么怎么做呢,我們開始嘗試對該問題進行建模。

首先是對知識的結(jié)構(gòu)化表示:

  • 用戶問題我們用q表示;
  • 一個問答對表示一條領(lǐng)域知識,我們把它叫做一個知識點ki;
  • 答案我們定義為ai;
  • 由于一個語義的問題可能有多種不同的表述方式,因此一個知識點的問題由多個不同的表述組成,這些表述都叫相似問pij;
  • 一個領(lǐng)域的知識庫,由多個知識點構(gòu)成。

圖2 知識庫表示

我們?yōu)槭裁匆眠@種方式來管理知識,不用圖表、也不用表格?

實際上,知識的管理方式是來源于實際業(yè)務(wù)場景的,這種方式非常易于維護,多個同義問題用一個知識點管理,也能減輕維護答案工作量,同一知識點下的問題也將會是很好的訓(xùn)練數(shù)據(jù)。

現(xiàn)在有了領(lǐng)域內(nèi)知識庫,用戶提問后,我們還需要一個問答模型,這個模型能找到和用戶query最匹配的問題,進而給出對應(yīng)的答案,這里我們采用檢索+匹配+排序的架構(gòu)。

圖3 問答建模流程

下圖是基于知識庫和問答模型在母嬰場景的應(yīng)用舉例:

圖4 QA應(yīng)用舉例

3.數(shù)據(jù)儲備

圖5 數(shù)據(jù)類型分布

在正式開始問答模型構(gòu)建之前,我們需要思考目前有哪些數(shù)據(jù)可被我們使用,以及我們需要什么數(shù)據(jù)來支撐后續(xù)的工作。

通用領(lǐng)域的貼吧、豆瓣、微博、知道等問答數(shù)據(jù),可被用來訓(xùn)練詞向量,或是統(tǒng)計共現(xiàn)、互信息詞典;人工標注的q/p對,可被用來訓(xùn)練有監(jiān)督的分類模型;垂直領(lǐng)域的知識庫可被用來訓(xùn)練領(lǐng)域相關(guān)的分類模型,也可用作詞向量的fine-tune,當(dāng)然也是有效的評估數(shù)據(jù)。

4. 模型迭代

圖6 QA架構(gòu)圖

整體的QA架構(gòu)圖如圖6所示,下面我們簡單介紹一下歷次迭代的思路。

1. BoW+LR

第一次迭代我們只引入了詞袋(Bag of Words)模型,5維代表特征。

  • Jaccard:q和p詞交集個數(shù)與詞并集個數(shù)的比值;
  • Coverity:最長公共子串特征,q和p最長公共子串在p中的占比;
  • Edit-Distance:最小編輯距離,q和p的最小編輯距離除以q、p長度的平均值;
  • TM:共現(xiàn)特征,基于bigram/trigram詞典,計算q、p共現(xiàn)詞平均score、共現(xiàn)詞最高score的平均值、共現(xiàn)詞去除相同詞后最高score的平均值共3維特征;
  • MI:互信息特征,基于互信息詞典,計算q、p兩兩詞的互信息平均值。

上述特征集合,均由大數(shù)據(jù)文本的統(tǒng)計特征衍生而來,對句子的語義表示能力較弱。

2.?BoW+WE+LR

第二次迭代我們給模型引入了一定的語義表示能力,對于了解深度學(xué)習(xí)、自然語言處理的同學(xué)來講,word2vec在很多任務(wù)上都有著非常杰出的貢獻,這一模型從不同角度刻畫了周圍詞和當(dāng)前詞的關(guān)系。經(jīng)過訓(xùn)練后,我們能得到一份詞匯的向量表示。

圖7 word2vec的2個模型

基于訓(xùn)練得到的詞向量,我們采用IDF對詞向量進行加權(quán)平均,以此得到q、p詞粒度的句向量表示,并最終通過余弦相似度來度量兩者的語義相關(guān)性。

圖8 基于句子表示的w2v特征

通過余弦相似度給出的相似,本質(zhì)上描述的還是兩個詞的相對一致,而且word2vec不考慮詞序,余弦相似度大表示兩個詞搭配出現(xiàn)、或者和同一批詞搭配出現(xiàn)的可能性較大,這一特征所顯示出來的弊端就是往往相似度高的2個詞具有可替換性但卻語義不完全相同。

比如q=“寶寶感冒怎么辦”,p=”寶寶發(fā)燒怎么辦”,”感冒”和”發(fā)燒”互相替換,句子依然具有合理性,而且由于他們經(jīng)常在同一批詞匯中搭配出現(xiàn),具有比較相似的分布特征,相關(guān)性比較高,然而他們語義并不同。

接下來我們引入另一種語義度量方法:WMD (the Word Mover’s Distance),它刻畫了如何用最小的代價將q中的每個詞以不同權(quán)重匹配到p中每個詞上,這是一種基于句子間的交互來表示語義的方法。

圖9 基于句子交互的WMD特征

在利用WMD計算q/p的相關(guān)性時,我們會對句子進行切詞、去停,對于q中的每個詞,找到p中的另一個詞,進行語義轉(zhuǎn)移,轉(zhuǎn)移的代價我們用兩個詞匯間的word2vec余弦相似度來度量。

當(dāng)2個詞語義較相近時,我們可以多轉(zhuǎn)移一點,如果語義相差很大,我們可以選擇少轉(zhuǎn)移或者不轉(zhuǎn)移,最后使得所有轉(zhuǎn)移的加權(quán)和最小,這里加權(quán)采用詞頻作為特征,具體示例如圖10所示。

圖10 the Word Mover’s Distance (WMD)

由于WMD也高度依賴word2vec詞向量,因此上文提到的word2vec cosine特征所有的不足,WMD特征依舊存在,既沒有考慮語序信息,同時對OOV (Out of Vocabulary)情況也很不友好,語義泛化能力弱,相似意圖區(qū)分能力差。

3.?BoW+WE+SE+fine-tune

前兩次迭代都沒有考慮知識庫內(nèi)的數(shù)據(jù),比較適用于無語料或者語料較少的知識庫,當(dāng)知識庫具有一定的規(guī)模后,正如前面提到的,同一個知識點下的相似問,將是很好的訓(xùn)練數(shù)據(jù)。

我們采用了fastText模型,充分利用知識點中的問題語義相同/相近這個事實作為監(jiān)督信號,訓(xùn)練一個分類模型,直接用一個問題的詞去預(yù)測問題所屬的知識點。

FastText是Tomas Makolov為了彌補word2vec的某些不足而提出的改進方案,和word2vec中CBOW不同的是,它的輸入不再是上下文,而是一整個句子,同時它接收子詞和ngram特征,能捕捉到更多的信息。

比如單詞的前后綴,以及詞的語序特征等。相比其它深度學(xué)習(xí)模型,fastText結(jié)構(gòu)簡單,本質(zhì)上是一個線性模型,不太適合處理較長或者線性不可分的樣本,而對于偏線性的短文本分類任務(wù)卻比較合適,能在較少訓(xùn)練集合的基礎(chǔ)上,非??焖俚氐玫讲诲e的效果。

圖11 fastText模型結(jié)構(gòu)

同時fastText在訓(xùn)練過程中也會產(chǎn)生一份詞向量,經(jīng)實驗驗證,基于知識庫訓(xùn)練fastText的詞向量對基于大數(shù)據(jù)訓(xùn)練的word2vec詞向量進行fine-tune,能一定程度上提升該領(lǐng)域的問答效果。

4. BoW+WE+SE+DM+fine-tune

前面我們利用一個知識庫的相似問語義相近作為監(jiān)督信號,從中抽取出了一個知識點的語義信息,但我們最終的目標是判斷用戶輸入和相似問之間的相關(guān)性,這里我們使用一個深度學(xué)習(xí)的模型ESIM (Enhanced LSTM for Natural Language Inference),利用要比較的兩句話的監(jiān)督信號來訓(xùn)練模型,觀察句對的交互對模型的影響。

圖12 ESIM模型架構(gòu)(左側(cè))

上圖是ESIM的網(wǎng)絡(luò)結(jié)構(gòu),它在眾多短文本分類任務(wù)中都有不錯的表現(xiàn),主要在于輸入2句話分別接embedding+BiLSTM, 利用BiLSTM學(xué)習(xí)一句話中的word和它上下文的關(guān)系后,在進行inference之前,會利用attention操作計算2個句子word之間的相似度來更新embedding,也就是說比較的兩句話在模型訓(xùn)練中產(chǎn)生了交互,相比其它的類似網(wǎng)絡(luò)只在最后一層求距離來講,這種交互的影響能學(xué)到更全局的信息。

5. BERT+MTL+fine-tune

當(dāng)然,學(xué)術(shù)界是在不斷變化的,對于效果較好的模型,我們也需要進行嘗試,尋找適合在工業(yè)界落地的條件和場景。

圖13 BERT+多任務(wù)學(xué)習(xí)MTL框架圖

在BERT橫掃了11項NLP測評任務(wù)的效果后,我們把它應(yīng)用在知識點分類任務(wù)上,期望利用BERT本身的優(yōu)勢,來提升分類任務(wù)的效果。同時我們還基于知識庫數(shù)據(jù),在BERT的基礎(chǔ)上,通過MTL進行fine-tune,再以BERT-MTL為基礎(chǔ),通過單個任務(wù)分別進行fine-tune。

圖14 BERT+MTL的fine-tune過程

5. 評估

圖15 評估數(shù)據(jù)舉例

效果變好了,有多好?肉眼可見顯然不能作為一個反饋的指標,所以我們需要去科學(xué)地評估這些改進,評估這一環(huán)節(jié)我們選了6個不同領(lǐng)域,每個領(lǐng)域50個知識點,每個知識點12個相似問作訓(xùn)練,3個作評估測試,示例數(shù)據(jù)見圖15,在此數(shù)據(jù)集基礎(chǔ)上去評估準召和F1。具體結(jié)果見圖16,大家可以看到在不卡閾值的情況下,準確率從0.8提升到了0.968。

圖16 歷次迭代評估數(shù)據(jù)表

迭代是一個循序漸進的過程,可能有人會有疑惑,我怎么知道要用什么特征、選哪個模型,從多次迭代的經(jīng)驗來講,Badcase分析很重要,特征的設(shè)計一方面來源于你對問題的直觀感知。

比如我們需要從多方面(統(tǒng)計層面、詞匯表示、句子表示、句子間交互等)來設(shè)計方法對句子進行語義表示,另一方面來源于對模型現(xiàn)有Badcase的彌補,通過分析case表現(xiàn)出來的規(guī)律或者傾向來設(shè)計有針對性的特征。

同時學(xué)術(shù)界也在不斷更新新的模型,3年前時興的技術(shù),到現(xiàn)在被完全替代的可能性是非常大的,因此我們需要與時俱進。

結(jié)語

整個智能問答系統(tǒng)升級的過程,主要圍繞四個步驟進行,首先面對任務(wù)要理解問題的本質(zhì),對問題進行合理的建模,然后評估選擇合適的語言工具去實現(xiàn)它,再由淺入深穩(wěn)步迭代,形成數(shù)據(jù)、模型、反饋的閉環(huán),最后就是要持續(xù)性學(xué)習(xí),擁抱變化,擁抱技術(shù)。

參考文獻:

[1] Nan Duan. Building Informational Bot (InfoBot) with Question Answering & Generation. In Association for Computational Linguistics (ACL). 2017.

[2]Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg Corrado, and Jeffrey Dean. 2013b. Distributed representations of words and phrases and their compositionality. In NIPS, pages 3111–3119.

[3] Qian Chen,?Xiaodan Zhu,?Zhenhua Ling,?Si Wei,?Hui Jiang,?Diana Inkpen. “Enhanced LSTM for Natural Language Inference”. In Association for Computational Linguistics (ACL). 2017.

[4] Le, Quoc, and Tomas Mikolov. “Distributed representations of sentences and documents.” International Conference on Machine Learning. 2014.

[5] Devlin, J., Chang, M.-W., Lee, K., and Toutanova, K. Bert: Pretraining of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805, 2018.

[6] Xiaodong Liu, Pengcheng He, Weizhu Chen, and Jianfeng Gao. 2019a. Improving multi-task deep neural networks via knowledge distillation for natural language understanding. arXiv preprint arXiv:1904.09482.

[7] Xiaodong Liu, Pengcheng He, Weizhu Chen, and Jianfeng Gao. 2019b. Multi-task deep neural networks for natural language understanding. arXiv preprint arXiv:1901.11504.

 

本文由 @吾來 原創(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ù)
  2. 大大大大叔大嬸打算大所多群無大所大所大所大

    來自北京 回復(fù)
  3. 打死

    來自北京 回復(fù)