为什么要将 LUIS 与 QnA 一起使用

why to use LUIS with QnA

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

这些问题真的很生动,没有规律可循。在这种情况下,如何让 LUIS 识别出最匹配的问题呢?

请评论。

谢谢, 维维克

我假设您已经设计了您的机器人,因此 "QnAMaker question" 只是多个意图中的一个 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
            }
        } 
    }
}