将智能从 LUIS 转移到 QnA

Transferring Intelligence from LUIS to QnA

LUIS 通常用作具有多个 QnA 的调度程序,或与 QnA 并行使用,或用作 (If else) 以重定向到 QnA。正如下面 link 中提到的:

我想将知识从 LUIS 转移到 QnA:

路易斯: 从话语中提取诸如实体和意图之类的东西,但在上述大多数场景中,我们传输的只是话语,而不是来自 LUIS 的关于意图和实体的信息。

QnA 元数据: 当我们之后查询 qna 库时,元数据过滤器(键值对)可以增加一些答案。

这是我的问题:

  1. 这种情况是否可以将 session.message 或话语以及实体和意图转移到 QnA 服务?

  2. 使用元数据实现它,例如 intent: something 和 entities: some products ,并从 LUIS 传递 intents 和实体以与 QnA 服务中的元数据进行比较,这也合理吗?

  3. 如果上述概念是错误的,那么是否有另一种方法可以将知识从 LUIS 转移到 QnA 服务?据我所知,LUIS 是比 QnA 更智能的服务,QnA 主要用作可靠的 QnA 基础,但如果我们将控制权交给 LUIS,那么甚至可以将具有不同实体或表示方式但相同上下文映射到的问题QnA 数据库中所需的 QnA 对。

  4. 最后有人能帮我想出如何在 node.js 中实现它吗?如果可能,您不必从头开始编写代码,只需将此意图和实体传输逻辑从 LUIS 传输到 QnA 的元数据。当然如果这个逻辑可行的话。

人们希望以某种方式集成 LUIS 和 QnAMaker 是很常见的,例如 and here. There's official documentation about how to do it here。不过,您想要做的似乎与通常的实现有些不同。

如果我可以解释一下,听起来您正在尝试使用 LUIS 来提升 QnAMaker 的智能。这是不可能也没有必要的。这是不可能的,因为 LUIS 和 QnAMaker 设计有简单的接口,这些接口接收单个消息作为输入,也就是说 QnAMaker 无法使用 LUIS 的意图和实体。这不是必需的,因为 QnAMaker 的设计已经达到了它可以做的最好的程度。如果有一种方法可以使用 LUIS 的算法使其更智能,那么该功能将是内置的,您不必自己实现它。请记住,这两者都是 Microsoft AI 服务,所以我不希望其中一个拥有另一个无法触及的秘密。

我发现 QnA Maker 的问题有很多重叠部分。

例如同类型问题如定义问题:

  • 什么是苹果?告诉我什么是苹果。
  • 什么是梨?告诉我什么是梨。解释一下什么是梨。

QnA Maker 相对笨拙 - 它基于搜索引擎,而不是真正理解语言。例如,它无法找出问题的关键概念。

因此,减少重叠并使问题更具独特性很重要。

我想出的解决方案是将相似的问题聚类并在 LUIS 中将它们建模为意图。然后可以在 QnA Maker 中找到答案。例如。 DefinitionQuestion LUIS 中的实体提取意图:

  • X 是什么?告诉我 X 是什么。解释一下 X 是什么

然后在您的机器人中使用逻辑,您可以将所有定义(而不是整个问题)放入 QnA Maker 并将它们标记为定义。当 LUIS 识别定义意图时,您可以提取 X 实体并使用带有 questiontype:definition 标记的严格筛选器查询 X 的 QnA Maker。