【问题标题】:How can I set a minimum threshold for my LUISDialog to go to None Intent in .NET?如何为我的 LUISDialog 设置最小阈值以在 .NET 中转到无意图?
【发布时间】:2017-11-14 11:11:17
【问题描述】:

我有一个LuisDialog

[LuisModel("...", "...", domain: "...")]
[Serializable]
public class MainLUISDialog : LuisDialog<object>
{

   [LuisIntent("None")]
   public async Task Default(IDialogContext context, LuisResult result)
   {
      await context.PostAsync("Não percebi, podes ser mais claro se faz favor?");
      context.Wait(MessageReceived);
   }

   [LuisIntent("Service.Cancel")]
   public async Task CancelService(IDialogContext context, LuisResult result)
   {
      await context.PostAsync("Queres cancelar um serviço.");
      await context.PostAsync("Entities:");
      foreach (var entity in result.Entities)
      {
         await context.PostAsync($"{entity.Type}: {entity.Entity}");
      }
      context.Wait(MessageReceived);
   }
...

我想知道如何设置,例如,所有意图得分低于 0.7 的话语都将转到None 意图,有没有办法在我的代码中以编程方式添加这个阈值?我似乎无法用我拥有的代码找到任何方法。

【问题讨论】:

    标签: c# .net botframework microsoft-cognitive azure-language-understanding


    【解决方案1】:

    一种方法可能是从 LuisDialog 继承并覆盖以下函数之一:

    在任何这些函数中,您都应该能够执行逻辑来丢弃检测到的意图并将其替换为 None。

    如果这只是针对 1-2 个意图,那么可能不值得进行覆盖,相反,您可以在所有意图方法中检查它,如下所示:

     if (result.TopScoringIntent.Score < threshold) 
     {
         return Default(context, result);
     }
    

    【讨论】:

    • 将“返回默认值(上下文,结果)”直接到无对话框吗?
    • 是的,假设您的 [None] 意图映射到该方法,这似乎基于您的代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    相关资源
    最近更新 更多