Microsoft QnA制造商是否使用LUIS?

时间:2017-12-10 06:14:30

标签: botframework luis qnamaker

我打算使用QnA制造商,但它是否在后台使用LUIS? 如果以不同于QnA制造商培训的方式提出问题,是否会回复?

2 个答案:

答案 0 :(得分:3)

  

它在后台使用LUIS吗?

不,但你可以Combining Search, QnA Maker, and/or LUIS

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

  
      
  1. 同时调用QnA Maker和LUIS,并使用第一个返回特定阈值分数的信息回复用户。

  2.   
  3. 首先调用LUIS,如果没有意图达到特定的阈值分数,即"无"意图被触发,然后调用QnA Maker。或者,为QnA Maker创建一个LUIS意图,为您的LUIS模型提供示例QnA问题,这些问题映射到" QnAIntent。"

  4.   
  5. 首先调用QnA Maker,如果没有答案符合特定的阈值分数,则调用LUIS。

  6.   

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

首先在MessagesController致电QnA Maker:

if (activity.Type == ActivityTypes.Message)
{
    await Conversation.SendAsync(activity, () => new Dialogs.MyQnADialog());
}

MyQnADialog中,查看是否有匹配的答案,如果没有,请调用LUIS:

[QnAMakerAttribute("QnASubscriptionKey", "QnAKnowledgebaseId", "No Answer in Knowledgebase, seraching in Luis...", 0.5)]
[Serializable]
public class MyQnADialog : QnAMakerDialog
{

    protected override async Task DefaultWaitNextMessageAsync(IDialogContext context, IMessageActivity message, QnAMakerResults result)
    {
        if (result.Answers.Count == 0)
        {
            await context.Forward(new MyLuisDialog(), this.ResumeAfterNewOrderDialog, message, CancellationToken.None);
        }
        context.Wait(this.MessageReceivedAsync);
        //return base.DefaultWaitNextMessageAsync(context, message, result);
    }
    private async Task ResumeAfterNewOrderDialog(IDialogContext context, IAwaitable<object> result)
    {
        var resultfromnewdialog = await result;
        context.Wait(this.MessageReceivedAsync);
    }

}

答案 1 :(得分:0)

QnA不使用LUIS或意图识别,而是使用n-gram来检测相似性来作为陈述的文档。

自MS Build 2018起,您可以使用LUIS调度应用程序。它允许您将多个LUIS应用程序和QnA知识库合并到一个调度应用程序中。这意味着将用户输入同时发送到LUIS和QnA,或者以特定顺序(取决于置信度得分)发送都已经成为过去。

您进行的第一个呼叫是针对LUIS调度应用程序的。结果将告诉您是否需要联系儿童luis应用程序或QnA知识库。之所以可以这样做,是因为LUIS调度应用程序的语音充满了QnA知识库中的语音。您可以向此调度添加多个LUIS应用和/或QnA知识库。

我建议研究Bot Builder分发工具(CLI)。