Обработка ошибок интерпретации Cortana
Мне было интересно, как лучше всего справиться с ошибками интерпретации, которые иногда делает Кортана.
Например; Я строю бота, который обрабатывает некоторые намерения домашней автоматизации для меня, используя готовые объекты домашней автоматизации. Теперь я добавил намерение с именем HomeAutomation.ActivateScene. Это предназначено для активации определенного набора сцен в моем программном обеспечении домашней автоматизации.
Теперь это, вероятно, мой не родной акцент, но Кортана иногда не интерпретирует точные слова, которые я говорю. Это происходит главным образом со словом "сцена", которое она иногда переводит как "видение", "старший" или "высказывание", которые звучат одинаково.
Итак, теперь мои вопросы:
- Должен ли я принять это во внимание или положиться на Кортану, улучшающего ее слух?
- Если нет, я могу убедиться, что LUIS получает правильную интерпретацию; но как лучше? Выучите эти другие слова как часть тренировки намерений? Или как-то научиться понимать звук-любить за определенное слово?
Любое руководство будет оценено!
2 ответа
Вы можете попробовать воспламенение распознавания речи, которое представляет собой процесс создания приложения LUIS, которое идентифицирует слова, которые вы хотите, чтобы ваш навык Cortana распознал, и связывает его с навыком Cortana. В приложении LUIS вы бы добавили несколько репрезентативных высказываний и пометили слова, которые вы хотите распознать как объекты.
Здесь есть статья, описывающая это: https://blog.botframework.com/2017/06/26/Speech-To-Text/
Если вы используете C# и диалоги, вы можете попробовать поиграть с параметрами PromptOptionsWithSynonyms: https://docs.microsoft.com/en-us/dotnet/api/microsoft.bot.builder.dialogs.promptoptionswithsynonyms-1.-ctor?view=botbuilder-3.8. Если это просто несколько слов, которые неверно истолкованы, то это немного хак, но вы можете попытаться добавить ошибки как синонимы для "сцены". Другой вариант - уменьшить параметр minScore в вызове функции PromptDialog.Choice (я не могу найти это в документации), но функция определяется так:
// Summary:
// Prompt for one of a set of choices.
//
// Parameters:
// context:
// The dialog context.
//
// resume:
// Resume handler.
//
// promptOptions:
// The prompt options.
//
// recognizeChoices:
// (Optional) if true, the prompt will attempt to recognize numbers in the users
// utterance as the index of the choice to return. The default value is "true".
//
// recognizeNumbers:
// (Optional) if true, the prompt will attempt to recognize ordinals like "the first
// one" or "the second one" as the index of the choice to return. The default value
// is "true".
//
// recognizeOrdinals:
// (Optional) if true, the prompt will attempt to recognize the selected value using
// the choices themselves. The default value is "true".
//
// minScore:
// (Optional) minimum score from 0.0 - 1.0 needed for a recognized choice to be
// considered a match. The default value is "0.4".
//
// Type parameters:
// T:
// The type of the options.
//
// Remarks:
// T should implement System.Object.ToString
public static void Choice<T>(IDialogContext context, ResumeAfter<T> resume, IPromptOptions<T> promptOptions, bool recognizeChoices = true, bool recognizeNumbers = true, bool recognizeOrdinals = true, double minScore = 0.4);