我尝试从http://192.X.X.X:8080/和Rasa core的官方文档中了解rasa,但无法推断出太多。我能够理解的是
Rasa核心用于指导对话流,而Rasa nlu用于理解和处理文本以提取信息(实体)
第二件事,在Rasa nlu以及Rasa core中建立聊天机器人的例子都可用于构建聊天机器人,但无法理解两种方法的区别以及何时关注哪一种
请你帮助我更好地理解。
答案 0 :(得分:17)
你做对了。两者合作但他们有不同的目标。简单来说,Rasa Core处理会话流,话语,动作和Rasa NLU提取实体和意图。
关于你的第二个问题:
第一个示例显示了创建机器人的整个工作流程,它显示了如何设置域和故事。这些是Rasa Core的功能,而不是Rasa NLU。在这个例子的第2项(称为定义解释器)上,作者明确表示他正在使用Rasa NLU作为解释器(但你甚至可以使用另一个实体提取器框架)。
第二个示例(Rasa NLU one)显示了如何仅训练实体和意图提取器。您没有关于域和故事的任何信息,没有关于会话流的信息,它是纯粹的NLU示例(即使他使用Rasa Core中的默认运行方法来运行机器人)。
当我开始学习Rasa时,有点难以理解开发机器人的概念。但是当你开始编码时,它变得清晰了。无论您使用哪个平台,NLU都将处理实体和意图,而会话流将是其他的。
甚至可以使用一个库来处理机器人的核心,另一个库来处理NLU。
我想要注意的是,与用于构建机器人核心的大多数工具不同,Rasa Core使用机器学习来更好地概括对话流程。您可以使用可能的会话路径的数据集,并训练核心来概括它,而不是为对话中的每个可能节点编写代码。这是一个非常酷和强大的功能:)
希望它有所帮助。
答案 1 :(得分:1)
@trinca的答案是正确的。我只是改写一些要点
第二件事,也有一些在Rasa核心中构建聊天机器人的示例 由于Rasa nlu都可以用来构建聊天机器人,但无法理解 两种方法有什么区别,何时采用哪种方法。
不,NLU / Core并不是不同的方法,相反,它们是对话框管理器引擎的不同组件。
RASA NLU是意图/实体分类器:
您通过带有附加的相对意图(和实体)标签的许多例句示例对分类器进行离线训练。
此后,在运行时,您将分类语句提交给分类器,并返回了意图标签和作为分类结果的与意图相关的可能实体的列表。
RASA Core是(概率)对话框管理器:
它决定/猜测是聊天机器人对话的下一个可能的“状态”(再次是意图)。它是使用RASA专业知识“ stories”进行离线培训的。以下是开发人员在训练阶段提交的对话示例之后的可能意图序列。
然后,在运行时,RASA Core,当用户提交一个句子时(因此,前面提到的NLU组件猜测了一个对应的意图),它猜测对话的“可能”下一个状态(意图)。
注意:
IMMO,您不能仅使用NLU构建聊天机器人(意图 分类器)组件被许多竞争对手提议为构建机器人的“解决方案”),因为仅使用意图分类器(NLU),您就只能管理“无状态”对话框(单轮截击,无需任何对话上下文)。
与其他提到的框架(通常只是通道网关/意图分类器)相比,RASA最终是赢家,因为对话管理器组件和设计/开发框架的故事方式 对话,没有硬编码的规则(如果/然后)。
答案 2 :(得分:0)
对于初学者来说很普通的描述: Rasa NLU:它是理解输入的解释器。基本上可以找出实体并标记意图。
Rasa Core:完成您希望机器人执行的其余工作。对话流是最重要的。
例如:您对机器人说“你好”。 Rasa NLU会将输入的意图理解为“打招呼”,而Rasa Core会告诉该漫游器以问候语答复。
PS *:如果您为机器人训练机器人,则回复将是一种问候,或者也可能是其他东西。
答案 3 :(得分:0)
简单来说,Rasa NLU使用NLP(自然语言处理)来理解机器人。
它可以理解您所说的内容并将其与您定义的意图相匹配。
另一方面,Rasa Core处理对话流程。故事标记文件列出了意图和动作。
因此,当NLU给出意图时,Core会执行与之对应的动作,并且bot会用该动作进行回复。