# 自然語言理解 (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(回答生成(系統動作, 回答模板))
標籤: Google Assistant
[對話式AI-1] Chatbot的類型與對比(問答、對話與閒聊系統)
由於常常跟客戶和外部工程師雞同鴨講,最後發現大家對聊天機器人的定義都不一樣;你知道Chatbot可以分成三類嗎?對話式AI專欄的第一篇,就來介紹一下「各類Chatbot的用途」,並針對「開發方法」、「特點」、「關鍵評價指標」及「應用場景」等進行深入對比,讓你一次搞懂Chatbot,不再一知半解。
類別 | 問答系統 | 任務導向對話系統 | 閒聊系統 |
英文 | Question Answering system | Task-Oriented Dialogue system | Chit-Chat Dialogue system |
功能 | 回答使用者問題 | 代替使用者完成任務 | 陪伴使用者閒聊 |
領域 | 特定領域 | 特定領域 | 開放領域 |
方法 | 基於Web檢索、基於知識庫、基於社群 | 模組化(基於規則、資料驅動)、端對端(資料驅動) | 基於檢索、基於生成 |
特點 | 單輪對話,著重問句分析(識別資訊詞) | 多輪對話,著重對話管理 | 多輪對話,著重個性化及情感分析 |
關鍵指標 | 召回率(Recall)、精確率(Precision)、F-Measure | 任務完成率、對話耗時、對話輪數、機器模擬使用者評分 | 詞重疊率、詞向量距離、機器模擬使用者評分 |
應用場景 | FAQ、教育 | 助理、訂票 | 閒聊、陪伴 |
知名案例 | IBM Watson | Siri、Google Assistant | 微軟小冰、SimSimi |
實作方法 | 基於知識庫的問答系統 | 模組化的任務導向對話系統 | 應用搜尋引擎檢索,或訓練Seq2seq模型生成 |