Rasa核心和Rasa自然语言理解的区别

32
我试图从官方文档中理解Rasa CoreRasa NLU之间的区别,但我并没有理解多少。我理解的是,Rasa Core用于指导对话流程,而Rasa NLU用于处理文本以提取信息(实体)。
Rasa CoreRasa NLU中都有构建聊天机器人的示例。我无法理解这两种方法的区别以及何时采用其中一种方法。
请问您能帮助我更好地理解吗?
5个回答

34
您说得对。两者共同工作,但它们有着不同的目标。简单来说,Rasa Core处理对话流程、话语、动作,而Rasa NLU提取实体和意图。
关于您的第二个问题:
第一个示例展示了创建机器人的整个工作流程,展示了如何设置域和story。这些是Rasa Core的特性,而不是Rasa NLU。在这个示例的第2项(称为定义解释器)中,作者明确表示他正在使用Rasa NLU作为解释器(但是您甚至可以使用另一个实体提取框架)。
第二个示例(Rasa NLU的示例)仅显示如何训练实体和意图提取器。您没有任何关于域和故事的信息,也没有任何关于对话流程的信息,这是一个纯粹的NLU示例(尽管作者正在使用Rasa Core的默认运行方法来运行机器人)。
当我开始学习Rasa时,有点难以理解开发机器人的概念。但是随着您开始编码,情况就变得清晰了。无论您使用哪个平台,NLU都将处理实体和意图,而对话流则是其他东西。
甚至可以使用一个库来处理您的机器人的核心,另一个库来处理NLU。
我想指出与大多数可以用来构建您的机器人核心的工具不同,Rasa Core使用机器学习来更好地概括对话流程。而不是为每个可能的对话节点编写代码,您可以使用可能的对话路径数据集来训练核心以进行概括。这是一个非常酷和强大的功能 :)
希望对您有所帮助。

那么,如果我想创建一个类似于LEX、Luis和DialogFlow的聊天机器人,我应该选择哪一个? - AntonIva
4
为了构建一个完整的聊天机器人应用程序,你需要两个部分:理解用户要说什么(Rasa NLU - 实体和意图提取),然后根据对话的上下文信息采取适当的行动(Rasa Core)。 - Uzair A.
我从这个 Rasa NLU 中得到的信息是:负责实体和意图提取;基本上解析聊天消息的内容。 Rasa Core: 集成实体+相应的回复逻辑,创建一个聊天机器人的对话系统。 - Sumax

5
一个非常简单易懂的描述:Rasa NLU是理解输入内容的解释器。基本上,它会找出实体并标记意图。
而 Rasa Core 则完成你想让机器人执行的其余工作,对话流程是最重要的。
例如,当你对机器人说“你好”时,Rasa NLU 将理解你的意图是问候,而 Rasa Core 会告诉机器人回复一句问候语。
如果你训练了机器人来回复问候,则它会回复一个问候语,否则它也可能回复其他内容。

3

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

它会理解您所说的话并将其匹配到您定义的某个意图。

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

因此,当NLU给出意图时,Core执行相应的动作,然后机器人回复该操作。


1
提供的 Markdown 文件可以帮助 Rasa Core 关联各种可能的“实体”和相应的适当“操作”或“回复”,以关闭对话系统循环。 - Sumax

1
@trinca的答案是正确的。我只是稍微重新表述了一下要点。
其次,有一些示例可以使用Rasa core来构建聊天机器人,也可以使用Rasa NLU来构建聊天机器人,但不清楚这两种方法的区别以及何时应该使用哪种方法。
不,NLU/Core并不是不同的方法,而是对话管理引擎的不同组成部分。
  1. RASA NLU是意图/实体分类器:

    您可以使用带有相关意图(和实体)标签的多个示例句子对分类器进行离线训练。

    随后,在运行时,您向分类器提交一个输入句子,然后得到一个意图标签和与该意图相关的可能实体列表,作为分类的结果。

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

    它决定/猜测聊天机器人对话的下一个可能“状态”(再次只是一个意图)。它使用RASA的特殊性进行离线训练:“stories”。这些是可能的意图序列,遵循开发人员在训练阶段提交的对话示例。

    随后,在运行时,当用户提交一个句子(因此是先前提到的NLU组件猜测的相应意图)时,RASA Core猜测对话的“可能”下一个状态(即意图)。

注:

IMMO,仅使用许多竞争对手提出的仅具有NLU(意图分类器)组件的“解决方案”来构建聊天机器人是不可行的,因为仅使用意图分类器(NLU),您只能管理“无状态”的对话(单轮问答,没有任何上下文的对话)。最终,与其他提到的框架相比,RASA是赢家,因为它具有对话管理组件和故事设计/开发会话的方式,而没有硬编码规则(if/then)。

0

Rasa Core:

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

Rasa NLU:

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

示例

例如,如果用户输入是“明天纽约的天气怎么样?”,Rasa NLU需要提取出用户的意图是询问天气,并提取相应的实体名称和类型,例如日期是明天,位置是纽约。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接