Rasa实战:构建开源对话机器人

0
(0)

Rasa实战:构建开源对话机器人

作者:孔晓泉/王冠

出版社:电子工业出版社

出品方:博文视点

出版年:2022-3

页数:216

定价:89

装帧:平装

ISBN:9787121429385

内容简介
······

Rasa是一款开源的对话机器人框架,能让开发者使用机器学习技术快速创建工业级的对话机器人。得益于丰富的功能、先进的机器学习能力和可以快速上手的特性,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

评论 ······

和之前读的鱼书相比,几个缺点:1、部分概念及原理讲述不够详细,寥寥数语,跳跃性太大,读者会比较困惑,没有拨开云雾见天日的感觉;2、代码贴的太多,每章最后的代码有大量重复,只列关键代码即可;3、整体体系性描述不足,对整个平台设计理念、部分设计的原因着笔较简单;4、第8章部署细节、第9章工作原理描述过于简单,能学到的东西非常有限,十分鸡肋。

Rasa已经更新到3.x,书的内容还是2.x,滞后了一些。第一章可看,会对现在的任务型对话机器人采用的框架语义有所了解,后面几章对各模块的介绍简略,可作为代码和文档的补充。

Rasa已经更新到3.x,书的内容还是2.x,滞后了一些。第一章可看,会对现在的任务型对话机器人采用的框架语义有所了解,后面几章对各模块的介绍简略,可作为代码和文档的补充。

和之前读的鱼书相比,几个缺点:1、部分概念及原理讲述不够详细,寥寥数语,跳跃性太大,读者会比较困惑,没有拨开云雾见天日的感觉;2、代码贴的太多,每章最后的代码有大量重复,只列关键代码即可;3、整体体系性描述不足,对整个平台设计理念、部分设计的原因着笔较简单;4、第8章部署细节、第9章工作原理描述过于简单,能学到的东西非常有限,十分鸡肋。

点击星号评分!

平均分 0 / 5. 投票数: 0

还没有投票!请为他投一票。

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册