案例分享:用SAP Conversational AI构建聊天机器人

编译作者: 陈峻 2019-03-22 09:00:00

【51CTO.com快译】如果您是一名初次接触构建聊天智能机器人(Chatbot)的新手,那么在面对各种自然语言理解、对话流和消息传输平台等概念时,一定会倍感压力。在本文中,我将手把手地引导您在SAP Conversational AI上构建出***个聊天机器人,并达到如下的目标:

  • 让Bot理解人类的语言。
  • 由强人工智能所驱动的复杂对话流。
  • 将该Bot部署到外部渠道上(如:Facebook Messenger、Twitter等)。

下面让我们从一个简单的Bot开始吧。下图是它与人类对话的界面:

案例分享:用SAP Conversational AI构建聊天机器人

在此,该Bot需要达到的智能程度为:

  • 理解各种问候和告别语。
  • 理解用户要求讲个笑话,能够从列表中随机挑选一个笑话,并回复。
  • 理解至少两种反馈(大笑或咧嘴笑)的意义,并能以有趣的GIF图片或深深的道歉作出回复。
  • 在Facebook Messenger上部署该Bot。

前期要求

1. 在SAP Conversational AI上创建一个免费帐户。

2. 在登录之后,单击“Start with a template”按钮,或直接单击右边标签处的“+ NEW BOT”按钮。

3. 您可以为Bot选择一项或多项预定义的技能。这将有助于您更快地上手。此处,我们只选择“Greetings”,不过稍后您还可以添加其他技能。

4. 将它命名为“joke-Bot”。

5. 将其描述为“我的***个有趣的joke-Bot”。

6. 您可以设置6个主题来改进对Bot的培训。同时,您可以将主题的关键字定义为:“时尚”、“游戏”或“工作”。

7. 根据数据的使用情况,选择适当的数据策略选项。注意:考虑到可能会被问及用户的个人健康信息,因此我们没有勾选“健康”类Bot。

8. 将默认语言设为英语。

9. 由于暂时没有隐私信息,您可以将其设置为公开状态,稍后再酌情调整。

至此,我们已经为构建Bot做好了前期准备工作。

Bot的构建阶段

常规情况下,Bot会在平台上经历如下5个阶段:

1. 训练 - 教会Bot需要理解的东西。

2. 构建 - 使用Bot Builder工具来创建对话流。

3. 代码 - 使用外部API或数据库来连接Bot。

4. 连接 - 将Bot发送到一个或多个消息传输平台上。

5. 监控 – 持续训练Bot,使之更智能、更能灵活地应对各种情况。

由于我们暂时不需要任何外部的信息,因此我们在此跳过“代码”部分。当然,如果您想进一步了解Bot与代码的连接,请参阅:https://cai.tools.sap/blog/nodejs-chatBot-movie-Bot/ 。

第1步:训练Bot理解人类语言

作为Bot,它需要能够理解自己收集到的信息,并区分不同的意图(intent)。此处,意图是指不同表达方式的句子,所具有相同的含义。因此,当用户向Bot发送一些文本信息时,我们的算法会将它们与意图中的短语进行比较,检查并匹配出最接近的一个,进而判断出文本消息的意图是什么。

例如:

  • 您是机器人吗?
  • 您答复得这么快,我相信您一定是某种机器人吧。
  • 我是在与人类交谈吗?

可见,上述三句的表达方式不同,但都是在问同一个问题:您是机器人吗?因此,如果您的Bot能够识别该问题,那么就可以准备好一个明智的回答,例如“我是机器人,我骄傲。”

“叉”入意图(Fork Intents)

在与用户交流时,所有类型的Bot都能够识别诸如:“问候”、“同意”、“不同意”等基本内容。因此,如果您在前期给Bot选择设置了预定义的“Greetings”技能,那么它已经具备了告别和问候,这两种意图的判断能力。

而且,由于SAP Conversational AI是协作式的,因此您无需每次都重新创建新的意图。您完全可以将其他人已经创建的意图“叉”入(克隆)进来。例如,当获悉用户想要听笑话时,我们就可以在社区中检索是否有已经创建好的此类意图。

如上图所示,您可以在搜索栏中输入“joke”,以获取结果列表。如果想查看其具体内容,您也可以直接单击不同意图的名称。

创建一个新的意图

如果您想要自定义一个新的意图,那么就需要从头开始构建它。在此,我们希望Bot能够理解到对方在听到笑话时笑了。因此,您可以单击搜索字段右侧的“+ Create”,然后为您的意图起一个名称。

重复上述过程,您可以创建对方觉得不可笑的意图:

第2步:添加表达式

既然创建了意图,我们就需要用各种表达式表示它们。我们可以单击不同的意图,然后添加不同的表达式语句。我的建议是:请为单个意图添加至少30个表达式,理想情况为50个。

下面是一些表达式的例子:

大笑

  • 哈哈哈,这很有趣。
  • ROFL(笑得在地上打滚,rolling on the floor laughing)您很棒!
  • 朋友,真有你的!这是一个超赞的笑话。
  • 我很久没有如此大笑了。

不可笑

  • 看来,您缺乏幽默细胞。
  • 这个既糟糕又令人反感。
  • 这到底表达了什么?
  • 这个笑话一点都不好笑,换一个试试。

提示:您可以通过单击界面中蓝色的“You have X expressions suggested to enrich your intent”,来查看更多可添加的表达式示例。这样能够加快对Bot的训练。

第3步:测试Bot

在控制台上,单击右上角的TEST气泡图标。键入一个您从没训练过的句子,例如:“您能给我讲个笑话吗?”

根据您输入的内容,Bot会检索出意图、并做出答复。如果现有算法没能检测到相应的意图、或是检测到了无效的意图,那么您就需要添加新的、或是修改现有的表达,来进一步训练它。这似乎有些繁琐,但这是确保Bot能够正确识别用户语句的***方式。

在Bot的意图检测效果达标之后,我们就可以进入下一阶段:构建Bot的对话流。

第4步:构建和管理对话流

现在,让我们在Bot Builder中找到Build选项卡,它能够帮助我们根据Bot的技能来构建对话流。

什么是技能?

每一个技能都代表Bot“知道”如何做的某件事,它们之间通过相互排列组合,会变得逐渐复杂起来。

在创建一个新的Bot时,您已经为它选择了预定义的技能。当然为了避免“重复制造轮子”,您也可以在平台上查找并“叉”入其他人创建好的技能。

例如:如果您在创建时选择了预定义技能“Greetings”,那么它就会出现在您的界面上。

单击其名称,可获取如下详细的信息:

通常,一项技能会包含四个部分:

  • 自述文件:对该技能进行描述。
  • 触发器:定义在收到用户何种消息后,应激活此技能。
  • 需求:描述此技能需要进一步收集哪些信息,以及收集这些信息的条件。
  • 动作:在需求满足的条件下,应采取何种动作?

通过浏览该问候技能,您会发现其结构为:

  • 如果问候或告别的意图匹配成功,则触发。
  • 由于不需要收集更多的信息,因此没有其他需求。这意味着它会在被触发后,直接采取动作。
  • 在此,它有两个可能的动作:如果匹配的意图是问候语,它会从列表中随机选取欢迎的消息发送出去;如果意图是告别,则从另一个列表中选取并发送消息。

第5步:建立自己的技能

让我们回到Build选项卡,单击左侧的“+ Create”技能,以建立自己的技能。

在此有三种不同类型的技能:商业(Business)、浮动(Floating)和后备(Fallback)。

  • 商业与浮动并无结构上的差异。它们足以涵括常用的大多数技能。
  • 在接到用户的消息但无法触发任何技能时,后备技能就派上用场了。多数情况下,您只能使用其中一种类型。当然您也可以通过提示用户有关Bot能做什么,以建议他们改写问题。

在此,我们的技能属于浮动类型。我将其命名为“tell-me-a-joke”。

通过单击新创建的技能,以及“Triggers”选项卡,我们可以针对匹配上的意图,激活不同的技能。

如上图所示,由于默认是AND条件,而我们却希望在任何一个意图被匹配时,都激活我们的技能,因此不要忘记将条件更改为OR(单击其中的蓝色按钮“AND”)。

由于对此案例并无任何额外的需求,因此我们不做额外的设置。当然您也可以通过询问更多信息来改进Bot,例如:喜欢什么类型的笑话,或是为成人笑话添加年龄要求等。

下面,我们通过点击“动作”选项卡,来创建***个消息组。

单击“ADD NEW MESSAGE GROUP”,以及“ADD CONDITION”,来添加消息触​​发的条件,例如:If @ask-joke is-present。此处“@”代表意图的类型。我们稍后会介绍到。

然后,您可以选择动作为“SEND MESSAGE”,以及文本的格式。

***,您就可以输入自己喜欢的笑话了。

当然,您也可以在两条消息之间设置5秒钟的延迟,以方便用户花时间读完Bot回复的那些长消息。

第6步:给Bot提供不同可能的答案

单击消息上的“+”,您可将新的消息添加到随机列表之中。这样您就不会总是发送一些千篇一律的笑话了。如果再次单击“SEND MESSAGE”的下方,您还可以同时发送多条消息。

下面我们来介绍另外两个意图。

请单击“ADD A NEW MESSAGE GROUP”,并将条件设置为:If @laughs is-present。

如果我想在这种情况下发送各种GIF图片,那么就可以点击“SEND MESSAGE”和“Image format”。

同理,我也可以对第三种意图进行此类操作。

第7步:与Bot聊天

接下来,我们就需要让Bot在真实情况下去与人类用户聊天了。当然,我建议您在构建的过程中,就尽可能多地与Bot聊天,以尽早识别出那些逻辑错误。

单击右下角的蓝色按钮“CHAT WITH YOUR BOT”,试着发送一些消息。同时,您也可以使用“Clear”来清屏。

第8步:将Bot连接到消息传输平台

一切准备就绪后,我们就可以将Bot部署到公共消息传输平台上了。

让我们转到“Connect”选项卡,选择您偏好的消息传输平台,然后按照其分步说明进行操作。

值得注意的是,不同的平台会有所差异。例如:Telegram虽然易于配置,却不支持GIF图像。因此,您应该适当地调整自己的Bot。如果您无从下手的话,我建议您使用Facebook Messenger,它是一个功能非常强大的平台,而且拥有着大量的用户。

第9步:监控并训练Bot

“Monitor”选项卡能够帮助您持续改进Bot的智能程度。它能够收集Bot所接收到的所有消息,并显示匹配了何种意图。通过密切监控,您可以针对那些匹配无效、或根本不存在的意图,进行动态调整与分配。

如上图所示,针对***一条消息,Bot未能实现意图的匹配。如果此类消息持续出现的话,我们就需要为它创建一个新的意图了。

展望

如果您顺利地完成了上述9个步骤,并想持续地改进该聊天机器人的话,您还可以从如下三个方面入手:

  • 学习如何从消息中提取丰富的关键信息。
  • 将Bot与代码连接,实现与外部API的交互。
  • 让Bot能够支持多种语言,以扩大自己的受众。

***,不要忘了“叉”入他人创建好的意图和技能。相信您的Bot一定会在不断迭代与重构中更加智能的。

原文标题:Build Your First ChatBot With SAP Conversational AI,作者:Omer Biran

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

AI 人工智能 聊天机器人
上一篇:Nature封面:仿生群体机器人问世,工程学重大突破 下一篇:比尔·盖茨:AI应该被用来改善教育和医疗
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

超过Google,微信AI在NLP领域又获一项世界第一

微信AI,NLP领域又获一项世界第一,这次是在机器阅读理解方面。

乾明 ·  3天前
AI如何改善采矿行业现状? 精选

人工智能的引入,有望将采矿业转化成一个更安全、利润空间更大且更为环保的行业。

佚名 ·  3天前
大小仅1MB!超轻量级的人脸识别模型火爆Github

近日,用户Linzaer在Github上开源了一款适用于边缘计算设备、移动端设备以及 PC 的超轻量级通用人脸检测模型,该模型文件大小仅1MB,一经开源就霸榜Github Trending榜单。

佚名 ·  3天前
大数据和人工智能如何协同工作

人工智能和机器学习如何帮助组织从大数据中获得更好的业务见解?需要了解人工智能和大数据分析的下一步发展。大数据技术并不像几年前那样广受关注,但这并不意味着大数据技术没有得到发展。如果说有什么不同的话,那就是大数据的规模正在变得越来越大。

Kevin Casey ·  4天前
麻省理工学院开发出组装机器人:未来可建造太空殖民地

麻省理工学院博士生本杰明·杰内特(Benjamin Jenett)和原子中心的尼尔·格申费尔德教授(Neil Gershenfeld)在《电气电子工程师学会机器人与自动化快报》科学期刊上发表报告称,开发出一种组装机器人原型,它可以用很小的零件制成大型结构。

技术力量 ·  4天前
刷脸取件被小学生“破解”!丰巢紧急下线 精选

近日,#小学生发现刷脸取件bug#的话题引发关注!这是真的吗?都市快报《好奇实验室》进行了验证。

好奇实验室 ·  4天前
深度学习/计算机视觉常见的8个错误总结及避坑指南

人类并不是完美的,我们经常在编写软件的时候犯错误。有时这些错误很容易找到:你的代码根本不工作,你的应用程序会崩溃。但有些 bug 是隐藏的,很难发现,这使它们更加危险。

skura ·  4天前
AI艺术日渐繁荣,未来何去何从? 精选

利用人工智能创作而成的画作近年来越来越受瞩目,有的作品甚至能在知名拍卖行拍得高价。但这类作品仍有不少问题需要解答,比如它的作者是开发出算法的程序员还是计算机呢?AI艺术的市场未来将走向何方呢?

网易智能 ·  4天前
Copyright©2005-2019 51CTO.COM 版权所有 未经许可 请勿转载