聊天机器人开发入门指南

2017-02-09 http://www.ibm.com
分享到:

第一个聊天机器人 ELIZA 是 50 年前在麻省理工学院开发的。它模拟了一位 Rogerian 心理治疗师,将人类用户说的话重复说给用户;效果不是很好。在随后的几十年中,对聊天机器人感兴趣的主要是学术界。但在最近几年,基于智能电话的聊天机器人在业界引起了广泛的关注,出现了 Apple Siri、Amazon Echo 和中国的微信等高调的产品。
2016 年,聊天机器人是 最热门的技术发展趋势之一。最大的消息平台(比如 Facebook Messenger 和 Skype)宣布启动开发人员计划来支持聊天机器人应用。与此同时,较小的消息平台(比如 Slack 和 Telegram)启动了 “机器人商店” 和投资基金来吸引开发人员。Google 将赌注直接压在了受其人工智能 (AI) 和大数据技术支持的聊天机器人应用程序 (Allo) 上。作为开发人员,现在是赶上 “下一种热门技术” 的重要发展浪潮的最佳时机。
 
市场力量的聚合
 
聊天机器人的兴起,是后移动应用时代的用户行为发生变化和关键支持技术日趋成熟的直接结果。
 
  • 经过近 10 年的爆炸式增长后,移动应用程序已几乎 停止增长。而且正如华尔街日报 在 “应用之后还会出现什么” 中所说,智能电话用户在他们每天想要安装和打开的应用程序数量上已达到极限。
  • 用户将越来越多的时间花在少数几个应用程序上。而社交和 消息应用程序成为了大赢家。用户不喜欢仅为查看一小段信息(例如检查天气、股票价格或查找饭店或地图)而退出其消息应用程序。
  • 年轻用户是随计算机一起成长起来的,比老用户更精通计算机技术。因此,年轻用户更习惯使用命令发送文本消息和与计算机通信,超级用户一直喜欢命令胜于更慢的 GUI。
  • 消费者(尤其是富裕的消费者)正在外包他们的 “杂务”,比如驾驶、购物、清洁、送餐和跑腿,这催生了 “零工经济” 和对更多客户服务的需求。
 
  • 在理解自然语言中的用户愿望方面,AI 在过去 20 年得到了很大改善。
  • API 经济已成熟到可从计算机访问许多有用的服务来完成实际任务的程度。
简言之,聊天机器人被用在人类用户最喜欢的环境(消息应用程序)中,使用自然语言与用户对话,理解用户的愿望,并通过庞大的互联服务网络执行人类的命令。
 
机器人平台
 
现在让我们看看一些可用来构建机器人的消息平台。
 
Facebook Messenger 是最流行的消息平台之一,每月拥有 10 亿多活跃用户。在 Facebook 向开发人员开放其机器人平台几个月内,已有 23,000 多名开发人员在构建机器人。目前为止,他们已发布了 18,000 多个机器人。Facebook Messenger 机器人与 Facebook 页面紧密相关,这在企业中非常普遍。
 
Kik Messenger 是一个流行的消息应用程序,每月拥有 2 亿活跃用户。Kik 的一个关键特性是匿名性,考虑到该平台上大量的青少年用户,该特性也存在争议。Kik 于 2016 年 4 月启动了一个机器人商店,在其平台上推广机器人。
 
Telegram 是一个相对较新的消息应用程序。它于 2013 年启动,现在每月拥有 1 亿活跃用户。Telegram 的一个关键差异化优势是它的高级安全和加密特性。Telegram 自 2015 年 6 月开始支持机器人。类似于 Facebook Messenger,它的机器人显示了丰富的 UI 元素,比如按钮和格式化卡片。
 
Skype 是一个每月拥有 3 亿多活跃用户的消息平台。除了文本消息,Skype 的传统关注点是语音和视频通话。
 
Twitter 是一个每月拥有约 3 亿活跃用户的公共消息平台。机器人始终被 Twitter 视为 “非人类” 用户。通过使用 Twitter API,机器人可以关注人类用户并发送推文。
 
微信是中国具有统治地位的移动消息平台,每月拥有 7 亿多活跃用户。微信是使用聊天机器人的先驱,拥有一个大获成功的机器人平台。在中国,企业通常在建立网站很久以前就已经拥有了微信机器人。
 
SMS 和电子邮件是传统的消息平台,拥有最大的用户群。尽管如此,最近几年使用移动应用程序(比如 Facebook Messenger)发送的消息数量远远超过 SMS。可以使用远程通信 API(比如 Twilio)来构建 SMS 机器人,可在互联网的开放电子邮件协议上或使用专业 API 提供程序(比如 lonelybots)构建电子邮件机器人。电子邮件平台已拥有实用的机器人,例如用作智慧日程安排助理的 x.ai 机器人。
 
Slack 是一个适合工作相关团队的群组消息平台。截至 2016 年 2 月,它每月拥有 230 万活跃用户,而且这一数字正在快速增长。Slack 是当前的聊天机器人复兴浪潮中的先驱之一。Slack 提供了业界第一个 “机器人商店”,使团队能更轻松地发现和安装机器人。不出所料,大部分 Slack 机器人都与工作和生产力有关。
 
除了移动消息应用程序,还存在无数的消息服务提供商。移动应用程序集成它们的服务来提供应用内消息功能,应用程序用户可使用这些功能相互传递消息。因为这些消息服务是 API 驱动的,所以可以开发机器人来直接与这些 API 交互和与应用程序用户聊天。这些应用内消息库和 SDK 的示例包括 EaseMob、Layer、Tiger Connect 等。
 
机器人框架
 
作为聊天机器人开发人员,同时针对如此多的消息 SDK 进行开发可能让人感觉难以应对。机器人框架是一种软件框架,它们抽象化了构建机器人的过程中涉及的许多手工工作。市面上有许多这样的产品。
 
但是,尽管许多机器人框架吹嘘 “只需编写一次即可部署到任何地方”,但您更可能需要为每个目标消息平台创建一个独立的聊天机器人。这是因为一体适用的解决方案必须遵守它们支持的所有机器人平台的最低共同要求。这通常会导致用户体验欠佳,尤其是在原生机器人平台本身正在快速演变和不断添加新特性的生态系统发展初期。
 
此外,框架解决方案不适合初学者学习聊天机器人开发。它们尝试自动化太多工作,对初学者掩盖了基础机制。它们将您限制于它们支持的 UI 特性,但它们的创新至少落后原生消息平台一步。最后,现有的框架主要基于 node.js,而绝大部分服务器端开发人员使用的是更成熟的编程环境,比如 Java™ 编程和 PHP。
 
要有效地学习,我建议采用 “开源轻量型框架” 方法。该方法为所有机器人建立一个简单的基于请求和响应的编程约定。目的在于为每个机器人平台提供 “类似的” 代码,而不是在所有地方运行完全相同的代码。这样,您就能灵活地添加特定于每个机器人平台的特性,而框架仍然抽象化通用的样板代码,比如安全、日志、分析、缓存和 API 集成。您可以从 GitHub 下载和学习我自己的 Java 语言和 PHP 版本的轻量型框架。
 
AI 服务
 
正如本教程前面所讨论的,自然语言 AI 服务的进步是聊天机器人的一个关键促进因素。AI 使现代聊天机器人能跳出 “电话树” 的陷阱,变成人类用户的伙伴。有 4 种与自然语言相关的重要 AI 服务。
 
基于规则的模式识别:此类型的示例包括日期、电子邮件、电话号码、数量和触发文字。这些规则通常在应用程序中实现为正则表达式。这些规则的优势是,它们很精确,而且您可以添加和抽象化规则来确定无疑地处理新情形和解决错误。
 
自然语言分类器:此 AI 服务类型用于检测和分类用户命令的意图。例如,当用户询问 “今天热吗?”,AI 应知道用户询问的是今天的温度。这个分类器的构造方式是,使用一个应用领域的许多实际的语音表达来训练算法。此类型的一个示例是 Watson Natural Language Classifier,这是 IBM 提供的一个可用于训练模型的 Web 服务。完成训练之后,您可以使用 Web 服务提交新句子,该服务将返回各种分类和每种分类的置信度。
 
基于规则的对话管理器:基于用户的意图和与该意图相关的数据(称为 “实体”),比如位置和时间,该服务可应用规则和生成脚本化响应。此服务类型背后的理念是,大部分聊天机器人对话都非常简单。因此,可在脚本中捕获它们,开发人员不需要编写一个包含大量 IF-THEN 语句的状态机。
 
语音识别:尽管如今许多高端智能电话的文本输入方法中都内置了语音识别功能,但第三方语音识别功能对许多比较便宜的移动或 PC 设备仍然非常重要。此外,在某些情况下,存储用户的语音能够供以后分析这一点很重要(比如在客户服务中,当主管想检查用户的情绪和语气时)。IBM Watson 提供了支持 7 种国际语言的 text-to-speech 服务和 speech-to-text 服务。
 
备注:IBM Watson Developer Cloud 拥有随时可用的 AI 和 NLP 服务的全面集合,用于聊天机器人开发和其他许多应用。例如,Watson Conversation Service 组合了 NLP 意图分类、实体检测和脚本化对话管理。
 
结束语
 
本教程介绍了聊天机器人开发平台、开发人员框架和 AI 服务。要开始进行聊天机器人开发,我推荐首先使用一个流行的消息平台,然后从 GitHub 下载轻量型框架源代码来亲自实践。

×
官方微信