课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,人工智能机器人成为了当下火热的话题,今天我们就一起来了解一下,都有哪些工具和平台是可以实现机器人开发的,下面就开始今天的主要内容吧。
我们每天都会听到关于有能力涉及旅游、社交、法律、支持、销售等领域的新型机器人推出的新闻。根据我最后一次查阅的数据,单单Facebook Messenger就拥有超过11000个机器人,然而到我写这篇文章的时候,估计又已经增加了几千台。第一代的机器人由于它们只能根据对话中的关键字来分析有限的一些问题,因此显得十分的愚笨。但是随着像#, #, #, Amazon Lex, IBM Watson等机器学习服务和NLP自然语言处理(Natural Language Processing)的商品化,促进了像donotpay 和 chatShopper这样的智能机器人的发展 。
我不知道机器人这个话题只是炒作还是真正的付之现实,但我可以肯定地说,构建一个机器人的过程一定是十分有趣并且具有挑战性的。在这篇文章中,我将向您介绍一些构建智能聊天机器人时所需要的工具。
文章的标题已经清楚地表明,我们将使用 Botkit 和 Rasa (NLU)来构建我们的机器人。但是在介绍技术之前,我想先分享一下选择这两个平台的原因,并解释它们应该如何适应我们的用例。
机器人开发框架
Howdy,Botkit和Microsoft(MS)Bot Framework都是在这方面中非常有力的竞争者。这几个框架的共同之处在于:
它们都是开源的。
它们与当前流行的消息平台,如Slack,Facebook Messenger,Twilio等都有一定的整合。
它们都有很好的文档文件。
它们都有活跃的开发者社区。
由于合规性问题,我们选择AWS来部署我们所有的服务,我们希望机器人也一样用AWS来部署。
NLU自然语言理解(Natural Language Understanding)
# (由Google所持有)和 # (由Facebook所持有的)是两个在机器人行业内流行的NLU工具,也是我们在这个任务中首先考虑的工具。它们共同的实施方案是:
它们都被作为云服务进行托管。
它们都具有Nodejs,Python SDK和一个REST接口。
它们都有完善的文档信息。
它们都支持对话状态或对话上下文的交互理解能力,这使得建立一个对话式的平台变得更加简易。
如前所述,由于合规性的问题,我们无法使用任何一个上述的托管解决方案。取而代之的,我们通过使用一个叫做Rasa的开源的NLU来完美的代替#和#,这样一来,我们便能够在AWS上对其进行托管和管理了。
阅读至此,您可能会疑惑为什么我使用NLU这个词来描述#和#这个这两个工具,而不使用NLP自然语言处理(Natural Language Processing)这个术语来描述。
其实,NLP是指所有能够与人进行自然交互的系统。这意味着我们可以使用与真人交谈的方式来与一个系统进行交流。相反的,NLU只是NLP的一个子领域,它的任务是将未处理过的输入信号转化成一种机器能够识别理解并且能够给予反馈的数据结构,这是一项细小的分支但是却非常复杂。例如当你说出 “日期= 2017年4月20日,地点=旧金山,行动=订酒店 ”的时候,系统就可以理解。
Rasa NLU
在本节中,我将详细解释Rasa NLU,并且提供给你一些你应该熟知的在NLP中常用的术语。
意图: 将用户的诉求告知机器。
例如:提出投诉,要求退款等请求。
实体: 提取用户诉求细节的属性。
例如:与服务中断、退款等有关的投诉
置信度: 一个距离指标,该指标能够体现出NLU分析出的结果与意图列表中诉求相差多少。
以下例子能够帮助你更好的理解上述概念。
输入:“今天早上我的互联网一直无法使用。”
意图: 服务中断
实体: “服务=互联网”, “持续时间=整个上午”
置信度:0.84(可能根据个人培训方式不同而异)
NLU的职责(在本例中是Rasa)是接受一个句子或是陈述,输出一个能够被机器人使用的”意图”,“实体“和“置信度”。Rasa基本上提供了一个在各种NLP和ML库之上的高层次的API来负责”意图”的分类和“实体”的提取。这些NLP和ML库则被称为后端,是他们使得Rasa变得智能化。以下是一些通常与Rasa一起使用的后端:
MITIE: 一个包罗万象的库; 换言之,它有一个内置的用于”实体”提取的NLP库以及一个用于”意图”分类的ML库。
spaCy + sklearn: spaCy是一个只进行”实体”提取的NLP库。而sklearn是与spaCy一起使用的,用于为其添加ML功能来进行”意图”分类操作。
MITIE + sklearn: 该组合使用了两个各自领域里最好的库。该组合既拥有了MITIE中良好的”实体”识别能力又拥有sklearn中的快速和优秀的”意图”分类。
我曾使用过MITIE后端来训练Rasa。
Botkit和Rasa集成
Botkit 是由Howdy的创建者设计的开源的机器人开发框架 。它基本上提供了一套能够在Facebook Messenger,Slack,Twilio,Kik和其他流行平台上构建机器人的工具。他们还提供了一款名为Botkit Studio的用于机器人开发的IDE 。总而言之,Botkit是一个可以让我们只需编写一次就可以将其部署到多个消息平台上的工具。
Botkit同时也为用于扩展Botkit功能的媒介软件提供支持。这些媒介软件提供Botkit与数据库、CRM、NLU和统计工具的集成接口,使得该框架更加具有可扩展性。这种设计还允许我们通过为其编写媒介软件模块的方式,轻松地添加Botkit与其他工具和软件集成的能力。
在这个演示中,我集成了Slack和botkit。您可以使用此样板作为模板来为Botkit设置Slack模块。在这里我们已经扩展了Botkit-Rasa媒介软件,你可以在这里找到它们。
Botkit-Rasa有两个功能:接收和监听,这两个功能覆盖了Botkit原有的默认操作。
receive 在当Botkit收到一条消息时被调用。它将用户的消息发送给Rasa,并将”意图“ 和”实体“存储到botkit的 message 对象中。
hears 覆盖了Botkit中原有的“hears”方法——controller.hears。 默认的hears 方法使用正则表达式来搜索用户消息中的给定模式,而来自Botkit-Rasa媒介软件的”hear”方法则是通过检索”意图”来实现。
作者:Arjun Hariharan
来源:博客园
【免责声明】:本内容转载于网络,转载目的在于传递最新信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。