Rasa 實戰:構建開源對話機器人

孔曉泉,王冠

買這商品的人也買了...

商品描述

Rasa是一款開源的對話機器人框架,能讓開發者使用機器學習技術快速創建工業級的對話機器人。得益於豐富的功能、先進的機器學習能力和可以快速上手的特性,Rasa框架是目前流行的開源對話機器人框架。 本書首先介紹Rasa的兩個核心組件——Rasa NLU和Rasa Core的工作流程;然後詳細介紹通過使用Rasa生態系統從頭開始構建、配置、訓練和服務不同類型的對話機器人的整體過程,如任務型、FAQ、知識圖譜聊天機器人等,其中包括使用基於表單(form)的對話管理、ResponseSelector來處理閑聊和FAQ,利用知識庫來回答動態查詢的問題等,以及自定義Rasa框架,使用對話驅動的開發模式和工具來開發對話機器人,探索機器人能做什麽,並通過交互式學習來輕松修復它所犯的任何錯誤;最後會介紹將Rasa系統部署到具有高性能和高可擴展性的生產環境中,從而建立一個高效和強大的聊天系統。

目錄大綱

第1章 人機對話基礎和Rasa簡介 1 1.1 機器學習基礎 1 1.2 自然語言處理基礎 3 1.2.1 現代自然語言處理發展 簡史 3 1.2.2 自然語言處理的基礎 任務 7 1.3 人機對話流程 7 1.3.1 確定對話機器人的應用 場景 7 1.3.2 傳統對話機器人架構 8 1.3.3 語音識別 10 1.3.4 自然語言理解 10 1.3.5 對話管理 12 1.3.6 自然語言生成 13 1.3.7 語音合成 14 1.4 Rasa 簡介 14 1.4.1 系統結構 15 1.4.2 如何安裝Rasa 16 1.4.3 Rasa 項目的基本流程 16 1.4.4 Rasa常用命令 16 1.4.5 創建示例項目 17 1.5 小結 17 第2章 Rasa NLU基礎 18 2.1 功能與結構 18 2.2 訓練數據 19 2.2.1 意圖字段 21 2.2.2 同義詞字段 22 2.2.3 查找表字段 23 2.2.4 正則表達式字段 23 2.2.5 正則表達式和查找表的 使用 24 2.3 組件 25 2.3.1 語言模型組件 26 2.3.2 分詞組件 26 2.3.3 特徵提取組件 27 2.3.4 NER組件 27 2.3.5 意圖分類組件 28 2.3.6 實體和意圖聯合提取 組件 28 2.3.7 回復選擇器 28 2.4 流水線 28 2.4.1 什麽是流水線 28 2.4.2 配置流水線 28 2.4.3 推薦的流水線配置 30 2.5 輸出格式 30 2.5.1 意圖字段 32 2.5.2 實體字段 32 2.5.3 其他可能字段 33 2.6 如何使用 Rasa NLU 34 2.6.1 訓練模型 34 2.6.2 從命令行測試 34 2.6.3 啟動服務 35 2.7 實戰:醫療機器人的NLU 模塊 36 2.7.1 功能 36 2.7.2 實現 36 2.7.3 訓練模型 38 2.7.4 運行服務 39 2.8 小結 40 第3章 Rasa Core基礎 41 3.1 功能與結構 41 3.2 領域 41 3.2.1 意圖與實體 42 3.2.2 動作 42 3.2.3 詞槽 43 3.2.4 回復 43 3.2.5 會話配置 45 3.2.6 全局性配置 45 3.3 故事 45 3.3.1 用戶消息 46 3.3.2 機器人動作與事件 46 3.3.3 輔助符號 47 3.4 動作 49 3.4.1 回復動作 49 3.4.2 表單 49 3.4.3 默認動作 49 3.4.4 自定義動作 50 3.5 詞槽 50 3.5.1 詞槽和對話行為 51 3.5.2 詞槽的類型 51 3.5.3 詞槽的映射 52 3.5.4 詞槽初始化 52 3.6 策略 53 3.6.1 策略的配置 53 3.6.2 內建的策略 53 3.6.3 策略的優先級 54 3.6.4 數據增強 54 3.7 端點 54 3.8 Rasa SDK和自定義動作 55 3.8.1 安裝 55 3.8.2 自定義動作 55 3.8.3 tracker對象 56 3.8.4 事件對象 56 3.8.5 運行自定義動作 57 3.9 Rasa支持的客戶端 57 3.10 實戰:報時機器人 59 3.10.1 功能 59 3.10.2 實現 60 3.10.3 運行動作服務器 66 3.10.4 運行Rasa服務器和 客戶端 66 3.11 小結 67 第4章 使用ResponseSelector 實現FAQ和閑聊功能 68 4.1 如何定義用戶問題 68 4.2 如何定義問題的答案 69 4.3 如何訓練Rasa 69 4.4 實戰:構建FAQ機器人 70 4.4.1 功能 70 4.4.2 實現 71 4.4.3 訓練模型 77 4.4.4 運行服務 78 4.5 小結 78 第5章 基於規則的對話管理 79 5.1 fallback 79 5.1.1 NLU fallback 79 5.1.2 策略fallback 80 5.2 意圖觸發動作 80 5.2.1 內建意圖觸發動作 80 5.2.2 自定義意圖觸發動作 81 5.3 表單 81 5.3.1 定義表單 82 5.3.2 激活表單 82 5.3.3 執行表單任務 82 5.4 實戰:天氣預報機器人 83 5.4.1 功能 83 5.4.2 實現 86 5.4.3 客戶端/服務器 97 5.4.4 運行 Rasa 服務器 97 5.4.5 運行動作服務器 97 5.4.6 運行網頁客戶端 98 5.4.7 更多可能的功能 98 5.5 小結 98 第6章 基於知識庫的問答 99 6.1 使用ActionQueryKnowledgeBase 100 6.1.1 創建知識庫 100 6.1.2 NLU 數據 102 6.1.3 自定義基於知識庫的 動作 104 6.2 工作原理 105 6.2.1 對象查詢 105 6.2.2 屬性查詢 105 6.2.3 解析指代 106 6.3 自定義 108 6.3.1 自定義 ActionQueryKnowledgeBase 108 6.3.2 自定義 InMemoryKnowledgeBase 108 6.3.3 創建自定義知識庫 110 6.4 實戰:基於知識庫的音樂百科 機器人 110 6.4.1 功能 110 6.4.2 實現 111 6.4.3 客戶端/服務器 122 6.4.4 運行 Rasa 服務器 122 6.4.5 運行動作服務器 122 6.4.6 運行網頁客戶端 122 6.4.7 使用Neo4j 123 6.5 小結 134 第7章 實體角色和分組 135 7.1 實體角色 135 7.2 實體分組 136 7.3 組件支持情況 136 7.4 實戰:訂票機器人 136 7.4.1 功能 136 7.4.2 實現 139 7.4.3 客戶端/服務器 147 7.4.4 運行 Rasa 服務器 147 7.4.5 運行動作服務器 147 7.4.6 運行網頁客戶端 148 7.5 小結 148 第8章 測試和生產環境部署 149 8.1 如何測試機器人的表現 149 8.1.1 對NLU和故事數據 進行校驗 149 8.1.2 編寫測試用的故事 149 8.1.3 評估NLU模型 151 8.1.4 評估對話管理模型 153 8.2 在生產環境中部署機器人 153 8.2.1 部署時間 153 8.2.2 選擇模型存儲方式 153 8.2.3 選擇tracker store 154 8.2.4 選擇lock store 156 8.2.5 單機高並發設置 157 8.3 實戰:單機部署高性能Rasa 服務 157 8.3.1 架設redis服務器 157 8.3.2 使用redis作為 tracker store 157 8.3.3 使用redis作為 lock store 158 8.3.4 單機高並發設置 158 8.3.5 性能測試 158 8.4 小結 159 第9章 Rasa的工作原理與 擴展性 160 9.1 Rasa的工作原理 160 9.1.1 訓練階段 161 9.1.2 推理階段 162 9.2 Rasa的擴展性 163 9.2.1 如何使用自定義NLU 組件和自定義策略 163 9.2.2 如何自定義一個NLU 組件或策略 164 9.2.3 自定義詞槽類型 165 9.2.4 其他功能的擴展性 166 9.3 實戰:實現自定義分詞器 166 9.3.1 分詞器MicroTokenizer的 簡介 166 9.3.2 代碼詳解 167 9.3.3 使用自定義分詞器 176 9.4 小結 177 第10章 Rasa技巧與生態 178 10.1 如何調試Rasa 178 10.1.1 預測結果不正確 178 10.1.2 代碼出錯 181 10.2 如何閱讀Rasa源代碼 186 10.2.1 閱讀源代碼前 186 10.2.2 閱讀源代碼時 188 10.2.3 閱讀源代碼後 188 10.3 對話驅動開發和Rasa X 189 10.3.1 對話驅動開發 189 10.3.2 Rasa X 190 10.4 運行交互式學習 193 10.4.1 啟動交互式學習 193 10.4.2 進行交互式學習 193 10.4.3 保存交互式學習的 數據 196 10.4.4 對話過程可視化 196 10.5 社區生態 197 10.5.1 數據生成工具 Chatito 197 10.5.2 數據生成工具 Chatette 198 10.5.3 數據標註工具 Doccano 199 10.5.4 Rasa Chinese軟件包 200 10.6 小結 201 附錄A 中英文術語翻譯對照表 202