2016-11-19 2 views
2

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

+1

Предел для намерений был недавно поднят с 80 до 500, проверьте это на https://docs.microsoft.com/en-in/azure/cognitive-services/luis/luis-boundaries –

ответ

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.

+1

Спасибо! Кроме того, похоже, что количество намерений будет смягчено в следующем выпуске LUIS. – happydevdays

+0

@happydevdays это здорово, но будьте осторожны с ценой: P – jcmontx

+0

сейчас до 40 намерений – JPThorne

Смежные вопросы