LUIS将意图数量限制为20

时间:2016-11-19 01:09:46

标签: nlp botframework luis

我正在尝试建立一个与LUIS模型对话的机器人。机器人将有35个场景,每个场景对应一个LUIS意图。目前,LUIS支持最多20个意图。 如何在我的代码中扩展它?我想知道是否有更好的LUIS模型层次结构,父模型调用特定的子模型。或者我应该在我的数据库中维护一个关键字列表,并根据它调用特定的模型。我需要帮助来评估这两种方法的优缺点。谢谢!

1 个答案:

答案 0 :(得分:2)

我建议您尝试使用BestMatchDialog替换尽可能多的场景(至少15)。

您仍然会使用LuisDialog作为根对话框。 这是一个例子:

 [Serializable]
public class GreetingsDialog: BestMatchDialog<bool>
{
    [BestMatch(new string[] { "Hi", "Hi There", "Hello there", "Hey", "Hello",
        "Hey there", "Greetings", "Good morning", "Good afternoon", "Good evening", "Good day" },
       threshold: 0.5, ignoreCase: true, ignoreNonAlphaNumericCharacters: true)]
    public async Task WelcomeGreeting(IDialogContext context, string messageText)
    {
        await context.PostAsync("Hello there. How can I help you?");
        context.Done(true);
    }

    [BestMatch(new string[] { "bye", "bye bye", "got to go",
        "see you later", "laters", "adios" })]
    public async Task FarewellGreeting(IDialogContext context, string messageText)
    {
        await context.PostAsync("Bye. Have a good day.");
        context.Done(true);
    }

    public override async Task NoMatchHandler(IDialogContext context, string messageText)
    {
        context.Done(false);
    }
}

从你的LuisDialog你可以这样称呼它

 [LuisIntent("None")]
    [LuisIntent("")]
    public async Task None(IDialogContext context, IAwaitable<IMessageActivity> message, LuisResult result)
    {
        var cts = new CancellationTokenSource();
        await context.Forward(new GreetingsDialog(), GreetingDialogDone, await message, cts.Token);
    }

上面的代码是从Ankitbko's MeBot repo借来的。