LUIS ограничивает количество намерений до 20

Я пытаюсь создать бота, который разговаривает с моделью LUIS. У бота будет 35 сценариев, каждый из которых соответствует намерению LUIS. В настоящее время LUIS поддерживает максимум 20 намерений. Как я могу масштабировать это в моем коде? Мне интересно, лучше ли иметь иерархию модели LUIS, когда родительская модель обращается к конкретной дочерней модели. Или мне следует вести список ключевых слов в своей базе данных и на его основе вызывать конкретную модель. Мне нужна помощь, чтобы оценить плюсы и минусы обоих подходов. Спасибо!


person happydevdays    schedule 19.11.2016    source источник
comment
Предел для намерений недавно был увеличен с 80 до 500, проверьте это на docs.microsoft.com/en-in/azure/cognitive-services/luis/   -  person Abdul Mateen Mohammed    schedule 07.03.2018


Ответы (1)


Я предлагаю вам попробовать заменить как можно больше сценариев с помощью 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);
    }

Приведенный выше код был заимствован из репозитория MeBot от Ankitbko.

person jcmontx    schedule 24.11.2016
comment
Спасибо! Кроме того, похоже, что в следующем выпуске LUIS количество намерений будет уменьшено. - person happydevdays; 29.11.2016
comment
@happydevdays, это здорово, но будьте осторожны с ценами: P - person jcmontx; 30.11.2016
comment
сейчас до 40 намерений - person JPThorne; 03.01.2017
comment
+1 за предложение BestMatchDialog. Однако использование этой библиотеки сэкономит вам только одно намерение, приветствие или прощание. Вышеупомянутые 15 - высказывания. - person GETah; 22.01.2017