【问题标题】:why to use LUIS with QnA为什么将 LUIS 与 QnA 结合使用
【发布时间】:2019-02-25 17:08:58
【问题描述】:

我有一个包含近 200 个问题的 QnA。我的客户要求在我们的机器人中添加 LUIS 服务。我尝试使用 QnA 和 LUIS 一起实现 Bot,但我想知道我应该在话语中添加什么?所有 QnA 问题?

这些问题非常生动,它们之间没有规律。在这种情况下,如何让 LUIS 识别最匹配的问题?

请发表评论。

谢谢, 维韦克

【问题讨论】:

  • 您能否说出有关“我的客户要求在我们的机器人中添加 LUIS 服务”的任何原因或目标?
  • 他们想根据主题对 Q 和 A 进行分组。那么我应该为每个主题制定单独的意图并将这些意图的所有问题粘贴为话语吗?
  • @VivekJain - 如果我的回答不令人满意,您能否评论或更新您的问题以解释原因?

标签: bots azure-language-understanding qnamaker


【解决方案1】:

我假设您已经设计了您的机器人,以便“QnAMaker 问题”只是多个意图中的一个 LUIS 意图。如果是这种情况,只需添加任意数量的 QnA 问题表达,以便 LUIS 了解 QnA 问题与其他意图不同的外观。这可能需要大量培训,您应该为低置信度分数做好准备,因此只需计划适应这种情况。

如果您有多个 QnA 知识库,每个知识库都有自己的 LUIS 意图,您可能需要将每个问题添加为话语,以确保 LUIS 知道每个问题适用于哪个特定知识库。但是,您也可以编写一些故障安全代码来解决 LUIS 猜错知识库的情况。它可能看起来像这样:

[LuisIntent("KnowledgeBase2")]
public async Task KnowledgeBase2Handler(IDialogContext context, LuisResult result)
{
    if (KnowledgeBaseContains(result.Query, knowledgeBase2))
    {
        // Answer the question with the correctly-selected knowledge base
    }
    else
    {
        foreach (var kb in knowledgeBases)
        {
            if (KnowledgeBaseContains(result.Query, kb))
            {
                // Answer the question with the correct knowledge base
                // that LUIS didn't guess
            }
        } 
    }
}

【讨论】:

  • 嗨,谢谢,我已经按照您的建议尝试了这种方式,但是通过这种方式,我无法判断 LUIS 是否真的比调度员更有作用。 QnA 有时会表现得很愚蠢,例如“A-sachnummern?”之类的问题。还是“N-Sachnummern”?对他来说是一样的,它会返回首先出现在 QnA 库中的答案。你知道我该如何解决这个问题吗?
  • 在使用 QnA Maker 时,LUIS 确实有些多余,因为必须对消息进行两次评估。如果 QnA Maker 针对两个不同的问题返回相同的答案,那么您可能只需要对其进行更多训练
  • @VivekJain 你想将此答案标记为正确吗?
  • @KyleDelaney 我们如何在 Node.JS 中做到这一点
  • @VivekJain - if/else 块在 JavaScript 中与 C# 相同,而 foreach 只是略有不同,您可以只写 for 而不是 foreachcodeburst.io/…
猜你喜欢
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
相关资源
最近更新 更多