Обработка ошибок интерпретации Cortana

Мне было интересно, как лучше всего справиться с ошибками интерпретации, которые иногда делает Кортана.

Например; Я строю бота, который обрабатывает некоторые намерения домашней автоматизации для меня, используя готовые объекты домашней автоматизации. Теперь я добавил намерение с именем HomeAutomation.ActivateScene. Это предназначено для активации определенного набора сцен в моем программном обеспечении домашней автоматизации.

Теперь это, вероятно, мой не родной акцент, но Кортана иногда не интерпретирует точные слова, которые я говорю. Это происходит главным образом со словом "сцена", которое она иногда переводит как "видение", "старший" или "высказывание", которые звучат одинаково.

Итак, теперь мои вопросы:

  1. Должен ли я принять это во внимание или положиться на Кортану, улучшающего ее слух?
  2. Если нет, я могу убедиться, что 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);
Другие вопросы по тегам