案例分享:用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应该被用来改善教育和医疗
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

厨师与AI完美搭配,一起刺激你的味蕾

最近,索尼人工智能团队和韩国高丽大学联合开发了一种名为FlavorGraph的人工智能映射工具,该工具可以推荐互补的配料,帮助厨师们烹饪菜肴。

科技行者 ·  1天前
违规企业可面临营业额6%罚款 欧盟欲加强对人工智能技术监管

据外媒报道,欧盟委员会近日修订文件显示,如有企业违反欧盟规则使用被禁止的人工智能应用,可能会面临最多相当于其全球营业额6%的罚款,这一数字高于此前提议的4%。

贾桂鹏 ·  1天前
外卖小哥要失业了?美团募资650亿打造无人配送

从疫情开始之后,美团就已经在无人配送方面发力,根据美团的数据显示,目前美团的无人车配送服务已经覆盖了20多个小区,累计配送3.5万订单,自动驾驶里程近30万公里!

首席财经观察 ·  1天前
未来网络领域发生混合威胁的三大趋势

4月7日,欧洲反混合威胁卓越中心发布报告《未来的网络空间与混合威胁》,指出网络空间是发生混合威胁的领域之一,是网络行动和网络信息行动的促成者。

张明月 张岸佳 ·  1天前
MIT小哥联合谷歌训练7个多任务机器人,9600个任务成功率高达89%!

Google研究团队率先研发出了处理大规模任务的新型机器人,这些机器人竟然具有「学习世界」的能力。

新智元 ·  1天前
有了这支矢量神经风格画笔,无需GAN也可生成精美绘画

一种新的神经风格画笔能够生成矢量形式的绘画作品,在统一框架下支持油画、马克笔、水彩画等多种笔触,并可进一步风格化。

机器之心 ·  1天前
5G只比4G多1G?人工智能不答应

4月4日,论文共同作者之一、美国艺术与科学院院士、清华大学智能产业研究院院长张亚勤在接受科技日报记者采访时表示,通信行业正在走向5G,马上要走向6G,光是看视频快点、多发送点图片,那不是5G。什么才是真正的5G?为什么要在5G网络里“注入”人工智能?

科技日报 ·  1天前
通过AI和ML实现完全自动化的5种绝佳方法

在本文中,我们将讨论使用AI和ML的智能测试自动化技术如何帮助项目团队减少测试工作并提高测试覆盖率。

佚名 ·  1天前
Copyright©2005-2021 51CTO.COM 版权所有 未经许可 请勿转载