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


Переход с Language Understanding (LUIS) на понимание разговорного языка (Conversational Language Understanding, CLU)

Распознавание речи (CLU) — это облачное предложение искусственного интеллекта на языке ИИ Azure. Это новейшее поколение Распознавание речи (LUIS) и обеспечивает обратную совместимость с ранее созданными приложениями LUIS. В CLU используется современный интеллект машинного обучения, позволяющий пользователям создавать индивидуальную модель понимания естественного языка для прогнозирования намерений и сущностей в речевых фрагментах.

CLU предлагает следующие преимущества по сравнению с LUIS:

  • Улучшена точность с использованием передовых моделей машинного обучения для лучшей классификации намерений и извлечения сущностей. LUIS требует больше примеров для обобщения определенных понятий в намерениях и сущностях, в то время как более расширенное машинное обучение CLU снижает нагрузку на клиентов, требуя значительно меньше данных.
  • Поддержка многоязычия для изучения и обучения модели. Тренируйте проекты на одном языке и сразу предсказывайте намерения и сущности на 96 языках.
  • Простота интеграции с различными CLU и специализированными проектами по ответам на вопросы с помощью управления рабочими процессами оркестрации.
  • Возможность добавлять данные тестирования в интерфейс с помощью Language Studio и API для оценки производительности модели до развертывания.

Чтобы приступить к работе, можно создать проект или перенести приложение LUIS.

Сравнение LUIS и CLU

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

Функции LUIS Функции CLU После миграции
Сущности машинного обучения и структурированные ML Компоненты обученных сущностей Сущности, полученные с использованием машинного обучения и не содержащие подсущностей, будут переданы как сущности CLU. Структурированные сущности машинного обучения будут передавать только конечные узлы (подсущности низшего уровня, которые не имеют собственных подсущностей) в качестве сущностей в CLU. Имя сущности в CLU будет именем подсущности, объединённой с родительским элементом. Например, Order.Size
Перечисление, регулярные выражения и предопределённые сущности Список, regex и предсозданные компоненты сущностей Список, regex и предварительно созданные сущности будут переданы как сущности в CLU с заполненным компонентом сущности на основе типа сущности.
Pattern.Any Объекты В настоящее время недоступно Pattern.Any объекты будут удалены.
Единая культура для каждого приложения Многоязычные модели позволяют использовать несколько языков для каждого проекта. Основной язык вашего проекта будет установлен как культура вашего приложения LUIS. Проект можно обучить для расширения до других языков.
Роли сущности Роли больше не нужны. Роли сущностей будут передаваться как сущности.
Параметры для: нормализация знаков препинания, нормализация диакритических знаков, нормализация формы слов, использование всех данных для обучения Параметры больше не нужны. Параметры не будут переданы.
Шаблоны и функции списка фраз Функции шаблонов и списков фраз больше не требуются. Шаблоны и функции списка фраз не будут переданы.
Функции сущности Компоненты сущности Список или предварительно созданные сущности, добавленные как функции к сущности, будут перенесены как добавленные компоненты к этой сущности. Характеристики сущностей не будут передаваться для интенций.
Намерения и высказывания Намерения и высказывания Будут переданы все намерения и высказывания. Речевые фрагменты будут помечены их передаваемыми сущностями.
Идентификаторы GUID приложений Имена проектов Проект будет создан для каждого перенесенного приложения с именем приложения. Все специальные символы в именах приложений будут удалены в CLU.
Управление версиями Каждый раз, когда вы проводите обучение, создается модель, которая выступает в качестве версии вашего проекта. Проект будет создан для выбранной версии приложения.
Оценка с помощью пакетного тестирования Оценка с помощью наборов тестирования Требуется добавление тестового набора данных.
Контроль доступа на основе ролей (RBAC) для ресурсов LUIS Контроль доступа на основе ролей (RBAC) доступен для языковых ресурсов. Языковой ресурс RBAC необходимо добавить вручную после миграции.
Единый режим обучения Стандартные и расширенные режимы обучения Обучение потребуется после миграции приложений.
Два слота публикации и публикация версий Десять слотов для развертывания с пользовательскими названиями Развертывание потребуется после миграции и обучения приложения.
Поддержка API разработки и пакета SDK LUIS в .NET, Python, Java и Node.js CLU, создающий REST API. Дополнительные сведения см. в статье быстрого запуска по API разработки CLU. Для использования API разработки CLU потребуется рефакторинг .
Поддержка API среды выполнения LUIS и пакетов SDK в .NET, Python, Java и Node.js API среды выполнения CLU. Поддержка пакета SDK среды выполнения CLU для .NET и Python. Дополнительные сведения см. в разделе Способ вызова API. Для использования ответа API среды выполнения CLU потребуется рефакторинг .

Перенос приложений LUIS

Выполните следующие действия, чтобы перенести приложение LUIS с помощью портала LUIS или REST API.

Перенос приложений LUIS с помощью портала LUIS

Выполните следующие действия, чтобы начать миграцию с помощью портала LUIS:

  1. После входа на портал LUIS нажмите кнопку на баннере в верхней части экрана, чтобы запустить мастер миграции. Миграция будет копировать в CLU только те приложения LUIS, которые вы выбрали.

    Снимок экрана: баннер миграции на портале LUIS.

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

    Снимок экрана: окно обзора миграции.

  2. Определите ресурс языка, в который вы хотите перенести приложение LUIS. Если вы уже создали ресурс языка, выберите подписку Azure, за которой следует ресурс языка, а затем нажмите кнопку "Далее". Если у вас нет ресурса языка, щелкните ссылку, чтобы создать новый ресурс языка. Затем выберите ресурс и нажмите кнопку "Далее".

    Снимок экрана: окно выбора ресурса.

  3. Выберите все приложения LUIS, которые требуется перенести, и укажите каждую из их версий. Выберите Далее. После выбора приложения и версии вам будет показано сообщение, информирующее о любых функциях, которые не будут перенесены из вашего приложения LUIS.

    Примечание.

    Специальные символы не поддерживаются пониманием разговорного языка. Все специальные символы в выбранных именах приложений LUIS будут удалены в новых перенесенных приложениях. Снимок экрана: окно выбора приложения.

  4. Просмотрите выбранные ресурсы языка и приложения LUIS. Нажмите кнопку "Готово ", чтобы перенести приложения.

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

    Снимок экрана: окно хода выполнения миграции приложения.

  6. После переноса приложений можно выполнить следующие действия.

Часто задаваемые вопросы

Какая версия JSON LUIS поддерживается CLU?

CLU поддерживает модель JSON версии 7.0.0. Если формат JSON более старый, сначала его необходимо импортировать в LUIS, а затем экспортировать из LUIS с последней версией.

Чем различаются сущности в CLU?

В CLU одна сущность может иметь несколько компонентов сущностей, которые являются различными методами извлечения. Затем эти компоненты объединяются вместе с помощью правил, которые можно определить. Доступные компоненты:

  • Уроки: Метки, эквивалентные сущностям в LUIS, используются для обучения модели машинного обучения предсказывать сущности на основе содержимого и контекста предоставленных меток.
  • Список: как и сущности списка в LUIS, компоненты списка точно соответствуют набору синонимов и сопоставляют их с нормализованным значением, называемым ключом списка.
  • Предварительно созданные компоненты: предварительно созданные компоненты позволяют определить сущность с предварительно созданными средствами извлечения для распространенных типов, доступных как в LUIS, так и в CLU.
  • Regex: компоненты Regex используют регулярные выражения для захвата пользовательски определённых шаблонов, точно так же, как сущности регулярных выражений в LUIS.

Сущности в LUIS будут перенесены как сущности с тем же именем в CLU, с аналогичными компонентами.

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

Пример:

Сущность LUIS:

  • Заказ пиццы
    • Топпинг
    • Размер

Перенесенная сущность LUIS в CLU:

  • Заказ Пиццы.Topping
  • Заказ пиццы.Размер

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

Дополнительные сведения о компонентах сущностей см. в разделе "Компоненты сущности".

Как роли сущностей передаются в CLU?

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

Как функции сущности передаются в CLU?

Сущности, используемые как характеристики намерений, не будут переданы. Сущности, используемые в качестве функций для других сущностей, заполняют соответствующий компонент сущности. Например, если сущность списка с именем SizeList была использована в качестве признака для сущности, обученной с помощью машинного обучения, с именем Size, то сущность Size будет передана в CLU со значениями списка из SizeList, добавленными в ее компонент списка. То же самое применяется для предварительно созданных и регулярных сущностей.

Чем отличаются оценки достоверности сущностей в CLU?

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

Каким образом обеспечивается многоязычность в понимании языка в разговоре?

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

Пример:

Обучающее высказывание (английский): Как вы?

Помеченное намерение: Приветствие

Исполняемая фраза (французский): Как дела?

Прогнозируемое намерение: приветствие

В чем преимущества точности CLU по сравнению с LUIS?

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

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

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

Что делать, если функции, которые я использую в LUIS, больше не присутствуют?

В LUIS есть несколько функций, которые больше не будут доступны в CLU. Сюда входит возможность заниматься инженерией признаков, использование шаблонов и сущностей pattern.any, а также структурированных сущностей. Если у вас были зависимости от этих функций в LUIS, используйте следующее руководство.

  • Шаблоны: Шаблоны были добавлены в LUIS, чтобы помочь классификации намерений через определение выражений регулярного шаблона. Это включало возможность определять намерения на основе шаблонов (без примеров речевых фрагментов). CLU может обобщать, используя современные модели. Вы можете указать несколько вариантов высказываний, которые соответствуют определённому образцу, связанному с намерением в CLU, и, скорее всего, разные шаблоны будут классифицированы как основное намерение без необходимости использования шаблона. Это упрощает требование сформулировать эти шаблоны, которые были ограничены в LUIS, и обеспечивают более эффективную классификацию намерений.

  • Функции списка фраз: возможность связать функции в основном возникла, чтобы помочь классификации намерений путем выделения ключевых элементов и функций для использования. Это больше не требуется, так как глубокие модели, используемые в CLU, уже обладают способностью определять элементы, присущие языку. В свою очередь удаление этих функций не будет влиять на способность классификации модели.

  • Структурированные сущности: возможность определения структурированных сущностей была в основном для включения многоуровневого анализа речевых фрагментов. При использовании различных возможностей вложенных сущностей LUIS требует, чтобы все различные сочетания сущностей были определены и представлены модели в качестве примеров. В CLU эти структурированные сущности больше не поддерживаются, так как перекрывающиеся компоненты обучения не поддерживаются. Существует несколько возможных подходов к обработке этих структурированных извлечений:

    • Неоднозначные извлечения: в большинстве случаев обнаружение конечных сущностей достаточно, чтобы понять необходимые элементы в полном диапазоне. Например, структурированная сущность, например Trip , которая полностью охватывает источник и место назначения (Лондон в Нью-йорк или Дом для работы) можно определить с отдельными диапазонами, прогнозируемыми для источника и назначения. Их наличие в виде отдельных прогнозов сообщит вам о сущности Trip.
    • Неоднозначные извлечения: когда границы разных дочерних сущностей не очень ясны. Чтобы проиллюстрировать, рассмотрим пример: Я хочу заказать пиццу пепперони и вегетарианскую пиццу с дополнительным сыром. Хотя различные типы пиццы, а также дополнения можно определить, их извлечение без контекста создаст некоторую неопределенность относительно того, где добавляется дополнительный сыр. В этом случае степень диапазона основана на контексте и требуется машинное обучение для определения этого. Для неоднозначных извлечений можно использовать один из следующих подходов:
  1. Объедините под-объекты в разные компоненты объекта в пределах одной и той же сущности.

Пример:

Реализация LUIS:

  • Заказ пиццы (сущность)
    • Размер (подсущность)
    • Количество (подсущность)

Реализация CLU:

  • Заказ пиццы (сущность)
    • Размер (компонент сущности списка: малый, средний, большой)
    • Количество (предварительно созданный компонент сущности: число)

В CLU вы выделите весь диапазон для заказа пиццы, включая размер и количество, что вернет заказ пиццы с ключом для размера и числовым значением для количества в одном объекте сущности.

  1. Для более сложных проблем, в которых сущности содержат несколько уровней глубины, можно создать проект для каждого уровня глубины в структуре сущностей. Это дает возможность:
  • Передайте высказывание в каждый проект.
  • Объедините анализы каждого проекта на этапе, следующем за CLU.

Подробный пример этой концепции см. в примерах проектов пиццы, доступных на сайте GitHub.

Как я могу управлять версиями в CLU?

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

Вы можете экспортировать проекты CLU с помощью Language Studio или программно и хранить различные версии ресурсов локально.

Почему классификация CLU отличается от LUIS? Как работает классификация None?

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

Требуется ли больше данных для моделей CLU, чем LUIS?

Новые модели CLU имеют лучшее семантическое представление о языке, чем в LUIS, и, в свою очередь, помогают сделать модели обобщенными с существенным сокращением данных. Хотя вы не должны стремиться уменьшить объем данных, которые у вас есть, следует ожидать более высокую производительность и устойчивость к вариациям и синонимам в CLU по сравнению с LUIS.

Если я не переносю мои приложения LUIS, они будут удалены?

Существующие приложения LUIS будут доступны до 1 октября 2025 г. После этого вы больше не сможете использовать эти приложения, конечные точки службы больше не будут работать, и приложения будут окончательно удалены.

Поддерживаются ли .LU-файлы в CLU?

Только формат JSON поддерживается CLU. Вы можете импортировать свои .LU-файлы в LUIS и экспортировать их в формате JSON, или выполните описанные выше действия по миграции для вашего приложения.

Каковы ограничения службы CLU?

Подробнее см. в сведениях об ограничениях службы.

Необходимо ли рефакторинг кода при переносе приложений из LUIS в CLU?

Объекты API приложений CLU отличаются от LUIS, поэтому рефакторинг кода потребуется.

Если вы используете программные и интерфейсы выполнения API LUIS, их можно заменить эквивалентными API.

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

API среды работы CLU: новый запрос и ответ API включает в себя множество таких параметров, как запрос, прогноз, главное намерение, намерения, сущности и их значения. Объект ответа CLU предлагает более простой подход. Прогнозы сущностей предоставляются так же, как они находятся в тексте высказываний, и вся дополнительная информация, такая как разрешение или ключи списка, предоставляется в дополнительных параметрах, называемых extraInformation и resolution.

Пакет SDK среды выполнения .NET или Python CLU можно использовать для замены пакета SDK среды выполнения LUIS. В настоящее время для CLU нет пакета SDK для разработки.

Как время обучения отличается в CLU? Чем стандартное обучение отличается от углубленного обучения?

CLU предлагает стандартную подготовку, которая обучает и учится на английском языке и сравнима с учебным временем LUIS. Он также предлагает расширенное обучение, которое занимает значительно больше времени, так как оно расширяет обучение на всех других поддерживаемых языках. API для обучения останется асинхронным, и вам потребуется оценить изменения в процессе DevOps, который вы используете в вашем решении.

Как интерфейс изменился в CLU по сравнению с LUIS? Как отличается жизненный цикл разработки?

В LUIS осуществляется создание, обучение, тестирование и публикация, тогда как в CLU осуществляется создание, обучение, оценка, развертывание и тестирование.

  1. Сборка: В CLU можно сначала определить намерения, сущности и речевые фрагменты, прежде чем приступать к обучению. CLU также предоставляет возможность указывать тестовые данные при создании приложения для оценки моделей. Оценка показывает, как хорошо ваша модель работает на тестовых данных, и предоставляет вам метрики точности, полноты и F1.
  2. Обучение: При каждом обучении вы создаете модель с заданным именем. Вы можете перезаписать уже обученную модель. Вы можете указать стандартный или расширенный учебный курс и определить, хотите ли вы использовать тестовые данные для оценки, или процент данных обучения, которые будут удалены из обучения и использоваться в качестве тестовых данных. После завершения обучения вы можете оценить, насколько хорошо ваша модель справляется с задачами во внешней среде.
  3. Развертывание: после завершения обучения и когда у вас есть модель с именем, она может быть развернута для создания прогнозов. Развертывание также называется и имеет назначенную модель. Для одной модели может быть несколько развертываний. Развертывание можно перезаписать с другой моделью или заменить модели другими развертываниями в проекте.
  4. Тест. После завершения развертывания его можно использовать для прогнозирования через конечную точку развертывания. Вы также можете протестировать его на странице тестового развертывания в студии.

Этот процесс отличается от LUIS, где идентификатор приложения был привязан ко всему, и вы развернули определённую версию приложения в тестовых или продуктивных слотах.

Это будет влиять на используемые процессы DevOps.

Поддерживает ли CLU поддержку контейнеров?

Нет, вы не можете экспортировать CLU в контейнеры.

Как будут называться приложения LUIS в CLU после миграции?

Все специальные символы в имени приложения LUIS будут удалены. Если длина очищенного имени превышает 50 символов, будут удалены дополнительные символы. Если имя после удаления специальных символов пусто (например, если имя приложения LUIS было @@), новое имя будет не указано. Если уже существует проект распознавания естественного языка с тем же именем, к перенесенному приложению LUIS будет дополнено _1 для первого дубликата, а номер будет увеличиваться на 1 для каждого следующего дубликата. Если длина нового имени составляет 50 символов и ее необходимо переименовать, то последние 1 или 2 символа будут удалены, чтобы иметь возможность сцепить число и по-прежнему находиться в пределах ограничения на 50 символов.

Миграция с LUIS Q&A

Если у вас есть какие-либо вопросы, которые не были отвечены в этой статье, оставьте их на нашем разделе Microsoft Q&A.

Следующие шаги