订阅业界RSS CSDN首页> 业界

面向开发人员的聊天机器人指南

发表于2019-01-28 18:13| 来源IBM| 作者Michael Yuan

摘要: Watson Conversation 现已更名为 Watson Assistant。尽管本教程中的一些描述会将该服务说明为 Watson Conversation,但具体的步骤和流程并不会受到影响。

 Watson Conversation 现已更名为 Watson Assistant。尽管本教程中的一些描述会将该服务说明为 Watson Conversation,但具体的步骤和流程并不会受到影响。

第一个聊天机器人 ELIZA 于 50 年前在麻省理工学院诞生。它能够模拟罗杰斯学派的精神治疗医师,不过仅能够不断重复人类用户提出的问题;因此,它非常不完善。在接下来的数十年里,聊天机器人的研究主要集中在学术领域。但在近几年,基于智能手机的聊天机器人开始在业内风行起来,一些高端的产品也陆续进入市场,比如 Apple Siri、Amazon Echo 以及中国的微信。

IBM Cloud 可帮助您将高性能的基础架构与广泛的 Watson™ 及机器学习 API(包括 Watson Assistant)融合到一起。开始行动,就在此刻

2016 年,聊天机器人是技术领域最热门的趋势之一。IBM 推出了 Watson Assistant,旨在帮助用户快速构建聊天机器人。此外,Facebook Messenger 和 Skype 等消息传递平台也推出了支持聊天机器人应用程序的开发程序。与此同时,Slack 和 Telegram 等小型消息传递平台也推出了“机器人商店”, 以及吸引开发人员的投资基金。Google 则直接在基于 Google 的人工智能 (AI) 与大数据技术的一款聊天机器人应用 (Allo) 上进行了巨大投资。我觉得,对于开发人员而言,现在正是在技术领域的“下一波大事件”浪潮中实现飞跃的最佳时机。

市场推动力的共同作用

聊天机器人的兴起是后应用移动时代用户行为的变化及关键支持技术不断成熟的直接结果。

  • 经过近十年的爆炸式增长,移动应用几乎已经停止了增长。正如《华尔街日报》在一篇名为“应用之后是什么?”的文章中所说,智能手机用户在手机上安装的应用数量及每天打开的用户数量已经达到了极限。
  • 用户只会在特定的几个应用上花费更多的时间。毫无疑问,社交应用及消息传递应用是这方面的大赢家。用户一般都不会退出他们的消息传递应用,其实只是为了浏览一些小信息片段,比如查看天气、股价或查找参观或地图等。
  • 年轻一代都是伴随计算机时代成长起来的,比之前几代的用户更了解计算机。因此,年轻一代的用户更能接受使用命令在计算机上进行文本消息传递与沟通,相比速度较慢的 GUI,超级用户长期以来更倾向于命令这种方式。
  • 对于消费者,尤其是富有的消费者而言,他们会将驾驶、购物、清洁、食品配送、送信等各种“杂物事”外包,一方面推动了“零工经济”的发展,另一方面也对客户服务提出了更多的要求。
  • 近几年,在通过自然语言理解用户需求方面,AI 技术已经实现了长足的发展。
  • API 经济的发展也达到了一定的成熟度:可通过计算机访问许多有用的服务来完成真实世界的任务。

简言之,聊天机器人一般都用于人类用户偏好的环境中(如消息传递应用),通过自然语言与用户交谈,理解用户的需求,并通过大型的互联服务网络完成人类用户的命令。

机器人平台

下面让我们一起来了解一下一些可用于构建机器人的消息传递平台。

Facebook Messenger 是目前最流行的消息传递平台之一,每个月的活跃用户数量多达 10 亿。在 Facebook 面向开发人员推出机器人平台之后的数月内,超过 23,000 名开发人员在该平台上构建了他们的机器人。到目前为止,该平台上的开发人员已经推出了超过 18,000 款机器人。Facebook Messenger 的机器人与 Facebook 的页面高度关联到一起,这在众多产品中是独一无二的。

Kik 是一款非常流行的消息传递应用,每个月的活跃用户数量多达 2 亿。Kik 的一个关键特色在于其匿名性,不过由于该平台的用户群中有大量的青少年用户,因此引起了很大争议。2016 年 4 月,Kik 推出了一个机器人商店,用于推销其平台上的机器人。

Telegram 是一款相对较新的消息传递应用。该应用于 2013 年发布,目前每个月的活跃用户数量为 1 亿。Telegram 的一个关键特色在于它的高级安全与加密功能。从 2015 年 6 月起,Telegram 开始支持机器人。与 Fackbook Messenger 类似,该应用的机器人会显示丰富的 UI 元素,比如按钮、格式化卡片等。

Skype 是一款消息传递应用,每个月的活跃用户数量多达 3 亿。除了文本消息传递功能之外,Skype 的主要传统功能还包括语音通话和视频通话。

Twitter 是一款大众化的消息传递平台,每个月的活跃用户数量几乎达到 3 亿。作为“非人类”用户,机器人一直都是 Twitter 的一部分。借助 Twitter 的 API,机器人可以关注人类用户并推送推特文章。

微信是中国市场上最主流移动消息传递平台,每个月的活跃用户数量多达 7 亿。微信是聊天机器人领域的先行者,是一款非常成功的机器人平台。在中国,很多企业都是先设立微信机器人,然后在之后很久才会推出网站。

SMS 和电子邮件属于传统的消息传递平台,用户覆盖面最广。尽管如此,近几年使用 Facebook Messenger 等移动应用发送的消息数量已经远远超过了通过 SMS 发送的消息量。您可以使用 Twilio 等电信 API 构建 SMS 机器人,或者使用互联网的开放性电子邮件协议或使用 lonelybots 等专业级 API 提供商的产品构建电子邮件机器人。该电子邮件平台拥有许多非常有用的机器人,比如智能型的计划助手机器人 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 服务,现代化聊天机器人可以脱离“电话树”的局限,进而成为人类用户的合作伙伴。与自然语言相关的 AI 服务主要有四种。

  • 基于规则的范例识别:此类 AI 服务的示例包括:日期、电子邮件、电话号码、数量、触发词等。这些规则一般都是作为应用中的常规表达式进行实施。此类规则的优势在于它们非常精确,您可以通过增减规则来应对新情况,而且可以明确地解决缺陷。
  • 自然语言分类器:这种 AI 服务主要用于检测和分类用户命令的意图。举例来说,当用户提出“今天天气热吗?”这种问题时,AI 机器人应能够理解该问题的实质,即用户希望了解今天的气温。这种分类服务的构建方式是通过应用领域中大量的实际语音言辞来训练算法。Watson Natural Language Classifier 就属于这种 AI 服务,它是由 IBM 推出的、可用于模型训练的一种 Web 服务。在完成训练后,您可以使用该 Web 服务提交新语句,之后该服务会返回每个语句的分类结果及置信水平。
  • 基于规则的对话管理器:该服务以用户的意图及意图相关数据(即实体,比如位置和时间等)为基础,能够运用规则并生成脚本化的响应结果。这种 AI 服务背后所依据的是大多数聊天机器人的对话都是类似的这一理念。因此,机器人可以在脚本中捕获对话,而无需开发人员采用大量的 IF-THEN 语句对状态机进行编程。
  • 语音识别:尽管目前的许多高端智能手机都在文本输入中内置了语音识别功能,但对于许多价格相对低廉的移动设备或 PC 设备而言,第三方语音识别服务仍旧有着举足轻重的作用。此外,在一些用例中,可能需要存储用户的语言,以便进行后续分析(比如在客户服务领域中,监管人员可能会希望审查用户的情绪和语调),而在这些用例中,第三方语音识别服务也尤为重要。IBM Watson 可提供七种国际语言的文本转语音服务和语音转文本服务。

注:IBM Watson Developer Cloud 中全面涵盖了各种随时可用的 AI 与 NLP 服务,可供您在聊天机器人开发和许多其他应用中使用。举例来说,Watson Assistant 中就融合了 NLP 意图分类、实体检测及脚本化对话管理等多项功能。

 

 

总结

本文介绍了各种聊天机器人开发平台、开发人员框架及 AI 服务。在初学聊天机器人开发时,我建议大家首先从一款主流的消息传递平台着手,然后从 GitHub 中下载轻量级框架源码,试着开发自己的机器人。

如果您想要进一步了解如何使用 Watson Natural Language Understanding 提供的扩展实体对聊天机器人进行扩展,使其能够返回天气信息,请参阅 Build your chatbot with Watson Assistant(使用 Watson Assistant 构建您的聊天机器人) 一文。