您當前的位置是:  首頁 > 新聞 > 文章精選 >
 首頁 > 新聞 > 文章精選 >

Chatopera多輪對話提升自動化流程服務

2018-08-07 13:42:28   作者:   來源:CTI論壇   評論:0  點擊:


王海良老師
 
本文根據(jù)Chatopera聯(lián)合創(chuàng)始人&CEO王海良老師在DataFunTalk人工智能技術(shù)沙龍“自然語言處理技術(shù)應用實踐”中分享的《多輪對話提升自動化流程服務》編輯整理而成,在未改變原意的基礎上稍做修改。
多輪對話提供自動化流程服務
今天主要分享兩部分,一部分是技術(shù)分享,第二部分是介紹一下Chatopera提供的企業(yè)聊天機器人應用解決方案。目前開發(fā)企業(yè)聊天機器人很麻煩,需要用大量的數(shù)據(jù),依賴機器學習和熟悉自然語言處理的專家,成本比較高,我們能提供快速落地、穩(wěn)定的、低成本實現(xiàn)聊天機器人的方案,下圖是我們的解決方案。
Chatopera面向企業(yè)業(yè)務人員發(fā)布了多輪對話設計器,用于設計滿足企業(yè)需求的聊天機器人,從多輪對話設計器中可以導出對話應用。對話應用可以導入到智能問答引擎中,智能問答引擎是面向企業(yè)IT人員的,它可以管理聊天機器人,包括多輪對話、知識庫、意圖識別和監(jiān)控接口使用情況。智能問答引擎暴露接口對外集成,也包含基于Web的管理控制臺,這套方案可以支持將企業(yè)內(nèi)部流程和在客服、營銷過程中的話術(shù)轉(zhuǎn)化為聊天服務,接入到企業(yè)微信、微信公眾號等,從而提供企業(yè)的智能化和自動化。閑話不多說了,下面開始分享一些自然語言處理的知識。
語言模型是計算一個句子出現(xiàn)的可能性,比如我問機器人一個問題,那么它的不同回答出現(xiàn)的可能性是什么樣的。自然語言處理經(jīng)歷過很多階段,不同發(fā)展時期有不同的特點,經(jīng)歷過經(jīng)驗主義主導和理性主義主導的時期,前者主要是語言學家推出的一些方法,后者則大量使用統(tǒng)計學方法。自然語言處理又應用于很多任務中,比如機器翻譯、信息檢索和閱讀理解,近年來取得重大突破的主要是基于統(tǒng)計學方法的。用大量的數(shù)據(jù)統(tǒng)計出語言的特征,從中找到規(guī)律,從而對給定輸入預測出結(jié)果。第一位提出用數(shù)學解決語言問題的是香儂,他是信息論的開創(chuàng)者,也是人工智能之父,F(xiàn)在很多用于人工智能的方法更多的是來源于通信領域,比如最大熵、最大似然都來自于信息論。
檢驗一個語言模型的好壞是通過“困惑度”來衡量,就是你說了一個字,下一個字有幾種可能,可能數(shù)越少說明語言模型越準確。描述一個語言模型的格式常用ARPA,很多工具都支持這種格式,用很大的語料訓練形成一個文件,文件帶有N-Grams的token列表,第一列是token,第二列是它出現(xiàn)的概率,通常是以Log10函數(shù)換算后的結(jié)果,第三列是backoff加權(quán),主要用來平滑。計算一句話出現(xiàn)的可能性用途有很多,比如糾錯中看那個字是錯誤的。公式7就是具體計算一句話可能性的,它將目標分成兩個部分,然后分別求,右半部分是對應的backoff權(quán)值,如果它不存在,就使用1.0作為默認值,左半部分如果在語言模型中也不存在,就迭代計算。
如果解決一個翻譯任務,就可以用歷史數(shù)據(jù)去訓練模型,我們的目的是得到一個函數(shù),通過它預測未來輸入的句子的翻譯結(jié)果。我們不能知道完整的特征空間,但是基于大數(shù)定理,我們認為在訓練數(shù)據(jù)很大的情況下,訓練后的模型與完整特征空間是一致的,這就是用已知數(shù)據(jù)去擬合完整的特征空間,利用數(shù)學原理,我們能得到的解不一定是最優(yōu)解,但可以保證是局部的最優(yōu)。最大熵原理是指導這個求解過程的重要思想,它的核心就是對未出現(xiàn)的事件,認為是等可能的,這樣保證熵最大。因為熵增定律認為系統(tǒng)總是朝著最無序,最混亂的方向發(fā)展,那么保證熵最大,可以最接近真實情況。上圖可以用來描述最大熵模型,首先定義計算熵的公式,然后目標是最小化它的對偶問題(公式8),然后描述它的限制條件,限制條件為若干特征函數(shù),特征函數(shù)的構(gòu)造一般是輸出值為0或1的函數(shù),再一個條件就是對于一個輸入x,各種輸出的概率和是1。然后將目標函數(shù)和限制條件通過拉格朗日乘子法建立方程組,對每個方程求偏導,進行求解。這是一個凸優(yōu)化問題。
中文分詞、詞性標注、命名實體識別是自然語言處理中的“三姐妹”,是其它任務的基礎。中文分詞這些年來出現(xiàn)了很多方法,在九幾年的時候主要通過字典和人為指定的規(guī)則完成,比如MMSEG算法,提出語素自由度概念,前向或后向的算各種分詞情況下的分數(shù),然后確定最優(yōu)解。2000年以后,多用機器學習算法,準確率也大幅提升,解決了識別新詞等困難,有些分詞器準確率能達到96%以上。隱馬爾可夫模型是很經(jīng)典的模型,也很簡單,很多分詞器基于它實現(xiàn)。使用隱馬爾可夫模型可以解決三類問題:
  1. 概率計算問題:計算可觀測序列出現(xiàn)的概率;
  2. 預測問題:根據(jù)可觀測序列找到最有可能的隱藏狀態(tài)序列;
  3. 學習問題:估計隱馬爾可夫模型的參數(shù)。
隱馬爾可夫模型包含五個參數(shù):不可觀測的狀態(tài),可觀測的觀測序列,初始狀態(tài)概率向量,觀測概率矩陣和狀態(tài)轉(zhuǎn)移概率矩陣。在中文分詞中,由字構(gòu)詞法就是將狀態(tài)分為(B,M,E,S),它們分別代表一個字出現(xiàn)在詞匯的開始、中間、結(jié)尾或獨立成詞。近年來,基于條件隨機場的分詞效果超過了隱馬爾可夫,主要是因為條件隨機場能更充分的利用一個字的上下文關(guān)系,能更好的描述序列化任務,因為隱馬設定了比較強的依賴,只是利用了前一個字。
在很多自然語言處理任務中,比如搜索、摘要和關(guān)鍵詞提取都與相似度計算關(guān)系很大,尤其是兩個句子和兩個詞之間的相似度。目前基于詞向量的相似度計算用的比較多的是Word2vec,它的網(wǎng)絡設計是很簡單的,比如C-BOW模型,就是利用前后詞去預測當前詞。Synonyms是一個開源的可以用于計算相似度的庫,它融合了語義上的距離以及匹配,利用開源的算法和開放的wikidata數(shù)據(jù)制作的。
https://github.com/huyingxi/Synonyms
在最近受到了一些關(guān)注,在Github上,star數(shù)量在穩(wěn)定增長,我是這個項目的作者之一,歡迎大家使用和提Issue。
Synonyms star 趨勢
常見的信息檢索系統(tǒng)就是基于倒排索引,在2011年以后,召回后進行排序時,又多用深度學習技術(shù),比如Pointwise, Pairwise等方法。
倒排索引是一個詞可能出現(xiàn)在很多文章中,那么就將詞建一個列表,然后出現(xiàn)它的文章都建一個id,然后這些文章按照遞增的順序關(guān)聯(lián)到這個詞上。在查詢時,根據(jù)不同條件得到文章集合,使用歸并算法輸出。
Apache Lucene是幫助實現(xiàn)信息檢索系統(tǒng)的開源項目,它的query語法很豐富,性能也很出眾。Lucene的查詢語法也給Chatopera團隊實現(xiàn)聊天機器人的對話引擎很大的啟發(fā)。另外在搜索時,Lucene也支持使用近義詞,通過簡單擴展、簡單收縮、簡單映射和姻親擴展讓檢索更智能。
另外一個知名開源項目 - Elasticsearch也是面向企業(yè)快速搭建信息檢索系統(tǒng)的,是實現(xiàn)搜索引擎的非常棒的項目,它的文檔相關(guān)度計算如上圖,它不但使用了TF-IDF、也支持對一個詞進行加權(quán),還根據(jù)文檔長度進行規(guī)范化。
搜索引擎的評測標準有很多指標,比如MAP、MPP,基于混淆矩陣的準確率和召回率是經(jīng)典的方法。準確率和召回率是矛盾的,所以,常使用二者結(jié)合起來計算的F1值評價,F(xiàn)1值越高,效果越好。
在自然語言處理中,另一個比較難的點就是分析詞與詞之間關(guān)系,在分詞后,一個詞在句子中充當什么成分。依存關(guān)系分析依賴于分詞的結(jié)果,也依賴于詞性標注的結(jié)果。標注依存關(guān)系數(shù)據(jù)集也是很難的任務,詞之間的關(guān)系會有幾十種。我個人認為,從近幾年學術(shù)上的成果看,依存分析分析已經(jīng)處于從學術(shù)向?qū)嶋H應用過渡的節(jié)點了,2017年在依存關(guān)系分析任務上,就出現(xiàn)了準確率95%的論文。
目前,用于依存關(guān)系分析的流行算法有基于Transition-based和Graph-based兩種。Transition-based parser基本理念就是將待分析的句子放入buffer中,然后順序進入parser,oracle是一個分類器,它會給出針對這個詞作出哪種行為,比如SHIFT, 右附加關(guān)系,左附加關(guān)系。下面是有關(guān)依存關(guān)系分析的兩個開源項目:
https://github.com/Samurais/text-dependency-parser # 經(jīng)典的transition-based parser
https://github.com/elikip/bist-parser # 使用神經(jīng)網(wǎng)絡實現(xiàn)Oracle的Parser
以上內(nèi)容是自然語言處理的部分,但是本次分享的主題是“多輪對話提升自動化流程服務”,目前信息檢索服務不斷向更智能的方向發(fā)展,搜索引擎公司越來越了解我們,但是在企業(yè)里,隨著業(yè)務的發(fā)展,它更需要的是通過多輪對話完成流程服務,一問一答的服務解決不了太多問題。企業(yè)里對業(yè)務流程引擎有著極大的熱情,業(yè)務流程引擎也在幾十年的發(fā)展中,不斷標準化,完善化。比如當前的標準BPMN2.0用50多個元素去幫助業(yè)務人員建模,編排流程服務。結(jié)合對業(yè)務流程引擎和自然語言處理的理解,Chatopera開發(fā)了對話引擎,并基于它開發(fā)了多輪對話設計器智能問答引擎。
對話引擎是以自然語言為輸入的,描述對話的,它根據(jù)這些腳本,梳理規(guī)則,形成機器人的思維邏輯導圖。對話引擎也有自己的一套強大的語法規(guī)則,能讓機器人更加智能。
上圖是多輪對話設計器的對話編輯窗口,左側(cè)寫腳本,右腳上是實時渲染的機器人思維邏輯導圖,右下角是測試窗口。多輪對話設計器通過函數(shù)完成系統(tǒng)集成,比如在對話中依賴CRM或訂單管理數(shù)據(jù)等,函數(shù)腳本可以相互調(diào)用,這樣能滿足企業(yè)的各種業(yè)務需求,并且靈活調(diào)整。下面的鏈接提供一個具體的例子,怎么通過多輪對話設計器實現(xiàn)一個查詢天氣的機器人。
https://github.com/chatopera/conversation-sampleapp
在Chatopera,自然語言處理和機器學習主要應用于幫助業(yè)務人員快速實現(xiàn)聊天機器人,比如客服人員輸入“訂單下單后怎么查看物流狀態(tài)”,那么這就話有哪些不同的說法,基于對話引擎,它的規(guī)則是什么樣的,它的回復有幾種可能。也就是,Chatopera利用先進的技術(shù)幫助業(yè)務人員寫機器人的對話腳本。在Chatopera看來,這是企業(yè)實現(xiàn)聊天機器人過程中,一個重要的環(huán)節(jié)。那么,怎么做呢?一方面,要熟悉業(yè)務流程引擎的設計理念,比如流程狀態(tài)機、流程的編排、企業(yè)業(yè)務人員的工作習慣等,另外一方面,要對信息檢索、分詞、近義詞挖掘、依存關(guān)系和機器閱讀理解等自然語言處理任務不斷研究,持續(xù)創(chuàng)新。
今天分享的內(nèi)容包括一些經(jīng)典的、成熟的,同時,這些方法也能啟發(fā)大家創(chuàng)新,比如分詞的技術(shù)應用于機器閱讀理解、Lucene的查詢語法應用于多輪對話技術(shù)等。期待于大家進行更深度的交流,我今天的分享就到這里,想要進一步了解Chatopera的產(chǎn)品請訪問:
https://docs.chatopera.com/

【免責聲明】本文僅代表作者本人觀點,與CTI論壇無關(guān)。CTI論壇對文中陳述、觀點判斷保持中立,不對所包含內(nèi)容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

專題