如何为我的 LUISDialog 设置一个最小阈值以转到 .NET 中的 None Intent?

How can I set a minimum threshold for my LUISDialog to go to None Intent in .NET?

我有一个 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 意向,有没有办法以编程方式在我的代码中添加此阈值?我似乎无法找到任何方法来使用我的代码。

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

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

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

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