书籍详情
《Rasa实战:构建开源对话机器人》[38M]百度网盘|亲测有效|pdf下载
  • Rasa实战:构建开源对话机器人

  • 出版社:电子工业出版社京东自营官方旗舰店
  • 出版时间:2022-02
  • 热度:12511
  • 上架时间:2024-06-30 09:38:03
  • 价格:9.0
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

产品特色

编辑推荐

对话机器人开源框架Rasa首著,国内外大火的框架,Rasa致力于聊天机器人(bot)平台和开源NLU工具在商业领域的应用开发,客户包括瑞银银行、宝马、瑞士保险公司Helvetia,以及女性健康机器人创业公司Tia。国内用Rasa的大厂有中国电信、微软小冰、陆金所,博世汽车、一汽等。还有很多的中小型企业大量使用。

本书能帮你使用机器学习技术快速创建工业级的对话机器人。

全面解析从0开始构建、配置、训练和服务不同类型的对话机器人的整体过程,如任务型、FAQ、知识图谱聊天机器人等。


内容简介

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的研发工作,发表过数篇相关国际期刊论文,并取得相关专利。当前研究方向为人工智能在金融领域的应用。

精彩书评

本书涵盖了熟练使用Rasa构建真实应用所需的全部主题。除涵盖自然语言理解和对话管理的基础知识外,该书着重讲了如何在真实场景中构建优秀的产品。在第1章中,你会被要求思考这样一个问题:构建一个对话机器人真的是正确的选择吗?通过回答这个问题可以避免杀鸡用牛刀的窘境。本书还介绍了对话驱动开发(Conversation-Driven Development)的基本过程。不使用对话驱动开发可能会出现对话机器人虽然上线却不能很好地满足目标用户需求的问题。此外,本书还向读者传授了一些实用的技能,比如如何调试Rasa代码、如何测试,以及如何将对话机器人部署到生产环境中等等。

这本书对任何想成为Rasa开发者的人来说都是非常有用的,我相信许多现有的Rasa开发者也会从书中发现并学到新的东西。

Alan Nichol,Rasa联合创始人兼CTO

该书由浅入深地介绍了Rasa框架的系统设计和工作原理,并给出不同类型对话机器人的实现案例,具有很高的参考价值,是非常值得阅读的佳作。

饿了么前工程Vice President 王胤

本书的两位作者,均是GDE(Google Developer Experts,谷歌开发者专家)计划的成员,是使用谷歌机器学习技术的开发者中的杰出代表。

作为NLP领域一本结合理论探索与实践箴言的佳作,本书必将为对话机器人领域的从业者和学习者带来诸多裨益,同时非常高兴看到谷歌云信用额度(Google Cloud Credits)在此书的撰写过程中为作者提供了帮助。希望两位作者不断有更多的佳作面世。

谷歌开发者关系生态中国区负责人 申强

Rasa是业界难得的能提供从语言理解到回答生成整套流程的对话机器人框架。尽管其高度可扩展的组件化特性与易用性已为Rasa赢得国际声誉并成就了强大的开发者生态,但是在国内详细介绍Rasa的专业书籍仍为稀缺。本书既是一本完整的Rasa实战手册,又是一本介绍人机对话技术各个模块的非常好的教材,相信读者会在实践与理论的辉映中受益匪浅。

满帮集团首席科学家,前阿里本地生活研究院高级总监 李佩

对话机器人将成为未来重要的人机交互窗口,这得益于人工智能的飞速发展与自然语言模型层出不穷的令人惊叹的成果:OpenAI的GPT-3能撰写逻辑清晰的文章;GitHub的Co-pilot能自动续写程序片段;DeepMind的AlphaCode能自动阅读需求并撰写最终代码……如果你想构建基于人工智能的人机交互界面,就要先学会开发一个对话机器人,那么就请从这本书开始。

《Chatbot从0到1》作者,Wechaty作者 李卓桓


目录

第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

前言/序言

自然语言处理(Natural Language Processing,NLP)是人工智能领域的一个重要部分。当人工智能已经在数据建模预测和图像分类识别等场景大放异彩的时候,随着深度学习算法和计算机硬件的不断发展,拥有悠久历史的NLP渐渐展现出新的发展动力和应用落地潜力,而对话机器人是NLP集大成的应用。

对话机器人已经在互联网和传统行业中有了广泛的应用,应用范围包括自动化提升工作效率、增加客户服务智能水平和降低人工运营成本等方面。本书以中文应用为核心,向读者系统地介绍对话机器人的落地构建。

为什么写这本书

在深度学习的发展浪潮中,NLP虽然有了很多重要的进步,但是相比图像视觉识别等领域,NLP有着特殊的一面。因为图像中的猫都是一样的,中国的猫在美国也是猫,不受地区、语言、文化背景等限制,所以图像数据是通用的,算法也一致。文字则不同:全球各地的书写语言各不相同,相同书写语言国家中不同地区的口语方言也各有千秋,用英语语料训练出的NLP模型并不适用于中文,因此NLP语料不具备通用性。

加上人类的语言本身具有歧义性、隐蔽性和常识性,如指代不明、讽刺、缩略等,NLP在技术实现上相当困难,在中文方面尤其如此——一方面,中文NLP缺乏学术界质量良好的大规模中文语料库;另一方面,主流开源框架对中文NLP的支持并不友好。

据笔者所知,当前的NLP参考数据,或者完全基于传统NLP的技术架构,与当前新的技术有所脱节,或者太过理论而缺乏实践,尤其是对中文NLP任务实践的深层次积累。

因此,我们在本书借助Rasa介绍构建对话机器人这一NLP集大成的任务,从而展现中文 NLP 的核心技术的实践和应用。

关于本书作者

孔晓泉 谷歌开发者机器学习技术专家(Google Developer Expert in Machine Learning),TensorFlow Addons Codeowner,Rasa SuperHero。多年来一直在世界 500 强公司带领团队构建机器学习应用和平台。在NLP和对话机器人领域拥有丰富的理论和实践经验。

王冠 北京大学学士,香港科技大学硕士,先后于香港应用科技研究院、联想机器智能实验室及瑞士再保险数据科学团队从事数据建模、计算机图像与NLP的研发工作,发表过数篇相关国际期刊论文和专利。当前研究方向为人工智能在金融领域的应用。

本书主要内容

本书将详细地介绍Rasa的生态体系,按照从入门到内部原理,再到实战的学习路线,让第一次接触机器学习和自然语言理解的用户能够迅速了解、掌握并实际运用中文NLP的核心技术。本书由初级、中级和高级3个级别的Rasa知识组成。本书内容与开发人员水平等级对应表如下所示。

本书内容与开发人员水平等级对应表

开发人员水平等级 等级能力要求 对应本书内容

初级 熟悉Rasa各个组件的概念,熟练利用现有的常用组件构建一个单机Rasa Bot 第1章、第2章、第3章

中级 熟练利用所有内建组件构建一个满足工业标准的分布式Rasa Bot 第4章、第5章、第6章、第7章

高级 熟悉Rasa各个系统的工作原理,按照需要新增、改造或创建新的子系统和组件 第8章、第9章、第10章

如何阅读本书

建议Rasa初学者,从头开始逐步深入,并按照书中的项目逐一实践,在确认已经掌握基础概念后再继续学习。同时建议,初学者不需要等到完全读完整本书再去上手做实际的对话机器人,只要学会自己期望的学习内容就可以开始进行实战,在实战中遇到不懂的问题时,再来回顾本书或把本书当作参考手册反复查阅。

对于已经有一定经验的Rasa开发者,可以按照需求有选择地精读某些章节。有经验的Rasa开发者快速通读全书也有好处,一来可以了解最新的Rasa提供了哪些读者尚不知道的高级技术(Rasa的技术体系进化得相当快),二来可以建立完善的Rasa知识体系,以后在实战中遇到问题时,可以想起来书中提到的某个技术或方案或许可以解决这一问题。

对于非Rasa系统的对话系统开发者而言,阅读本书可以学习Rasa系统是如何设计架构,以保证系统的可扩展性的。同时Rasa对话管理系统的设计是非常值得其他对话系统设计师参考学习的,我们建议重点阅读第9章“Rasa的工作原理与扩展性”。

致谢

感谢谷歌通过提供谷歌云信用额度(GCP credit)的方式来支持我们的工作。