首页>参考读物>计算机科学与技术>人工智能

实用Bot开发指南:基于Node.js与Bot框架设计并构建聊天机器人
作者 : [美] 西蒙·罗兹加(Szymon Rozga) 著
译者 : 陶阳 董晓宁 吴吉庆 译
出版日期 : 2019-06-24
ISBN : 978-7-111-62921-4
定价 : 119.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 391
开本 : 16
原书名 : Practical Bot Development: Designing and Building Bots with Node.js and Microsoft Bot Framework
原出版社: Apress
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书讲述机器人设计和实现背后的基本概念。每一章都建立在前面的主题之上,并且在适当的地方显示了实现这些概念的实际工作代码。通过选择一个代码编辑器,你可以开始体验创建智能、迷人和有用的机器人。本书将教你如何在Facebook Messenger和Slack等平台上创建自己的机器人,整合扩展API,并在云中应用人工智能和机器学习算法。在本书的最后,你将会有足够的信息通过你创建的机器人来接触成千上万的新用户。

图书特色

学习使用Microsoft Bot Builder框架构建和开发聊天机器人
利用现有的Node.js技能来构建出色的聊天机器人
聊天机器人初学者的开发指南

图书前言

2016年年中,我开始了一个有趣的项目。客户希望让患有2型糖尿病的用户能够从“自动教练”(即聊天机器人)那里获得建议。这是一个诱人的想法。我有很多问题:为什么有人想要与机器人进行自然语言对话?是否有可能使机器人足够聪明以实现其目标?怎么开始创建聊天机器人?用户应该通过哪种方式与之互动?当项目结束时,我们很快意识到我们使用的技术(包括自然语言理解、微软的Bot框架和自定义机器学习模型)可以作为用户和计算系统之间广泛的自然语言应用程序的技术基础。毕竟,自然语言接口风靡一时。Alexa支持的Echo Dot刚刚发布,普通人群很快就对与数字助理沟通的想法着迷。我们也想马上抓住这个能成为该领域专家的机会。
我们尝试了许多不同的平台,如Api.ai(现在的DialogFlow)、Wit.ai和Watson Conversation,最终决定使用微软的Bot框架,因为我们觉得它是很好的商业产品。聊天机器人创业公司如雨后春笋般涌现,都承诺提供最好的机器人或机器人平台。随着该领域趋于饱和,也引起了客户的关注。突然间,我发现自己每天都会和多个客户交谈。最初,与客户交谈是指导性会话:什么是聊天机器人?它是如何工作的?它有哪些通道?它是自学的吗?它可以与实时聊天集成吗?
从2017年年中开始,与客户交谈慢慢地从培训客户转向确定所有类型用例的开发工作范围。客户开始应用该技术来解决业务问题。2017年下半年,在致力于提供多个聊天机器人实现的同时,我的一位同事将我介绍给编辑人员,他们使本书面世成为现实。我很快便决定承担这个项目,因为这是一个引人入胜的话题,是一个新的领域,有很多可能性。
我决定以我在这些主题方面指导工程师的方式来写本书。本书大致分为三个部分。首先,第1章和第2章介绍聊天机器人和机器学习(ML)主题。虽然聊天机器人可以并且经常独立于任何ML算法而存在,但事实是用户希望聊天机器人能够展示某种形式的智能,最低限度也得是自然语言理解。因此,我想在ML上设置状态并确定如何在自然语言对话中应用它。第3章深入探讨微软的语言理解智能服务(LUIS),我们利用它来为聊天机器人创建自然语言理解模型。
第二部分介绍Bot框架开发实践。第4章介绍对话设计的概念,即聊天机器人对话建模的实践。第5章指导读者创建连接到LUIS模型的Bot框架聊天机器人,并将其部署到Azure应用程序服务中。在第6章中,我们退后一步来检查Bot Builder SDK的特性和功能。在第7章中,我们将聊天机器人与OAuth实现和外部API集成在一起。第8章深入研究Slack机器人。第9章探讨通过Direct Line API将任何通道连接到聊天机器人的能力。我们将Twilio Voice与图片结合起来,创建了一个可以通过电话与之交谈的聊天机器人。
第三部分介绍一些对聊天机器人开发至关重要的其他主题。第10章通过关注一组精选的微软认知服务,为聊天机器人增加额外的智能能力。第11章探讨为聊天机器人创建自定义卡片的两种方式:自适应卡片和自定义图形渲染。第12章探索人工切换,第13章介绍聊天机器人分析,第14章通过使用亚马逊的Alexa技能工具包来创建一个简单的Alexa技能,然后使用Bot框架机器人复制相同的经验,将所获得的新知识付诸实践。
聊天机器人领域是不断发展变化的。在本书的写作过程中,Facebook收购了Wit.ai并将其重点转向自然语言理解,Google收购了Api.ai,LUIS改变了两次用户接口,Bot框架正式发布并转移到Azure,QnA Maker正式发布;在我写完所有内容后,Alexa的用户接口发生了变化,微软在Build 2018上宣布了大量新功能。幸运的是,这并没有彻底改变本书的主题。可见,本书主题相对稳定。我希望这些内容对于任何想使用微软Bot框架开发聊天机器人的人员来说都是必不可少的。
写作过程真是一言难尽,如果没有这么一小群人的支持,本书恐怕很难完成,我对他们永远感激不尽。感谢我的妻子Kim,没有她的耐心、善意、支持以及编辑上的帮助,我将无法完成本书。还要感谢Jeff Dodge在构建聊天机器人实践方面的合作,感谢Bob Familiar将我引荐给Apress团队,感谢BlueMetal让我有时间写作。非常感谢Matt、Jimmy和Andrew,以及我的父母Hanna和Krzysztof Rozga,他们为我提供了精神支持和鼓励。还要感谢Apress的编辑Natalie和Jessica在本书撰写过程中给予的支持。

Szymon Rozga
2018年6月1日
于纽约华盛顿港

上架指导

计算机\人工智能

封底文字

本书阐释了Bot的概念,揭示了使用消息传递平台处理新应用程序背后的东西。本书对于讲授关于Bot设计和实现的基本概念来说,是通俗易懂的资源。每一章都建立在前面内容基础之上,适当情况下,给出了相关概念的实际可用的程序代码。现在,你只需要“拿起”代码编辑器,就可以开始创建智能的、吸引人的、有用的机器人体验了。
本书会教你如何在各种平台(如Facebook Messenger和Slack)上创建自己的Bot,应用扩展API,以及在云上应用AI和ML算法。最后,你将了解到,通过你创建的机器人能够吸引成千上万的新用户!
如果希望通过构建自己的Bot获利,又希望Bot开发平台方便易用,那么本书对你来说是一个很好的资源。


“如果你想理解Bot开发,并深入了解相关技术背景,那么本书将是你的正确选择。本书不但注重阐述如何开发Bot,而且还通过实际的行业应用场景,告诉你为何要创建它们。”
             ——Ahmed Bahaa博士,微软地区总监和MVP
“本书对于任何想创建智能聊天机器人的朋友来说都是一本循序渐进的参考书。”
             ——Oleksandr Krakovetskyi,DevRain Solutions首席执行官,
微软地区总监和微软Al MVP
“这是你能搜到的关于构建机器人的优秀书籍。本书作者将带领你完成与开发智能机器人有关的所有工作,这些机器人行为自然,能理解你的声音、语音,甚至能识别它所看到的物体。”
             ——Venkatarangan Thirumalai,White space领导人

译者序

因为我热衷于自然语言处理方向的实践,所以在工作中,通常离不开阅读英文文献。然而,对实践者来说,阅读英文资料是件很头疼的事,但有时又不得不读原著。我常常在考虑结合个人实践经验以及研究成果来把好的外文资料翻译成中文,方便同行参考学习,这将是一件很令人欣慰的事。
而恰好有出版社找到我,机会来了。我通篇浏览了本书的英文原版,恰巧与我的团队想做且正在做的事情很类似。Bot框架是快速搭建智能服务的后端框架,它快速在各种终端上提供服务,具有三大组件:Bot Builder SDK、Bot Connector和Bot Directory。看到这些内容,我一下子觉得很熟悉。本书是一本关于聊天机器人开发的实践性很强的书籍,通过学习本书内容,读者可以很容易地基于Node.js和微软Bot框架来设计并构建聊天机器人。本书示例丰富,各种概念通俗易懂地融入了应用示例之中。
目前,微软官方网站关于Bot框架的资料有很多,而且一些开发者网站也有一些关于应用微软Bot框架开发机器人的讨论。但总的来说,还没有像本书一样系统介绍实践的,更不用说好一点、全面一点的中文资料了。所以,我便跟我们科研团队中的骨干力量商量,决定接下这项翻译任务,结合团队成员的实践经验,为广大读者呈现一本关于微软Bot框架方面的好书。
根据重点研究方向和特长,由董晓宁工程师负责前六章的翻译工作,由吴吉庆博士负责后四章的翻译工作,我除了承担中间四章的翻译工作外,还负责统稿和校对工作。董晓宁工程师在微软工作时,正好在Bot框架方面进行课题项目研究,可以说对该框架相当熟悉。吴吉庆博士也在公司从事聊天机器人的开发实践工作,不仅理论功底深厚,而且开发经验丰富。大家都对翻译工作十分认真,我们建立了微信群,遇到疑难问题时共同讨论,反复推敲,以确定最好的翻译结果。每翻译一章,他们两位就发给我审校,及时统一文风和术语,保持译文的前后一致性。在翻译过程中我们阅读了大量相关的教材和论文,学习别人的优点、常用译法以及公认的英文术语,并前后进行了四次自我校对。
在此,向翻译期间给予我们无私帮助的所有人,表示由衷的感谢,没有大家的无私帮助,本书的翻译任务是无法完成的!特别感谢彭宇行研究员对我们的翻译工作给予的支持和肯定。感谢我的妻子,在这几个月里,我所有的业余时间都用在翻译和校对上,而她却默默地承担起两个孩子的抚育责任,特别是在节假日期间,我也无暇顾及家庭。
虽然我们很努力,但由于专业水平有限,理解能力和写作功底还有差距,加上时间仓促,最终译稿难免存在理解上的偏差,译文也会有生硬之处。望读者不吝赐教,提出宝贵的意见和修改建议,以便我们能够不断改进译稿。
谢谢!

陶 阳
于2019年春

图书目录

译者序
前言
关于作者
关于技术审校人员
第1章 聊天机器人概述 1
1.1 对机器人的期望 2
1.2 什么是聊天机器人 3
1.3 为什么是现在 6
1.3.1 人工智能取得的进步 6
1.3.2 作为智能对话平台的消息应用程序 7
1.3.3 语音唤醒的智能助理 8
1.4 创建聊天机器人的动机 8
1.5 机器人的组成 10
1.5.1 机器人运行库 10
1.5.2 自然语言理解引擎 11
1.5.3 对话引擎 12
1.5.4 通道集成 14
1.6 结束语 15
第2章 聊天机器人与自然语言理解 17
2.1 自然语言处理的基本概念 18
2.2 常见的自然语言处理任务 23
2.2.1 句法分析 23
2.2.2 语义分析 23
2.2.3 语篇分析 23
2.3 机器人中常见的自然语言理解功能 24
2.4 云端自然语言理解系统 24
2.5 自然语言理解系统的商业产品 25
2.6 结束语 26
第3章 语言理解智能服务 27
3.1 意图分类 28
3.2 发布LUIS应用 34
3.3 实体抽取 37
3.3.1 Age、Dimension、Money和Temperature 40
3.3.2 DatetimeV2 41
3.3.3 Email、Phone Number和URL 46
3.3.4 Number、Percentage和Ordinal 46
3.4 实体训练 47
3.5 自定义实体 50
3.5.1 简单实体 50
3.5.2 复合实体 56
3.5.3 层次实体 61
3.5.4 列表实体 64
3.5.5 正则表达式实体 65
3.6 预建域 65
3.7 短语列表 67
3.8 主动学习 69
3.9 仪表板概览 70
3.10 LUIS应用管理与版本更新 71
3.11 拼写检查 73
3.12 导入/导出LUIS应用 74
3.13 使用LUIS Authoring API 75
3.14 解决遇到的问题 75
3.15 结束语 76
第4章 对话设计 78
4.1 常见的使用场景 78
4.1.1 面向消费者的常见使用场景 78
4.1.2 面向企业的常见使用场景 82
4.2 对话表达 83
4.3 机器人的响应 85
4.3.1 构建块 85
4.3.2 机器人的身份验证和授权 87
4.3.3 专用卡片 88
4.4 其他功能 90
4.5 对话交互设计指南 91
4.5.1 专注 91
4.5.2 不要把机器人设想为人 91
4.5.3 不要赋予机器人性别 91
4.5.4 总是提供当前最好的建议 92
4.5.5 持久的个性 92
4.5.6 使用丰富的内容 93
4.5.7 原谅 93
4.5.8 避免卡壳 93
4.5.9 不要过于主动发送消息 93
4.5.10 提供人工介入方法 93
4.5.11 从用户对话中学习 94
4.6 结束语 95
第5章 微软Bot框架概述 96
5.1 微软Bot Builder SDK基础 96
5.2 Bot框架端到端的设置 107
5.2.1 第一步:连接到Azure 107
5.2.2 第二步:在Azure中创建Bot Registration 109
5.2.3 第三步:为机器人设置安全认证 111
5.2.4 第四步:设置远程访问 112
5.2.5 第五步:连接到Facebook Messenger 113
5.2.6 第六步:将机器人部署到Azure 117
5.3 理解所做的操作 121
5.3.1 Microsoft Azure 121
5.3.2 机器人通道注册入口 121
5.3.3 认证 122
5.3.4 连接和ngrok 122
5.3.5 部署到Facebook Messenger 123
5.3.6 部署到Azure 123
5.4 Bot Builder SDK重要概念 123
5.4.1 会话和消息 124
5.4.2 瀑布和提示 127
5.4.3 对话框 130
5.4.4 调用对话框 133
5.4.5 识别器 135
5.5 创建一个简单的日历机器人 138
5.6 结束语 139
第6章 深入Bot Builder SDK 140
6.1 对话状态 140
6.2 消息 141
6.3 地址和主动消息 144
6.4 富媒体内容 146
6.5 按钮 149
6.6 卡片 152
6.7 建议动作 156
6.8 通道错误 158
6.9 通道数据 158
6.10 群组聊天 162
6.11 自定义对话框 163
6.12 动作 168
6.13 库 173
6.14 结束语 174
第7章 构建一个完整的Bot 176
7.1 关于OAuth 2.0 176
7.2 Google API的建立 177
7.3 将身份验证与Bot Builder集成 182
7.4 无缝登录流程 187
7.5 与Google Calendar API集成 195
7.6 实现Bot功能 201
7.7 结束语 205
第8章 扩展通道功能 207
8.1 Slack深度集成 207
8.2 连接Slack 210
8.3 Slack API实验 215
8.4 简单的互动消息 220
8.5 多步骤体验 227
8.6 结束语 236
第9章 创建新的通道连接器 237
9.1 Direct Line API 237
9.2 自定义Web聊天界面 239
9.3 语音机器人 250
9.4 将机器人与Twilio整合在一起 252
9.5 与SSML集成 262
9.6 最后的接触 265
9.7 结束语 268
第10章 使聊天机器人更聪明 269
10.1 拼写检查 271
10.2 情感 276
10.3 多语言支持 277
10.4 QnA Maker 282
10.5 计算机视觉 286
10.6 结束语 290
第11章 自适应卡片和自定义图形 291
11.1 自适应卡片 291
11.2 渲染自定义图形 302
11.3 结束语 319
第12章 人工切换 320
12.1 仍离不开人 320
12.2 从客服角度看聊天机器人 321
12.2.1 一直在线的聊天机器人 321
12.2.2 非全时在线的聊天机器人 321
12.2.3 面向客服代表的聊天机器人 321
12.3 典型的客户服务系统概念 322
12.4 集成方法 322
12.4.1 自己创建界面 323
12.4.2 基于平台 323
12.4.3 基于产品 324
12.5 Facebook Messenger切换示例 326
12.6 结束语 332
第13章 聊天机器人分析 333
13.1 常见数据问题 333
13.1.1 通用数据 334
13.1.2 人口统计资料 335
13.1.3 情感 335
13.1.4 用户驻留 335
13.1.5 用户会话流 336
13.2 分析平台 337
13.3 与Dashbot和Chatbase集成 340
13.4 结束语 346
第14章 学以致用:Alexa技能工具包 348
14.1 概述 348
14.2 创建一个新的技能 350
14.3 Alexa NLU和自动语音识别 352
14.4 深入研究针对Node.js的Alexa技能工具包 358
14.5 其他选择 367
14.6 连接到Bot框架 369
14.6.1 关于Bot框架和Alexa技能工具包集成的实现决策 369
14.6.2 示例整合 371
14.7 结束语 378

教学资源推荐
作者: [美]查鲁·C. 阿加沃尔(Charu C. Aggarwal) 著
作者: [美]理查德·F. 里昂(Richard F. Lyon) 著
作者: Joseph Giarratano Gary D.Riley
作者: (美)约翰 J. 克拉格, 巴里·特斯曼
参考读物推荐
作者: [美]马克·E. 芬纳(Mark E. Fenner) 著
作者: [印] 纳温·库马尔·马纳西(Navin Kumar Manaswi) 著
作者: 李天瑞 纪圣塨 易修文 等著