Botframework 微软QnA制造商是否使用LUIS?

Botframework 微软QnA制造商是否使用LUIS?,botframework,azure-language-understanding,qnamaker,Botframework,Azure Language Understanding,Qnamaker,我计划使用QnA maker,但它是否在后台使用LUIS? 如果这些问题的提问方式与QnA制造商培训的不同,QnA制造商会做出回应吗 它是否使用路易斯作为背景 不,但是你可以 根据该文件,建议以下三种方式与LUIS一起实施QnA 同时调用QnA Maker和LUIS,并使用第一个返回特定阈值分数的用户的信息响应用户 首先打电话给路易斯,如果没有意图符合特定的阈值分数,即触发了“无”意图,则打电话给QnA Maker。或者,为QnA Maker创建一个LUIS意向,为您的LUIS模型提供映射到“

我计划使用QnA maker,但它是否在后台使用LUIS? 如果这些问题的提问方式与QnA制造商培训的不同,QnA制造商会做出回应吗

它是否使用路易斯作为背景

不,但是你可以

根据该文件,建议以下三种方式与LUIS一起实施QnA

  • 同时调用QnA Maker和LUIS,并使用第一个返回特定阈值分数的用户的信息响应用户

  • 首先打电话给路易斯,如果没有意图符合特定的阈值分数,即触发了“无”意图,则打电话给QnA Maker。或者,为QnA Maker创建一个LUIS意向,为您的LUIS模型提供映射到“QnAIntent”的示例QnA问题

  • 首先打电话给QnA Maker,如果没有答案符合特定的阈值分数,那么打电话给LUIS

  • 在这里,我发布了一个代码示例,用于用C#编写的第三种方法

    消息控制器中
    首先调用QnA Maker:

    if(activity.Type==ActivityTypes.Message)
    {
    wait Conversation.SendAsync(活动,()=>newdialogs.MyQnADialog());
    }
    
    MyQnADialog
    中,查看是否有匹配的答案,如果没有,请致电路易斯:

    [QnAMakerAttribute(“QnASubscriptionKey”、“QnAKnowledgebaseId”、“知识库中无答案,路易斯中的seraching…”,0.5)]
    [可序列化]
    公共类MyQnADialog:QnAMakerDialog
    {
    受保护的重写异步任务DefaultWaitNextMessageAsync(IDialogContext上下文、IMessageActivity消息、QnAMakerResults结果)
    {
    如果(result.Answers.Count==0)
    {
    wait context.Forward(new MyLuisDialog(),this.ResumeAfterNewOrderDialog,message,CancellationToken.None);
    }
    context.Wait(this.MessageReceivedAsync);
    //返回base.DefaultWaitNextMessageAsync(上下文、消息、结果);
    }
    私有异步任务ResumeAfterNewOrderDialog(IDialogContext上下文,IAwaitable结果)
    {
    var resultfromnewdialog=等待结果;
    context.Wait(this.MessageReceivedAsync);
    }
    }
    
    QnA不使用LUIS或意图识别,而是使用n-gram来检测相似性,正如文档中所述

    自MS Build 2018以来,您可以使用LUIS dispatch应用程序。它允许您将多个LUIS应用程序和QnA知识库合并到一个dispatch应用程序中。这意味着将用户输入发送到LUIS和QnA,或者根据信心分数以特定顺序发送,这应该是过去的事了

    您拨打的第一个电话直接指向LUIS dispatch应用程序。结果将告诉你是否需要联系儿童luis应用程序,或者更确切地说是QnA知识库。它可以做到这一点,因为LUIS dispatch应用程序中的语句都是来自QnA知识库的语句。您可以将多个LUIS应用程序和/或QnA知识库添加到此分派


    我建议查看Bot Builder dispatch tool(CLI)。

    如果我们使用QnA和LUIS,那么课程的输入应该完成两次。一次在QnA,一次又一次在LUIS?请纠正我的理解。@ZEE,它们是不同的服务,您可以直接同时向这两个服务发送消息并检查结果,也可以逐个检查。例如,如果用户首先从QnA查询并找到答案,则无需再打电话给LUIS。谢谢您的明确回答,但我主要担心的是我是否需要训练两次,即一次训练到QnA,另一次训练到LUIS,因此,如果第一个选项的结果低于某个分数,我将继续呼叫第二个。@ZEE,我想这取决于你在给QnA打电话后是否再给路易斯打电话。如果你发现这个答案是有用的,你能给这个答案打个标记吗?@ Zee,我想你误解了QNA和路易斯,认为QNA只是一个知识库,其中有一套固定的问题和答案,而路易斯就像一个人类解释器,它理解你的意图和你的实体。第二,QnA会回答,即使问题的提问方式与QnA maker培训的方式不同(如果存在匹配),但最好通过在答案中添加多个问题来进行培训。第三,理想情况下,你不应该用同样的问题来训练luis和qna(那么使用两者有什么意义呢?)使用分派工具有一个问题,每次我们添加或更新知识库时,我们都需要再次创建新的分派模型并使用它。你不需要再次创建新模型,您可以在.dispatch文件所在的同一文件夹中运行dispatch refresh。这将使用您的子LUIS应用程序/KBs中发布的所有更改更新LUIS dispatch应用程序。