对话系统即将迎来新的一波应用热潮,成为改变世界的新锐力量,也是未来技术发展和企业业务的核心。设计、建设和维护对话系统将是体量非常大又非常重要的从业方向和职业技能。本书的主题Rasa系统是全球领先的开源对话系统平台,具有非常强的技术领先性和实际落地能力。Rasa有一个显著的优势就是扩展能力强:可以使用包括 OpenAI ChatGPT、谷歌 Bard、百度 ERNIE、OpenAI GPT-3、Huggingface transformers、Spacy 等在内的大型语言模型或接口的能力。
第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
温馨提示:请使用泸西县图书馆的读者帐号和密码进行登录