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


Синтаксис шаблона

Внимание

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

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

Внимание

Шаблоны включают только родительские объекты машинного обучения, но не их компоненты. Сущности в шаблонах заключены в фигурные скобки ({}). Шаблоны могут включать сущности и сущности с ролями. Pattern.any — это сущность, используемая только в шаблонах.

Синтаксис шаблона поддерживает следующий синтаксис:

Function Синтаксис Уровень вложенности Пример
Сущность {} — фигурные скобки 2 Где форма {имя-сущности}?
необязательно [] — квадратные скобки

Существует ограничение в 3 уровня вложенности для любой комбинации необязательного и группового
2 Вопросительный знак является необязательным [?]
группирование () — круглые скобки 2 имеет значение (a | b)
or | — вертикальная черта (канал)

Максимальное количество вертикальных полос (Или) в одной группе — 2
- Где форма ({form-name-short} | {form-name-long} | {form-number})
начало и (или) конец высказывания ^ — знак вставки - ^начать высказывание
высказывание сделано^
^строгое буквальное совпадение всего высказывания с сущностью {число}^

Синтаксис вложения в шаблонах

Необязательный синтаксис с квадратными скобками может быть двухуровневым. Например: [[this]is] a new form. В этом примере разрешены следующие высказывания:

Пример вложенного необязательного высказывания Описание
это новая форма соответствует всем словам в шаблоне
является новой формой соответствует внешнему необязательному слову и необязательным словам в шаблоне
новая форма соответствует только обязательным словам

Синтаксис группировки с круглыми скобками может быть двухуровневым. Например: (({Entity1:RoleName1} | {Entity1:RoleName2} ) | {Entity2} ). Эта функция позволяет сопоставить любой из трех объектов.

Если Сущность1 — Location с такими ролями, как происхождение (Сиэтл) и место назначения (Cairo), а Сущность 2 — известное имя здания из объекта списка (RedWest-C), следующие высказывания будут соответствовать этому шаблону:

Пример вложенного группирующего высказывания Описание
RedWest-C соответствует внешнему группирующему объекту
Seattle соответствует одной из внутренних группирующих сущностей
Каир соответствует одной из внутренних группирующих сущностей

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

Комбинация группировки с необязательным синтаксисом имеет ограничение в 3 уровня вложенности.

Допустимо Пример
Да ( [ ( test1 | test2 ) ] | test3 )
No ( [ ( [ test1 ] | test2 ) ] | test3 )

Пределы вложенности для групп с синтаксисом or-ing

Комбинация группировки с синтаксисом or-ing имеет ограничение в 2 вертикальные полосы.

Допустимо Пример
Да (test1 | test2 | (test3 | test4))
No ( test1 | test2 | test3 | ( test4 | test5 ) )

Синтаксис, предназначенный для добавления сущности в шаблон

Чтобы добавить сущность в шаблон, заключите имя сущности в фигурные скобки, например Who does {Employee} manage?.

Шаблон с сущностью
Who does {Employee} manage?

Синтаксис, предназначенный для добавления сущности и роли в шаблон

Роль сущности обозначается как {entity:role}: имя сущности, за которым следует двоеточие, а затем имя роли. Чтобы добавить сущность с ролью в шаблон, заключите имя сущности и имя роли в фигурные скобки, например Book a ticket from {Location:Origin} to {Location:Destination}.

Шаблон с ролями сущности
Book a ticket from {Location:Origin} to {Location:Destination}

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

Сущность Pattern.any позволяет добавлять сущность переменной длины в шаблон. Если формат шаблона соблюдается, Pattern.any может быть любой длины.

Чтобы добавить сущность Pattern.any в шаблон, заключите сущность Pattern.any в фигурные скобки, например How much does {Booktitle} cost and what format is it available in?.

Шаблон с сущностью Pattern.any
How much does {Booktitle} cost and what format is it available in?
Наименования книг в шаблоне
Сколько стоит эта книга и в каком формате она доступна?
Сколько стоит запрос и в каком формате она доступна?
Сколько стоит Загадочное ночное убийство собаки и в каком формате она доступна?

Слова в названии книги не сбивают с толку LUIS, потому что LUIS знает, где заканчивается название книги, на основе сущности Pattern.any.

Явные списки

создайте Явный список через API разработки, чтобы разрешить исключение, когда:

  • Ваш шаблон содержит Pattern.any
  • И этот синтаксис шаблона допускает возможность неправильного извлечения сущности на основе высказывания.

Предположим, имеется шаблон, содержащий и дополнительный синтаксис [] и синтаксис сущности {}, которые объединены так, что данные будут извлекаться некорректно.

Рассмотрим шаблон "[найти] сообщение о {тема} [от {человек}]".

В следующей фразе сущности тема и человек извлекаются правильно и неправильно:

Фраза Объект Правильное извлечение
сообщение о собаках от Глеба тема=собаки
человек=Глеб
сообщение о мужчине из Ла-Манча тема=мужчина
человек=Ла-Манч
X

В предыдущей таблице тема должна быть the man from La Mancha (название книги), но поскольку в теме есть необязательное слово from, заголовок предсказывается неверно.

Чтобы исправить это исключение в шаблоне, добавьтеthe man from la mancha как сопоставление явного списка для сущности {тема}, используя API авторизации для явного списка.

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

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

Шаблон с необязательным текстом Значение
[find] email about {subject} [from {person}] find и from {person} являются необязательными
`Можете ли вы мне помочь [?] Знак препинания указывать необязательно

Знаки препинания (?, !, .) следует игнорировать, и вам нужно игнорировать их, используя синтаксис квадратных скобок в шаблонах.

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

Узнайте больше о шаблонах:

Разберитесь, как тональность возвращается в ответе .json.