Поделиться через


Рекомендации по распознаванию общения

Используйте приведенные ниже рекомендации, чтобы создать лучшие проекты в понимании общения.

Выбор согласованной схемы

Схема — это определение намерений и сущностей. Существуют различные подходы, которые можно принять при определении того, что следует создать в качестве намерения и сущности. Задайте себе следующие вопросы:

  • Какие действия или запросы я пытаюсь записать от пользователя?
  • Какие фрагменты информации относятся к каждому действию?

Как правило, действия и запросы можно рассматривать как намерения, а сведения, необходимые для выполнения этих запросов, являются сущностями.

Например, предположим, что вы хотите, чтобы клиенты отменяли подписки на различные продукты, которые вы предлагаете через чат-бот. Вы можете создать намерение отмены с различными примерами, такими как "Отмена службы Contoso" или "Остановить зарядку для подписки Fabrikam". Цель пользователя — отменить, а служба Contoso или подписка Fabrikam — это подписки, которые они хотят отменить.

Чтобы продолжить, создайте сущность для подписок. Затем можно моделировать весь проект для отслеживания действий в качестве намерений и использования сущностей для заполнения этих действий. Такой подход позволяет отменить все, что вы определяете как сущность, например другие продукты. Затем вы можете иметь намерения для регистрации, продления и обновления, которые все используют подписки и другие сущности .

Предыдущая схема упрощает расширение существующих возможностей (отмена, обновление или регистрация) до новых целевых объектов путем создания новой сущности.

Другой подход заключается в моделировать информацию в качестве намерений и действий в качестве сущностей. Давайте рассмотрим тот же пример, когда клиенты смогут отменить подписки через чат-бот.

Вы можете создать намерение для каждой доступной подписки, например Contoso, с речевыми фрагментами, такими как "Отмена Contoso", "Остановить зарядку для служб Contoso" и "Отмена подписки Contoso". Затем вы создадите сущность для записи действия отмены . Вы можете определить различные сущности для каждого действия или консолидировать действия как одну сущность с компонентом списка, чтобы различать действия с разными ключами.

Эта схема упрощает расширение новых действий до существующих целевых объектов путем добавления новых сущностей или компонентов сущностей.

Не забудьте избежать попытки воронки всех понятий в намерения. Например, не пытайтесь создать намерение Cancel Contoso , которое предназначено только для одного конкретного действия. Намерения и сущности должны работать вместе для сбора всех необходимых сведений от клиента.

Вы также хотите избежать смешивания различных схем. Не создавайте половину приложения с действиями в качестве намерений и другой половины с информацией в качестве намерений. Чтобы получить возможные результаты, убедитесь, что он согласован.

Баланс данных обучения

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

Чтобы устранить этот сценарий, может потребоваться сократить набор обучения. Или вам может потребоваться добавить его. Чтобы вниз, можно:

  • Избавиться от определенного процента обучающих данных случайным образом.
  • Анализ набора данных и удаление избыточных повторяющихся записей, что является более систематическим способом.

Чтобы добавить в набор обучения, на вкладке "Метка данных" на вкладке " Маркировка данных" выберите "Предложить речевые фрагменты". Беседа Распознавание речи отправляет вызов в Azure OpenAI для создания аналогичных речевых фрагментов.

Снимок экрана: предложение речевых фрагментов в Language Studio.

Вы также должны искать непреднамеренные "шаблоны" в наборе обучения. Например, посмотрите, является ли набор обучения для определенного намерения нижним регистром или начинается с конкретной фразы. В таких случаях обучаемая модель может узнать эти непреднамеренные смещения в наборе обучения вместо того, чтобы обобщать.

Рекомендуется ввести многообразие регистра и препинания в наборе обучения. Если ваша модель, как ожидается, будет обрабатывать варианты, обязательно укажите набор обучения, который также отражает это разнообразие. Например, включите некоторые речевые фрагменты в правильном регистре и некоторые из них во всех строчных регистрах.

Четко помеченные речевые фрагменты

  • Убедитесь, что основные понятия, к которым относятся сущности, являются четко определенными и разделимыми. Проверьте, можно ли легко определить различия надежно. Если вы не можете, это отсутствие различия может указывать на то, что обучающий компонент также будет иметь трудности.

  • Если между сущностями есть сходство, убедитесь, что есть некоторый аспект ваших данных, который обеспечивает сигнал для разницы между ними.

    Например, если вы создали модель для бронирования рейсов, пользователь может использовать высказывание, например "Я хочу рейс из Бостона в Сиэтл". Город-источник и город назначения для таких речевых фрагментов, как ожидается, будет похожим. Сигналом для отличия города происхождения может быть то, что слово из часто предшествует ему.

  • Убедитесь, что все экземпляры каждой сущности помечены как в обучающих, так и в тестовых данных. Одним из способов является использование функции поиска для поиска всех экземпляров слова или фразы в данных, чтобы проверить правильность их метки.

  • Метка тестовых данных для сущностей, которые не имеют компонента обучения , а также для сущностей, которые делают. Эта практика помогает убедиться, что метрики оценки являются точными.

Использование стандартного обучения перед расширенным обучением

Стандартная подготовка является бесплатной и быстрее, чем расширенная подготовка. Это поможет быстро понять влияние изменения учебного набора или схемы во время сборки модели. После того как вы удовлетворены схемой, рассмотрите возможность использования расширенного обучения, чтобы получить лучшее качество модели.

Использование функции оценки

При создании приложения часто полезно перехватывать ошибки рано. Обычно рекомендуется добавить тестовый набор при создании приложения. Результаты обучения и оценки полезны при выявлении ошибок или проблем в схеме.

Компоненты и состав машинного обучения

Дополнительные сведения см. в разделе "Типы компонентов".

Использование порогового значения оценки None

Если вы видите слишком много ложных срабатываний, например высказываний вне контекста, помеченных как допустимые намерения, см . порог достоверности сведений о том, как это влияет на вывод.

  • Компоненты сущности без машинного обучения, такие как списки и регулярные выражения, не являются контекстными. Если вы видите список или регулярные сущности в непреднамеренных местах, попробуйте пометить синонимы списка как компонент машинного обучения.
  • Для сущностей можно использовать наученный компонент в качестве обязательного компонента, чтобы ограничить, когда создается сущность.

Например, предположим, что у вас есть сущность с именем "Количество билетов", которая пытается извлечь количество билетов, которые вы хотите зарезервировать для резервирования рейсов, для речевых фрагментов, таких как "Забронировать два билета завтра в Каир".

Как правило, вы добавляете предварительно созданный компонент для Quantity.Number этого уже извлекает все числа в речевых фрагментах. Однако если сущность была определена только с предварительно созданным компонентом, она также извлекает другие номера в рамках сущности "Количество билетов", например "Забронировать два билета завтра в Каир в 3 вечера".

Чтобы устранить эту проблему, вы пометите научился компонент в обучающих данных для всех чисел, которые должны быть количеством билетов. Теперь сущность имеет два компонента:

  • Предварительно созданный компонент, который может интерпретировать все числа.
  • Наученный компонент, который прогнозирует расположение количества билетов в предложении.

Если требуется обучаемый компонент, убедитесь, что количество билетов возвращается только при прогнозировании этого компонента в правильном контексте. Если вам также требуется предварительно созданный компонент, вы можете гарантировать, что возвращаемая сущность "Количество билетов" является как числом, так и правильной позицией.

Несоответствия модели адресов

Если модель слишком важна для небольших грамматических изменений, таких как регистр или диакритика, вы можете систематически управлять набором данных непосредственно в Language Studio. Чтобы использовать эти функции, выберите вкладку "Параметры " на левой панели и найдите раздел "Дополнительные параметры проекта".

Снимок экрана, на котором показан пример параметров расширенного проекта.

Во-первых, можно включить параметр включения преобразования данных для регистра, который нормализует регистр речевых фрагментов при обучении, тестировании и реализации модели. Если вы перешли из LUIS, вы можете распознать, что LUIS выполнил эту нормализацию по умолчанию. Чтобы получить доступ к этой функции через API, задайте normalizeCasing для параметра значение true. См. следующий пример.

{
  "projectFileVersion": "2022-10-01-preview",
    ...
    "settings": {
      ...
      "normalizeCasing": true
      ...
    }
...

Во-вторых, можно также включить параметр включения расширения данных для диакритических данных для создания вариантов данных обучения для возможных диакритических вариаций, используемых на естественном языке. Эта функция доступна для всех языков. Это особенно полезно для немецких и славянских языков, где пользователи часто пишут слова с помощью классических английских символов вместо правильных символов. Например, фраза "Переход к спортивному каналу" на французском языке : "Accédez à la chaîne sportive". Если эта функция включена, фраза "Присоединения a la chaine sportive" (без диакритических символов) также включается в набор данных обучения.

Если включить эту функцию, число речевых фрагментов набора обучения увеличивается. По этой причине может потребоваться соответствующим образом настроить размер обучающих данных. Текущее максимальное число речевых фрагментов после расширения составляет 25 000. Чтобы получить доступ к этой функции через API, задайте augmentDiacritics для параметра значение true. См. следующий пример.

{
  "projectFileVersion": "2022-10-01-preview",
    ...
    "settings": {
      ...
      "augmentDiacritics": true
      ...
    }
...

Чрезмерное превышение адресной модели

Клиенты могут использовать версию конфигурации traning LoraNorm, если модель неправильно переопределена. Примером такого поведения может быть следующий сценарий, в котором модель прогнозирует неправильное намерение с уверенностью в 100 %. Эта оценка делает параметром порогового значения достоверности проекта непригодным для использования.

Текст Прогнозируемое намерение Степень достоверности
"Кто построил Эйфелевую башню?" Sports 1.00
"Я смотрю на тебя сегодня?" QueryWeather 1.00
"Я надеюсь, что у вас есть хороший вечер". Alarm 1.00

Чтобы устранить этот сценарий, используйте 2023-04-15 версию конфигурации, которая нормализует оценки достоверности. Затем можно настроить параметр порогового значения доверия для достижения желаемого результата.

curl --location 'https://<your-resource>.cognitiveservices.azure.com/language/authoring/analyze-conversations/projects/<your-project>/:train?api-version=2022-10-01-preview' \
--header 'Ocp-Apim-Subscription-Key: <your subscription key>' \
--header 'Content-Type: application/json' \
--data '{
      "modelLabel": "<modelLabel>",
      "trainingMode": "advanced",
      "trainingConfigVersion": "2023-04-15",
      "evaluationOptions": {
            "kind": "percentage",
            "testingSplitPercentage": 0,
            "trainingSplitPercentage": 100
      }
}

После отправки запроса вы можете отслеживать ход выполнения задания обучения в Language Studio как обычно.

Примечание.

После обновления параметра проекта необходимо переобучение confidenceThreshold модели. После этого необходимо повторно опубликовать приложение, чтобы новое пороговое значение вошли в силу.

Нормализация в модели версии 2023-04-15

С моделью версии 2023-04-15 понимание общения обеспечивает нормализацию на уровне вывода, который не влияет на обучение.

Уровень нормализации нормализует оценки достоверности классификации в ограниченном диапазоне. Выбранный в данный момент диапазон находится в [-a,a] том месте, где "a" является квадратным корнем числа намерений. В результате нормализация зависит от количества намерений в приложении. Если количество намерений низко, уровень нормализации имеет небольшой диапазон для работы. При большом количестве намерений нормализация более эффективна.

Если эта нормализация не поможет намерениям, которые не являются областью действия, в том случае, если порог доверия можно использовать для фильтрации высказываний вне области, он может быть связан с количеством намерений в приложении. Рассмотрите возможность добавления дополнительных намерений в приложение. Или, если вы используете оркестрированную архитектуру, рассмотрите возможность объединения приложений, принадлежащих к одному домену.

Отладка созданных сущностей

Сущности — это функции, которые выдают диапазоны входных данных с соответствующим типом. Одна или несколько компонентов определяют функцию. Вы можете пометить компоненты по мере необходимости и решить, следует ли включить параметр "Объединить компоненты ". При объединении компонентов все перекрывающиеся диапазоны объединяются в один диапазон. Если параметр не используется, создается каждый диапазон отдельных компонентов.

Чтобы лучше понять, как выполняются отдельные компоненты, можно отключить параметр и задать для каждого компонента значение Not required. Этот параметр позволяет проверить отдельные диапазоны, создаваемые и экспериментировать с удалением компонентов, чтобы создавать только проблемные компоненты.

Оценка модели с помощью нескольких наборов тестов

Данные в проекте распознавания речи беседы могут иметь два набора данных: набор тестирования и обучающий набор. Если вы хотите использовать несколько наборов тестов для оценки модели, можно:

  • Присвойте набору тестов разные имена (например, test1 и test2).
  • Экспортируйте проект, чтобы получить JSON-файл со своими параметрами и конфигурацией.
  • Используйте JSON для импорта нового проекта. Переименуйте второй требуемый набор тестов на "test".
  • Обучите модель для выполнения оценки с помощью второго тестового набора.

Пользовательские параметры для целевых приложений и дочерних приложений

Если вы используете оркестрированные приложения, может потребоваться отправить настраиваемые переопределения параметров для различных дочерних приложений. Поле targetProjectParameters позволяет пользователям отправлять словарь, представляющий параметры для каждого целевого проекта. Например, рассмотрим приложение оркестратора с именем оркестратора с именем Orchestrator оркестрации между приложением для распознавания беседы с именем CLU1 и пользовательским приложением CQA1для ответа на вопросы. Если вы хотите отправить параметр с именем top в приложение для ответа на вопросы, можно использовать предыдущий параметр.

curl --request POST \
   --url 'https://<your-language-resource>.cognitiveservices.azure.com/language/:analyze-conversations?api-version=2022-10-01-preview' \
   --header 'ocp-apim-subscription-key: <your subscription key>' \
   --data '{
     "kind": "Conversation",
     "analysisInput": {
         "conversationItem": {
             "id": "1",
             "text": "Turn down the volume",
             "modality": "text",
             "language": "en-us",
             "participantId": "1"
         }
     },
     "parameters": {
         "projectName": "Orchestrator",
         "verbose": true,
         "deploymentName": "std",
         "stringIndexType": "TextElement_V8",
"targetProjectParameters": {
            "CQA1": {
                "targetProjectKind": "QuestionAnswering",
                "callingOptions": {
                    "top": 1
                }
             }
         }
     }
 }'

Копирование проектов между языковыми ресурсами

Часто можно скопировать проекты распознавания речи бесед из одного ресурса в другой с помощью кнопки "Копировать " в Language Studio. В некоторых случаях может быть проще копировать проекты с помощью API.

Сначала определите:

  • Имя исходного проекта.
  • Имя целевого проекта.
  • Ресурс исходного языка.
  • Целевой языковой ресурс, в который вы хотите скопировать его.

ВызовИТЕ API, чтобы авторизовать действие копирования и получить accessTokens для фактической операции копирования позже.

curl --request POST \ 
  --url 'https://<target-language-resource>.cognitiveservices.azure.com//language/authoring/analyze-conversations/projects/<source-project-name>/:authorize-copy?api-version=2023-04-15-preview' \ 
  --header 'Content-Type: application/json' \ 
  --header 'Ocp-Apim-Subscription-Key: <Your-Subscription-Key>' \ 
  --data '{"projectKind":"Conversation","allowOverwrite":false}' 

ВызовИТЕ API, чтобы завершить операцию копирования. Используйте ответ, полученный ранее в качестве полезных данных.

curl --request POST \ 
  --url 'https://<source-language-resource>.cognitiveservices.azure.com/language/authoring/analyze-conversations/projects/<source-project-name>/:copy?api-version=2023-04-15-preview' \ 
  --header 'Content-Type: application/json' \ 
  --header 'Ocp-Apim-Subscription-Key: <Your-Subscription-Key>\ 
  --data '{ 
"projectKind": "Conversation", 
"targetProjectName": "<target-project-name>", 
"accessToken": "<access-token>", 
"expiresAt": "<expiry-date>", 
"targetResourceId": "<target-resource-id>", 
"targetResourceRegion": "<target-region>" 
}'

Адрес внедоменные речевые фрагменты

Клиенты могут использовать только что обновленную версию 2024-08-01-preview конфигурации обучения (ранее 2024-06-01-preview), если модель имеет низкое качество высказываний вне домена. Пример этого сценария с конфигурацией обучения по умолчанию может быть следующим примером, в котором модель имеет три намерения: Sports, QueryWeatherи Alarm. Тестовые речевые фрагменты являются внедомными речевыми фрагментами и модель классифицирует их как InDomain с относительно высокой оценкой достоверности.

Текст Прогнозируемое намерение Степень достоверности
"Кто построил Эйфелевую башню?" Sports 0.90
"Я смотрю на тебя сегодня?" QueryWeather 1.00
"Я надеюсь, что у вас есть хороший вечер". Alarm 0.80

Чтобы устранить эту проблему, используйте 2024-08-01-preview версию конфигурации, созданную специально для решения этой проблемы, а также обеспечивая достаточно хорошее качество речевых InDomain фрагментов.

curl --location 'https://<your-resource>.cognitiveservices.azure.com/language/authoring/analyze-conversations/projects/<your-project>/:train?api-version=2022-10-01-preview' \
--header 'Ocp-Apim-Subscription-Key: <your subscription key>' \
--header 'Content-Type: application/json' \
--data '{
      "modelLabel": "<modelLabel>",
      "trainingMode": "advanced",
      "trainingConfigVersion": "2024-08-01-preview",
      "evaluationOptions": {
            "kind": "percentage",
            "testingSplitPercentage": 0,
            "trainingSplitPercentage": 100
      }
}

После отправки запроса вы можете отслеживать ход выполнения задания обучения в Language Studio как обычно.

Предупреждения:

  • Пороговое значение "Нет" для приложения (порог достоверности ниже, которое topIntent помечено как None) при использовании этой конфигурации обучения должно иметь значение 0. Этот параметр используется, так как эта новая конфигурация обучения атрибутирует определенную часть вероятности в домене вне домена, чтобы модель не была неправильно недоумечена о речевых фрагментах в домене. В результате пользователи могут увидеть немного сокращенные оценки достоверности для речевых фрагментов в домене по сравнению с конфигурацией обучения prod.
  • Мы не рекомендуем использовать эту конфигурацию обучения для приложений только с двумя намерениями, например IntentA и None, например.
  • Мы не рекомендуем использовать эту конфигурацию обучения для приложений с низким количеством речевых фрагментов для каждого намерения. Мы настоятельно рекомендуем не менее 25 речевых фрагментов на намерение.