Шаблоны в приложениях LUIS

Важно!

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

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

Шаблоны устраняют низкую точность намерения

Рассмотрите приложение Human Resources, в котором сообщается об организационной структуре в отношении сотрудника. LUIS возвращает задействованных сотрудников на основе имени и связей сотрудника. Рассмотрим сотрудника Тома, его менеджера по имени Алиса и группу подчиненных с именами: Майкл, Ребекка и Карл.

Снимок экрана: использование шаблонов

Высказывания Прогнозирование намерения Показатель намерения
Кто подчиненный Тома? GetOrgChart 0,30
Кто подчиненный Тома? GetOrgChart 0,30

Если приложение имеет от 10 до 20 фраз с разной длиной предложения, другим порядком слов и даже разными словами (синонимы "подчиненные", "управлять", "отчет"), LUIS может вернуть низкий показатель точности. Чтобы помочь LUIS понять важность порядка слов, создайте шаблон.

Шаблоны помогают в таких ситуациях:

  • Оценка намерений низкая
  • Правильное намерение — это не самый высокий результат, но наиболее близкий к наивысшему.

Шаблоны не гарантируют прогнозирование намерения

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

Шаблоны не улучшают обнаружение сущности машинного обучения

Шаблон в первую очередь предназначен для помощи в прогнозировании намерений и ролей. Сущность "pattern.any" используется для извлечения сущностей произвольной формы. Хотя шаблоны используют сущности, шаблон не помогает обнаружить сущность машинного обучения.

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

Шаблоны используют роли сущностей

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

Прогнозирование оценок с шаблонами и без них

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

Регулярные выражения

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

Сущность Pattern.any

Сущность Pattern.any позволяет найти данные произвольной формы, в которых формулировка сущности затрудняет определение ее окончание из остальной части высказывания.

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

  • "Где находится HRF-123456?"
  • "Кто составил HRF-123234?"
  • "Был ли HRF-456098 опубликован на французском языке?"

Однако каждый документ имеет как форматированное имя (используется в приведенном выше списке), так и удобное для восприятия имя, например, запрос о переводе сотрудника в компанию 2018 версии 5.

Речевые фрагменты с понятным для человека именем могут выглядеть следующим образом:

  • "Где находится Запрос о переводе сотрудника в компанию 2018 версии 5?"
  • "Кто составил "Запрос о переводе сотрудника в компанию 2018 версии 5"?"
  • Был ли Запрос о переводе сотрудника в компанию 2018 версии 5 опубликован на французском языке?"

Речевые фрагменты включают слова, из-за которых LUIS может неправильно определить окончание сущности. С помощью сущности Pattern.any в шаблоне можно указать начало и конец имени документа, что позволит LUIS правильно извлекать имя формы. Например, можно использовать следующие речевые фрагменты в шаблоне:

  • Где находится {FormName} [?]
  • Кто создатель {FormName} [?]
  • Был ли {FormName} опубликован на французском языке[?]

Рекомендации по работе с шаблонами:

Добавляйте шаблоны в последующих итерациях

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

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

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

Не добавляйте слишком много шаблонов

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

Компоненты

В машинном обучении функция — это отличительный признак или атрибут данных, наблюдаемых системой.

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

Например, функцию можно описать так: f(x) = y. В примере речевого фрагмента функция указывает на место, где нужно искать отличительный признак. Используйте эти сведения для создания своей схемы.

Типы функций

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

  • Функция списка фраз
  • Модель (намерение или сущность) как функция

Найдите функции в вашем примере речевых фрагментов

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

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

  • формы множественного числа;
  • времена глаголов;
  • Сокращения
  • написание по буквам и орфографические ошибки

Поскольку по тексту распознается признак, определите, должен ли текст:

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

Создание списка фраз для концепции

Список фраз — это список слов или фраз, описывающих концепцию. Список фраз применяется в качестве совпадения независимо от регистра уровня лексемы.

При добавлении списка фраз можно задать эту функцию как глобальную. Глобальная функция применяется ко всему приложению.

Когда используется список фраз

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

Как используется список фраз

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

  1. Чтобы начать работу с сущностью машинного обучения
  2. Добавьте пример речевых фрагментов.
  3. Установите метку с помощью сущности машинного обучения.
  4. Добавьте список фраз
  5. Добавьте слова со сходным значением. Не добавляйте все возможные слова или фразы. Вместо этого добавьте только несколько слов или фраз. Затем выполните повторное обучение и публикацию.
  6. Проверьте и добавьте предложенные слова.

Типовой сценарий для списка фраз

Типовой сценарий для списка фраз — увеличение слов, относящихся к определенной идее.

Медицинские термины — хороший пример слов, которым может потребоваться список фраз, чтобы повысить их значимость. Эти термины могут иметь определенные физические, химические, терапевтические или абстрактные значения. Без списка фраз приложение LUIS не знает, что термины важны для вашей предметной области.

Например, для извлечения медицинских терминов:

  1. Создайте пример речевых фрагментов и пометьте медицинские термины в этих фрагментах.
  2. Создайте список фраз с примерами терминов, относящихся к предметной области. Этот список фраз должен включать в себя фактический термин с пометкой и другие термины, описывающие ту же концепцию.
  3. Добавьте список фраз в сущность или подсущность, которая извлекает концепцию, используемую в списке фраз. Наиболее распространенный сценарий — это компонент (дочерний) сущности машинного обучения. Если список фраз будет применяться ко всем намерениям или сущностям, пометьте список фраз в качестве глобального. Флаг enabledForAllModels позволяет управлять этой областью модели в API.

Лексема соответствует списку фраз

Список фраз всегда применяется на уровне лексемы. В следующей таблице показано, как список фраз, содержащий слово Ann (Анна), применяется к вариациям одних и тех же символов в указанном порядке.

Вариация лексемы "Ann" (Анна) Совпадение списка фраз при обнаружении лексемы
ANN
aNN
Да — лексема — Ann
Ann's Да — лексема — Ann
Anne Нет — лексема — Anne

Модель в качестве функции помогает другой модели

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

При добавлении модели в качестве функции можно задать эту функцию следующим образом.

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

Когда необходимо использовать сущность в качестве функции в намерении

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

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

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

Сущность (A) должна добавляться в качестве функции в другую сущность (B), если обнаружение этой сущности (A) является значимым для прогноза сущности (B).

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

  • Адрес доставки (сущность машинного обучения):
    • Номер улицы (подсущность)
    • Почтовый адрес (подсущность)
    • Город (подсущность)
    • Штат или провинция (подсущность)
    • Страна/регион (подсущность)
    • Почтовый индекс (подсущность)

Вложенные подсущности с функциями

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

Подсущность может содержать в качестве функции как список фраз, так и модель (другую сущность).

Если в подсущности содержится список фраз, она увеличивает словарь концепции, но не добавляет информации в ответ JSON прогноза.

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

Требуемые компоненты

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

Если текст речевого фрагмента не соответствует требуемой функции, он не будет извлечен.

Для требуемой функции используется сущность, не относящаяся к машинному обучению.

  • Сущность регулярного выражения
  • Сущность списка
  • Предварительно созданная сущность

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

Продолжаем рассматривать пример адреса доставки.

Адрес доставки (сущность, прошедшая машинное обучение)

  • Номер улицы (подсущность)
  • Почтовый адрес (подсущность)
  • Название улицы (подсущность)
  • Город (подсущность)
  • Штат или провинция (подсущность)
  • Страна/регион (подсущность)
  • Почтовый индекс (подсущность)

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

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

В качестве примера требуемой функции рассмотрим возможность обнаружения адресов. Можно предположить, что номер улицы — обязательный элемент. Это позволит пользователю ввести "1 Microsoft Way" или "один Microsoft Way", и оба варианта будут преобразованы в цифру "1" для подсущности номера улицы. Дополнительные сведения приведены в статье Предварительно созданная сущность.

Требуемая функция с сущностями списка

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

Предположим, что ваша компания поставляет товары только в ограниченное количество стран/регионов. Можно создать сущность списка, которая включает несколько способов, чтобы ссылаться на страну/регион вашего клиента. Если приложение LUIS не находит точное совпадение в тексте речевого фрагмента, то сущность (которая содержит требуемую функцию сущности списка) не возвращается в прогнозе.

Каноническое имя** Синонимы
США США
США
США
США
0

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

Требуемая функция с использованием сущностей регулярного выражения

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

В примере адреса доставки можно создать регулярное выражение, которое определяет правила синтаксиса почтовых индексов страны/региона.

Глобальные функции

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

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

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

Объедините функции для удобства

Для описания признака или концепции можно использовать несколько функций. При распространенном связывании должно использоваться следующее.

Пример. Функции сущностей для бронирования билетов в приложении для путешествий

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

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

Снимок экрана: пример сущностей для приложения для резервирования билетов.

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

Тип Сущность места убытия Сущность места прибытия
Модель как функция Предварительно созданная сущность geographyV2 Предварительно созданная сущность geographyV2
Список фраз Слова, связанные с местом убытия: начало в, начинается с, отъезд Слова, связанные с местом назначения: в, прибыть, приземлиться в, поехать, направляться, оставаться, отправляться
Список фраз Коды аэропортов — общий список для места убытия и места прибытия Коды аэропортов — общий список для места убытия и места прибытия
Список фраз Названия аэропортов — общий список для места убытия и места прибытия Коды аэропортов — общий список для места убытия и места прибытия

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

Сведения о сопоставлении функций возвращаются только для моделей, а не для списков фраз, поскольку в JSON-прогнозировании возвращаются только модели.

Создание пометок бронирования билетов в намерении

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

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

Снимок экрана: добавление меток для примера высказывания.

Пример: приложение заказа пиццы

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

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

Снимок экрана: сущность машинного обучения с разными вложенными сущностями.

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

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

Снимок экрана: сущность машинного обучения с множеством списков фраз в качестве функций.

Правильно помеченный пример речевых фрагментов отображает способ показа вложенных сущностей.

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