Rasa 核心和 Rasa nlu 之间的区别

Difference between Rasa core and Rasa nlu

我试图从官方文档中了解Rasa core and Rasa NLU之间的区别,但我了解的不多。我的理解是,Rasa core 用于引导对话的流程,而 Rasa NLU 用于处理文本以提取信息(实体)。

Rasa core as well as Rasa NLU 中有构建聊天机器人的示例。我不明白这两种方法的区别是什么以及何时采用一种方法而不是另一种方法。

你能帮我更好地理解这个吗?

你没看错。两者一起工作,但他们有不同的目标。简单来说,Rasa Core 处理对话流、话语、动作和 Rasa NLU 提取实体和意图。

关于你的第二个问题:

第一个示例展示了创建机器人的整个工作流程,它展示了如何设置域和故事。这些是 Rasa Core 的功能,而不是 Rasa NLU。在此示例的第 2 项(称为定义解释器)中,作者明确表示他正在使用 Rasa NLU 作为解释器(但您甚至可以使用另一个实体提取器框架)。

第二个示例(Rasa NLU 示例)展示了如何仅训练实体和意图提取器。你没有关于领域和故事的任何信息,没有关于对话流的信息,它是一个纯粹的 NLU 示例(即使他使用默认的 运行 方法从 Rasa Core 到 运行 机器人).

当我开始学习 Rasa 时,有点难以理解开发机器人的概念。但是当你开始编码时,它就变得清晰了。无论您使用哪个平台,NLU 都将处理实体和意图,而对话流将是另一回事。

甚至可以使用一个库来处理您的机器人的核心,而另一个库来处理 NLU。

我想指出的是,与您可以用来构建机器人核心的大多数工具不同,Rasa Core 使用机器学习来更好地概括对话流。无需为对话中的每个可能节点编写代码,您可以使用可能对话路径的数据集并训练核心来概括它。这是一个非常酷和强大的功能:)

希望对您有所帮助。

对初学者的一个非常外行的描述:Rasa NLU 是理解输入的解释器。基本上,它会找出实体并标记意图。
Rasa Core 完成您希望机器人完成的其余工作,对话流程是最重要的。

例如,您对机器人说“你好”。 Rasa NLU 将把输入的意图理解为问候语,而 Rasa Core 将告诉机器人用问候语回复。
如果您为此训练了机器人,则回复将是问候语,也可能是其他任何内容。

简单来说,Rasa NLU 使用 NLP(自然语言处理)来理解您告诉机器人的内容。

它理解您所说的内容并将其与您定义的某些意图相匹配。

另一方面,Rasa Core 处理对话流。故事 markdown 文件列出了它们的意图和操作。

因此,当 NLU 给出意图时,Core 会执行与其对应的动作,而机器人会以该动作进行回复。

@trinca 的回答是正确的。我只是改写一下要点

Second thing, there are examples to build chatbot in Rasa core as well as Rasa nlu both can be used to build chatbot but couldn't understand what's the difference in two approaches and when to follow which one.

不,NLU/Core 不是不同的方法,而是对话管理器引擎的不同组件。

  1. RASA NLU 是一个 intent/entities 分类器:

    你用一些带有相关意图(和实体)标签的例句离线训练分类器。

    之后,在 运行 时,您向分类器提交了一个传入的句子,并且作为分类的结果,您有一个意图标签和一个与意图相关的可能实体列表。

  2. RASA Core 是一个(概率性)对话管理器:

    它 decides/guess 是聊天机器人对话的下一个可能 "state"(同样只是一个意图)。它使用 RASA 特性进行离线训练:“stories”。这些是可能的意图序列,遵循开发人员在训练阶段提交的对话示例。

    之后,在 运行 时间,RASA Core,当用户提交一个句子时(因此在前面提到的 NLU 组件中猜测了相应的意图)它猜测对话的 "probable" 下一个状态(一个意图)。

备注:

IMMO you can't build a chatbot with just the NLU (an intent classifier) component proposed by many competitors as the "solution" to build bots), because with just the intents classifier (The NLU) you can manage just "stateless" dialogs (single turn volleys without any context of the conversation).

An the end of the day RASA is winner in comparison with other mentioned frameworks (these are often just channel gateways/intente classifiers) because the dialog manager component and the stories way to design/develop a conversation, without hardcoded rules (if/then).

拉萨核心:

Rasa Core 是 Rasa 中处理对话管理的组件。对话管理负责记录对话上下文并相应地选择下一步操作。

Rasa NLU:

Rasa NLU 负责意图识别和实体提取。

例子

比如用户输入是What's the weather like tomorrow in New York?,Rasa NLU需要提取用户的意图是查询天气,以及对应的实体名称和类型,例如,日期是明天,地点是纽约。