[對話式AI-9] 2020 Chatbot Framework Comparison 聊天機器人框架對比

這是經過數個月的調查與更新,所做的2020年聊天機器人框架對比。本表整理了10個知名的Chatbot框架,幾乎涵蓋時下Chatbot所有的Feature;經過一輪基本的驗證後,針對模糊之處再深入使用,藉此得到詳盡的對比。10月做了一次修正與更新,為了將資料整合到部落格的AI專欄上,也克服網誌呈現表格的問題,在此分享給各位業界先進與同好。

TypeFeatureDescriptionGoogleMicrosoftXiao-i Robot小i機器人IBMDYDUSAPFlow XOMeyaGupshupHubspot
DialogflowAzureBotiBot Enterprise
/ Pro
iBot International
/ Express
WatsonDYDURecast.aiFlow XOMeyaGupshupHubspot
Operation & appearanceCode-free backend透過後端介面拖拉流程圖就能建立chatbot,不須寫程式××
Structure & logicKnowledge-independent assistantknowledge(skills)的編輯與assistant的創建彼此獨立×××××××
Bots collaboration可以定義一系列彼此knowledge不相關的bot,然後通過組合bot來構建一個assistant的整體輸出××××
FAQ-based intent支援FAQ格式的intent與答案,而每個intent的答案是固定的×××××××
Multi-languageMulti-language支援多語言對話×××
Auto-language detection系統自動偵測語言,使用者不需自行選擇×××××
Pre-build contentKnowledge預置常用的一般或行業知識,允許客戶快速構建chatbot
Knowledge editIntent -- intent conflict resolution利用AI技術偵測人工填寫intent/user samples時產生的錯誤和衝突××××××××
Intent -- utterance對某個intent編輯不同的問法(擴展問)×××
Entity -- my entity可自行定義entity(例如通過同義詞)××××
系統可自動推薦同義詞×××××××
Multi-turn Dialog若問句資訊不足,系統可以反問使用者(多輪對話)√(ibot ui)√ (scene)√(5)
× (workflow)√(50)
Dialog -- slots系統可自動擷取與填充槽位
Dialog -- disambiguation當使用者的問句匹配到dialog中2個以上的intent節點時,assistant會請使用者決定正確的intent××××××××
Dialog -- 意圖推薦當使用者的問題超出服務範圍,或無法識別意圖時,系統可以推薦相關的意圖給使用者×××××××
Dialog -- multi slots filling對intent缺失的多個資訊,進行一次性的提問,讓使用者可以一次補充所有資訊,而非逐條詢問與回覆×××××××
Dialog -- multi reply對同一intent有多種回答,讓系統可以隨機選擇,產生更自然的對話效果××
Dialog -- Digression允許用戶在dialog中,進行話題(node)的切換,例如從某個流程節點跳轉到另一節點,並允許跳回等。×××
Dialog -- interruptions可讓使用者在對話中暫時討論不同的主題,然後再返回原來的主題××××√ (quit keyword)×××
Knowledge map顯示不同knowledge之間的關係和聯繫×××××××
Answer - variable提供特定參數,讓系統獲取相關資訊,如使用者名稱、IP、URL等內容,也可以直接用variable的形式添加在答案中。×××
Sentiment允許系統對正反及不同程度的情感狀態,做出對應的回應××××××××
Import/export支援knowledge匯出及匯入×××××
DashboardAnalytics dashboard提供報表讓客戶進行數據分析√ (7 D)√ (2 WK)√ (30 D)
√ (30/90 D)√ (3 M)√ (increase)
TestingTester提供測次問句的各種工具
Batch test支援問句的批次測試××××××××
ImproveDeep learning model支援深度類神經網路模型×××××
Active learning從日誌中收集待確認的對話,經客戶確認後學習到知識中××××
Intent recommendation根據已有的對話數據推薦意圖,從而實現更快地訓練××××××
IntegrationCustom plug-in可以客製化整合其他API××
Preview link可提供預覽chatbot的連結××××
Service desk integrations支援無縫轉人工服務××
Versioning允許對assistant的編輯結果,進行版本控管××××××
AuthorizationAccess control可以允許添加訪問人員和管理相應的權限××××××
Search skill支援透過搜索非結構化數據來擴展assistant的knowledge×××××××
DataLog data across instances將正式環境中的insights整合到開發環境中×××××××
Data isolation××××××××
ServiceSLA 99.9%服務等級協議達到99.9%的可用時間×××××××××
Mail subscription支援透過郵件訂閱comments等資料×××××××××
Survey可設立問卷調查模板(對內部或外部調查)×××××××××
對話預處理通過預設的對話匹配規則,可快速自訂簡單的場景××××××××
Matching strictness可調整匹配的閾值××××××××
定時任務支援知識和詞的定時同步××××××××
前後綴處理可自動忽略位於句首或句末的特定詞語或短句××××××××
停用詞可自動忽略句中任意位置的特定詞語×××××××××
Table QA可動態載入結構化數據,並通過自然語言交互,轉換成SQL語句,對資料庫進行查詢×××××××××
質檢自動分析交互日誌,將可能的錯誤應答的對話,提供給維運人員審核××××××××
地區維度根據使用者所在地區給出不同答覆××××××××
知識編輯鎖一位編輯人員操作某個知識時,系統將鎖定該知識群組,使其他人員無法編輯,藉此防止衝突的產生×××××××××

[對話式AI-4] Chatbot的挑戰與發展趨勢

雖然電腦視覺(Computer Vision)透過深度學習(Deep Learning)技術取得了重大進展,但在自然語言處理(Natural Language Processing)領域,深度學習的導入仍然處於發展初期。

以聊天機器人(Chatbot)來說,自從圖靈測試在2014年被聊天機器人Eugene通過後,加拿大學者改進測試的缺失提出了威諾格拉德架構挑戰賽(Winograd Schema Challenge),也是目前最具權威的AI競賽。

該競賽的第一輪是代詞消歧問題(Pronoun disambiguation problems)。舉例來說,當人類分析句子時,會用經驗來理解指代的對象:

  • 市議會拒絕示威者,因為他們害怕暴力。
  • 市議會拒絕示威者,因為他們提倡暴力。

而這個選擇題只有兩個答案,代詞”他們”是指”市議會”還是”示威者”,AI應該要指出在第一句說的是市議會,第二句說的是示威者,從問題上可以發現,系統無法透過這段話的上下文進行理解得到答案,這在傳統實作上必須透過知識圖譜(Knowledge Graph)進行推理,或使用深度類神經網路模型,要通過比賽拿到獎金25,000美金,準確率(Accuracy)必須達到90%以上,但目前最好的成績只有58%,遠比人類低得多。

除了上述根本影響Chatbot問答品質的問題,還有幾個難題仍未被突破:

  1. 通用的模型架構(Universal Model Architecture):為了整合語音辨識、詞法分析、句法分析、語意分析、深度學習,答案搜尋,對話管理、自然語言生成和語音合成等模組,確保其相容性,當前Chatbot架構與模型相當複雜,管理較為困難,如何研發通用的架構與模型,是未來所有同業的發展目標。
  2. 情感計算( Affective Computing ):從分析文本的情感 (Sentiment Analysis)到辨識人類情緒的情感計算,例如開心、生氣、哀傷等;可以讓Chatbot與人交互時更有溫度,是目前產學界熱門研究方向。
  3. 開放領域(Open Domain):現在的Chatbot只能做好特定領域的工作,如何建構開放領域的知識,甚至不需要人工建構知識,讓機器自學習,也是產學界正在努力的方向。
  4. 端對端 ( End to end ) :不經過傳統的模組串聯,利用深度學習 ( Deep Learning ) 建立端對端的簡潔模型;達到輸入原始資料後,可直接得到想要的輸出結果,但與此同時還要支援多輪對話管理、上下文情境及知識圖譜推理,避免安全回答,甚至是保持Chatbot個性的一致性,正確的進行指代消解,這些挑戰都是產學界近期的目標。
  5. 基於生成的模型(Generative Model):目前自然語言生成技術 ,可分為基於檢索、基於範本及基於生成兩種方法,三者都可以導入深度學習技術,目前以基於檢索及基於範本為業界主流;雖然深度學習Seq2seq模型非常適合產生文字,但此基於生成方法尚處早期的發展階段,空間和時間複雜度高,實際應用效果不佳。

[對話式AI-6] 模組化的任務導向對話系統實作方法

# 自然語言理解 (Natural Language Understanding)
問句 = input("請輸入你的問題: ") 
使用者動作.意圖 = 意圖識別(問句)
使用者動作.一組槽位 = 槽位填充(問句, 使用者動作.意圖)

# 對話狀態追蹤 (Dialogue State Tracking)
if (使用者動作.意圖 == Null)
  對話狀態.意圖 = 得到意圖(對話歷史)
  對話狀態.一組槽位 = 更新對話狀態(使用者動作.一組槽位, 對話歷史)
else
  對話狀態 = 使用者動作
  填充個性化槽位(對話狀態.一組槽位, 使用者畫像)
  意圖所缺的槽位填入預設值(對話狀態)

# 對話策略學習 (Dialogue Policy Learning)
if (對話狀態.意圖 == Null)
  系統動作.意圖 = "不明"
else if (對話狀態.意圖 == 特定服務)
  if (槽位是否缺失(對話狀態))
    系統動作.意圖 = "對空白槽位提問"
    系統動作.一組槽位 = 對話狀態.一組槽位
   else
    系統動作.意圖 = 特定服務
    系統動作.一組槽位 = 查詢服務API(系統動作.意圖, 對話狀態.一組槽位)

# 自然語言生成 (Natural Language Generation)
if 系統動作.意圖 == "不明"
  問句 = input("我不懂你的意思,請換個方式告訴我: ")
else if 系統動作.意圖 == "對空白槽位提問"
  系統提問 =  提問生成(系統動作)
  問句 = input(系統提問)
else if 系統動作.意圖 == 特定服務
  print(回答生成(系統動作, 回答模板))

[對話式AI-5] 基於知識庫的問答系統實作方法

# 問句分析 (Question Analysis)
問句 = input("請輸入你的問題: ") 
代表問句的一組資訊詞 = 問句分析(問句)
使用者意圖 = 意圖識別(代表問句的一組資訊詞, 知識圖譜)

# 片語映射 (Phrase Mapping)
if (使用者意圖 == Null)
  問句 = input("我不懂你的意思,請換個方式告訴我: ")  
else if (使用者意圖 == 特定服務)
  服務所需的一組資訊詞 = 所缺的資訊詞填入預設值(代表問句的一組資訊詞)
  問句資訊詞的本體 = 自然語言映射到本體(服務所需的一組資訊詞, 知識圖譜)

# 查詢建構 (Query Construction)
  答案的關鍵內容 = 查詢(問句資訊詞的本體, 各種API服務)
  答案的本體 = 服務映射到本體(答案的關鍵內容, 知識圖譜)
  一組候選答案 = 產生答案(答案的本體, 知識圖譜)

# 消歧 (Disambiguation)
    一組候選答案 = 消歧(一組候選答案, 服務所需的一組資訊詞)

# 答案生成 (Answer Generation)
  一個答案 = 排序(一組候選答案)
  回答 = 轉換成自然語言(一個答案, 回答模板)
print(回答)

[對話式AI-1] Chatbot的類型與對比(問答、對話與閒聊系統)

由於常常跟客戶和外部工程師雞同鴨講,最後發現大家對聊天機器人的定義都不一樣;你知道Chatbot可以分成三類嗎?對話式AI專欄的第一篇,就來介紹一下「各類Chatbot的用途」,並針對「開發方法」、「特點」、「關鍵評價指標」及「應用場景」等進行深入對比,讓你一次搞懂Chatbot,不再一知半解。

類別問答系統任務導向對話系統閒聊系統
英文Question Answering systemTask-Oriented Dialogue systemChit-Chat Dialogue system
功能回答使用者問題代替使用者完成任務陪伴使用者閒聊
領域特定領域特定領域 開放領域
方法基於Web檢索、基於知識庫、基於社群模組化(基於規則、資料驅動)、端對端(資料驅動)基於檢索、基於生成
特點單輪對話,著重問句分析(識別資訊詞)多輪對話,著重對話管理多輪對話,著重個性化及情感分析
關鍵指標召回率(Recall)、精確率(Precision)、F-Measure任務完成率、對話耗時、對話輪數、機器模擬使用者評分詞重疊率、詞向量距離、機器模擬使用者評分
應用場景FAQ、教育助理、訂票閒聊、陪伴
知名案例IBM WatsonSiri、Google Assistant微軟小冰、SimSimi
實作方法基於知識庫的問答系統模組化的任務導向對話系統應用搜尋引擎檢索,或訓練Seq2seq模型生成

[對話式AI-8] 研發部門與開發流程介紹

本文以筆者所任職的公司為例;在不涉及公司機密的前提下,介紹人工智慧產品研發的「相關部門、開發流程及工作內容」,為大家揭開AI產業的神秘面紗。

公司主要業務是為電信、金融、政府及電商等領域,導入AI技術、自然語言處理(Natural Language Processing, NLP)技術、系統整合及平台建置,最常幫一些大型機構建置Chatbot及呼叫中心等系統,協助提升客戶服務,並降低人力需求。

AI公司的組織架構

一般AI公司研發中心可以分為下列部門(舉例),橫向為各部門名稱,縱向為組織架構:

  • 研究院 / 知識研究部(理論及算法研究)
  • 自然語言理解NLU研發部 / 語音引擎研發部(算法研究及應用)
  • 基礎產品研發部 / 雲端平台研發部(引擎應用)
  • 產品測試部
  • 解決方案部(產品包裝)
  • 專案實施部(產品應用及二次開發)

AI產品的開發流程

  1. 研究院負責與大學院校合作,閱讀論文並研究前瞻技術後,將研究成果提供給NLU / 語音研發部。同時通報專利申請單位,將有價值的技術註冊成專利。
  2. NLU / 語音研發部將研究成果,實作成底層引擎,並將其轉交給基礎產品研發部。同時通報專利申請單位,將有價值的技術註冊成專利。
  3. 基礎產品研發部負責市場調查、設計產品,並撰寫前後端邏輯,將引擎包裝成Chatbot / 推薦系統(Recommender system)等產品。同時通報專利申請單位,將有價值的技術註冊成專利。
  4. Chatbot / Recommender等產品的基本內容及行業知識,由知識研究部負責建置,如標註資料、建置知識、知識圖譜、預置行業包等。
  5. 解決方案部負責將Chatbot / Recommender產品的各項能力,打包成各個行業的解決方案,提供給業務單位兜售。
  6. 如果客戶有興趣,專案實施部會使用該Chatbot / Recommender等產品 / 解決方案,為客戶無償做POC(Proof of Concept);如果客戶滿意其成果,就會為後續開發簽約付錢。
  7. 專案實施部再根據合約內容完成Chatbot / Recommender等系統建置及介接API等二次開發工作,並提供售後維護服務。公司每年再收取License、維護及再開發費用。

AI產業的工作內容

若你有志投入AI相關產業,可以往以下幾種部門走,但著重的技術都不同:

研究院

一般使用Python語言及TensorFlow、PyTorch及SKlearn等框架研究算法(Algorithm),如語音辨識(Automatic Speech Recognition)、分詞(Word Segmentation),詞性標註(Part of Speech)、句法分析(Syntactic Analysis)、語意分析(Semantic Analysis)、對話管理(Dialogue Management)、自然語言生成(Natural Language Generation)及語音合成(Text to Speech)等。

NLU / 語音研發部

由於Python不適合用於大規模平行計算(Parallel Processing),這裡常使用Java語言,Mahout、Deeplearning4j等框架在Hadoop及Spark上實現算法、引擎、訓練及部署模型。

基礎產品研發部

這裡就比較沒有局限了,什麼語言和框架都可以用,譬如使用Go語言及Gin框架,撰寫後端邏輯,將底層引擎包裝成產品;以及使用Javascript語言、React或Vue等框架開發前端。

專案實施部

根據客戶需求選擇語言及框架,透過Chatbot / Recommender等產品 / 解決方案為客戶二次開發,並提供售後維護服務。

2019上半年中國AI產業研究筆記

●2018年中國AI領域融資1311億,增長超過100%
●2020年中國AI產業規模將超1500億元
●2013至2018年全球AI論文共30.5萬篇,美國發表5.2萬篇,中國發表7.4萬篇
●2030年中國無人駕駛汽車銷量預計將達190萬輛,出行AI備受關注
●中國自動駕駛技術正朝”L4級高度自動化”努力,世界尚未有人能夠達到”L5全部自動化”
●中國CV市場中68%都用於安防
●當前AI的商業化主要是基於CV,語音,NLP等技術
●中國AI產業目前處於各自為營的狀態,但有產業鏈分工的發展趨勢
●易於使用的自動化ML工具逐漸成為主流,例如AutoML
●隨著5G即將商用,無線通訊效率提升,有助於AI應用升級


Source: https://report.iimedia.cn/report.jsp?reportId=38874

推薦演算法介紹

隨著網際網路日益普及,數位內容呈現指數成長趨勢,使人們淹沒在資訊洪流之中,例如:Netflix上有數萬部電影,Amazon上有數百萬本書籍,Del.icio.us上有超過十億的網頁收藏,這麼多的訊息,我們無法一一瀏覽,而傳統的搜尋引擎只能呈現給使用者一樣的排序清單,無法根據不同使用者偏好提供個性化服務,而個性化搜尋與推薦系統正是解決當前資訊超載的有效方法之一。

其中推薦系統是資訊過濾系統的子集,它試圖預測使用者將賦予他們還沒有考慮的項目(例如:書籍、音樂或電影)或社交元素(例如:個人或團體)評分或偏好。

在一個真實的推薦系統中需要考慮的項目可能會有成千上萬,甚至超過百萬,例如:Amazon、eBay和YouTube等,使用者數量也會非常龐大,因此我們需要準確且有效率的推薦系統。在激烈的競爭環境之下,現有推薦系統已經在電子商務領域取得卓越成果,但在不同領域之下,還需要各方先進和專家努力發展。

一個完整的推薦系統由三個部分組成,收集使用者資訊的行為紀錄模組,分析使用者偏好的模型分析模組與推薦演算法模組;行為紀錄模組負責記錄使用者行為,例如評分、購買或瀏覽等;模型分析模組負責分析使用者行為,以建立合適的模型來描述使用者偏好;推薦演算法模組負責即時從項目集合中篩選出使用者偏好項目進行推薦,此為推薦系統中最為核心的部分。

主要的推薦演算法可以分為協同過濾(Collaborative Filtering)、基於內容(Content-based)與混合法(Hybrid Approaches),接下來我將一一介紹,並進一步說明如何在協同過濾法中結合情境感知 ( Context-aware ) 。

協同過濾法(Collaborative Filtering Approaches)

協同過濾法是目前最成功的推薦演算法之一,通常的做法是搜尋一大群人,從中找到與我們品味相近的一小群人。演算法會針對這些人偏好的其他內容進行計算,產生一個有序的推薦清單。

Goldberg設計Tapestry是最早應用協同過濾法的系統,該系統允許人們根據自己對文件感興趣的程度添加標記,並利用此資訊為他人過濾文件。Konstan等人設計的GroupLens則是應用在新聞篩選上,幫助讀者過濾其偏好的新聞內容,使用者看過內容後給一個評分,系統會將分數記錄下來供日後參考,不同於Tapestry僅在同一個系統中過濾,GroupLens是跨系統的新聞過濾機制;除此之外,Tapestry不會將同項目的評分總合起來,GroupLens則會對同項目從不同使用者得到的評分加總。

協同過濾法可以分為兩類:基於記憶(Memory-based)和基於模型(Model-based)的演算法;基於記憶的演算法根據系統中所有被評分的項目進行預測;基於模型的演算法根據收集評分資料進行機器學習,得到使用者行為模型進行預測。

協同過濾法需要計算兩個使用者相似度, 常用的相似度測量法有Distance-based、Correlation-based、Cosine-based。

總結來說,協同過濾法有以下優點:具有推薦新資訊的能力,可以發現使用者潛在偏好;能夠推薦音樂、餐廳和電影等難以進行內容分析的項目。

雖然協同過濾法應用廣泛,但是也有許多問題,例如:如何對新使用者進行推薦或如何推薦新項目給使用者之冷啟動問題(Cold Start);在任何推薦系統中,已評分項目通常比需要推薦項目數量少很多,而導致精確度低落之稀疏性問題(Sparsity),面對日益增多的使用者,資料量急劇增加之可擴展性問題(Scalability)等。因此有的推薦系統採用基於項目相似度的協同過濾法,在項目數量相對穩定的系統,這種方法是很有效的。

基於內容法(Content-based Approaches)

最初基於內容法是協同過濾法的延續與發展,他不需要依賴使用者對項目的評價,而是依據使用者已經選擇的項目內容計算使用者之間的相似度,藉此推薦合適的項目;基於內容的推薦系統依賴資訊檢索與過濾,經由分析已經購買或瀏覽的內容,對使用者和項目建立配置文件(Profile),系統可以比較使用者和項目配置文件的相似度,直接向使用者推薦最相似的項目。

總結來說,基於內容法有以下優點:可以處理新使用者與新項目的冷啟動問題;不會受到評分稀疏性的限制;能夠推薦新項目和非流行項目,能夠發現隱藏的項目;可以透過配置文件列出推薦項目的特徵,深入了解為什麼推薦這些項目。

基於內容法也面臨常見的資訊檢索問題,例如:多媒體資料(圖片、音樂與影片)難以進行文本結構化,而受到了很大的限制。

混合法(Hybrid Approaches)

每一種演算法都存在著一些缺點,為了擇優汰劣,有些推薦系統結合了不同的方法,我們稱之為混合法。而目前最常見的混合推薦系統即是基於內容與協同過濾法的搭配,主要又可分為獨立系統相互結合、協同過濾系統加入基於內容法。

獨立系統相互結合是分別利用兩種以上的演算法產生推薦結果,然後將這些結果整合起來,利用預測評分的線性組合進行推薦。

而在協同過濾系統中加入基於內容法的Fab,即是使用者配置文件使用協同過濾法產生,使用者相似度則使用基於內容法,而非參考共同評分項目,這樣可以讓系統不僅能推薦擁有共同評分的使用者項目,也可以推薦與使用者配置文件相似的項目。

結合情境之協同過濾法

傳統協同過濾法可以被視為二維問題,其中一維是使用者,另外一維是項目,每個使用者與項目的交互是使用者對項目的評分,當我們加入情境到推薦問題上,它就變成了多維度問題。

傳統推薦演算法無法直接處理這類問題,然而許多研究人員試圖修改原有方法來支援情境感知;Adomavicius提出了一個相當著名的方法,其主要精神是在推薦時固定維度,也就是只考慮該情境下所有的評分,如此一來多維問題就變成了二維問題;然而這種方法會使得冷啟動問題變得更加棘手,因此Adomavicius等人還提出了一個擴展有等級屬性之情境的方法,為了增加準確度,他們還設計一種演算法將情境分段。

另外一個方法是測量不同情境的相似度去加權評分;由於使用者偏好項目會隨著情境改變,若在某些情境下使用者一致偏好此項目,Chen推論這個些情境即非常適合該項目。因此他使用Correlation-base相似度測量法去計算項目i在兩個情境xy下的相似度權重。

Chen還假設每個維度都是線性獨立的,如此一來兩個情境的相似度可以在每個維度中分別計算。