Rasa实战:构建开源对话机器人
书籍作者:孔晓泉 |
ISBN:9787121429385 |
书籍语言:简体中文 |
连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 |
下载次数:3712 |
创建日期:2023-01-16 |
发布日期:2023-01-16 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
内容简介
Rasa是一款开源的对话机器人框架,能让开发者使用机器学习技术快速创建工业级的对话机器人。得益于丰富的功能、先进的机器学习能力和可以快速上手的特性,Rasa框架是目前流行的开源对话机器人框架。 本书首先介绍Rasa的两个核心组件――Rasa NLU和Rasa Core的工作流程;然后详细介绍通过使用Rasa生态系统从头开始构建、配置、训练和服务不同类型的对话机器人的整体过程,如任务型、FAQ、知识图谱聊天机器人等,其中包括使用基于表单(form)的对话管理、ResponseSelector来处理闲聊和FAQ,利用知识库来回答动态查询的问题等,以及自定义Rasa框架,使用对话驱动的开发模式和工具来开发对话机器人,探索机器人能做什么,并通过交互式学习来轻松修复它所犯的任何错误;最后会介绍将Rasa系统部署到具有高性能和高可扩展性的生产环境中,从而建立一个高效和强大的聊天系统。
作者简介
孔晓泉谷歌开发者机器学习技术专家(Google Developer Expert in Machine Learning),TensorFlow Addons Codeowner,Rasa SuperHero。多年来一直在世界500强公司带领团队构建机器学习应用和平台。在NLP和对话机器人领域拥有丰富的理论和实践经验。王 冠北京大学学士,香港科技大学硕士,先后于香港应用科技研究院、联想机器智能实验室及瑞士再保险与慕尼黑再保险数据科学团队从事数据建模、计算机图像与NLP的研发工作,发表过数篇相关国际期刊论文,并取得相关专利。当前研究方向为人工智能在金融领域的应用。
目录
第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