• 使用 DialogFlow、Node.js 和 React 构建聊天机器人


    对我们人类来说,交谈是第二天性。 它对我们来说很自然,但对于机器人来说却不能这样说。 即使是一个简单的问题,例如“你今天过得怎么样?”,也可以用几种方式重新表述(例如,“最近怎么样?”、“你好吗?”),机器人通常无法理解这些问题。

    我们可以解释问题背后的意图,但是构建逻辑以促进与机器人进行更智能的对话,而且对于大多数开发人员来说,从头开始编写代码是不可行的。

    好吧,幸运的是,有一种叫做 NLU(自然语言理解)的东西,它可以实现更好的人机对话——换句话说,一个利用机器学习和其他技术更好地理解人类交互的智能聊天机器人

    NLU 算法不仅可以识别文本,还可以解释其背后的意图。 因此,它是聊天机器人的理想算法。 阅读有关 NLU 在此处 的更多信息。

    这就是本文的目的所在。我们将使用 Google 的 NLU 平台 DialogFlow 构建我们的聊天机器人。 继续阅读以了解有关 DialogFlow 的更多信息,以及如何通过本后续教程将其集成到 React 应用程序中。

    • 开始使用 DialogFlow

    • 什么是代理?

    • 什么是意图?

    • 添加常规意图

    • 连接 NodeJS 服务器

      • 建立我们的服务器<

      • 公开服务器

      • 启用网络钩子

    • 验证

      • DialogFlow ES:通信集成

      • 将 Kommunicate 聊天小部件集成到 React 应用程序中

    开始使用 DialogFlow

    简单来说,DialogFlow 是一个由 NLU 提供支持的端到端工具,用于设计聊天机器人并将其集成到我们的界面中。 它使用由我们提供的语言训练的机器学习 (ML) 模型将自然语言翻译成机器可读的数据。 它是如何工作的? 让我们在构建聊天机器人的同时学习。

    打开 DialogFlow 控制台并使用您的 Google 帐户登录。 登录成功后,我们看到如下界面:

    可能引起您注意的第一件事是 创建代理 选项。

    什么是代理?

    没有什么花哨! 聊天机器人本身就是一个代理。 收集用户的查询,对其进行操作,最后发送响应都由我们的代理处理。


    超过 20 万开发人员使用 LogRocket 来创造更好的数字体验 了解更多 →


    让我们创建我们的聊天机器人; 例如,咖啡店的机器人怎么样? 猜测我的咖啡店灵感没有奖品。

    这就是控制台现在的样子:

    现在,屏幕上出现了更多的行话—— 意图 。

    什么是意图?

    控制台说,“意图是用户查询和您的软件实现的操作之间的映射”。 那么这是什么意思?

    Let me explain: in the case of our bot, we expect to receive queries like, “I would like a cappuccino” and, “When does the shop open?”, etc. We can categorize these queries into user intentions such as “Take Order”, “Timings”, etc. To handle them, we define these categories as intents in our agent.

    We also see that our agent comes with two default intents; Default Welcome Intent and Default Fallback Intent. Let’s explore them in a little more detail:

    这里有很多行话; 让我们一一介绍:

    上下文

    在人类对话中,要理解短语,我们通常需要一些上下文。 同样,对于机器人,意图需要知道查询的上下文。 为了使这成为可能,我们通过上下文连接一个或多个意图。 我们将在本文后面部分了解更多信息。

    训练短语

    这些是用于训练和帮助我们的代理以正确意图匹配查询的示例短语。 更多的短语和变体将提高意图匹配的准确性。

    通过查看默认的短语列表,很明显这个意图是用来向我们的用户打招呼的。

    活动

    我们刚刚了解到代理会寻找训练短语来触发意图。 但是,意图也可以由事件触发。 有两种类型的事件:

    • 平台事件 :这些由平台本身提供,并在特定于平台的事件发生时发生(例如, 欢迎 事件)

    • 自定义事件 :这些是由我们定义的(例如,我们进行的 API 调用的响应)

    动作和参数

    一旦查询与正确的意图相匹配,接下来就是对其采取行动。 为了采取行动,有时我们需要从查询中提取一些数据。 为了提取,我们用实体类型定义参数。 举个例子:“咖啡店今天开门吗?”&

  • 相关阅读:
    java spring cloud 工程企业管理软件-综合型项目管理软件-工程系统源码
    webpack的安装
    我的创作一周年纪念日
    【Designing ML Systems】第 8 章 :数据分布转移和监控
    FPGA实现AXI4总线的读写_如何写axi4逻辑
    Unity代码设置锚点
    【Java】Java HashMap类
    周报/月报 Prompt
    聊一聊go的单元测试(goconvey、gomonkey、gomock)
    计算机算法分析与设计(21)---回溯法(图着色问题)
  • 原文地址:https://blog.csdn.net/weixin_47967031/article/details/127114138