Перейти к основному содержимому

Именованные паттерны

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

Выделяют в именованные паттерны правила по семантическому признаку. Например:

  • синонимы;
  • различные варианты написания выражений, объединенных одним смыслом и встречающихся в определенной позиции в однотипных предложениях.

Как использовать в сценарии

Список именованных паттернов объявляется в теге patterns в .sc-файле. И представляет структуру:

patterns:
$<pattern name> = (pattern body | multiline body)
$<pattern name> = (pattern body) || converter=nameConverter

Каждый вложенный элемент тега patterns трактуется как определение нового именованного паттерна. Для объявления и обращения к именованному паттерну используется $.

После знака = задается значение типа multiline string с опциональным атрибутом converter, имеющим тип string.

предупреждение

Если паттерн создан с помощью $entity<> и converter, его название не должно совпадать с названием сущности NLU-ядра. Например, если в проекте есть паттерн $Example и сущность Example, то это может привести к ошибкам при выполнении сценария.

Как и паттерны, именованные паттерны могут быть заданы с помощью базовых и расширенных элементов:

patterns:
$mobilePhoneNumber = $regexp<(8|\+?7)-?\(?9\d{2}\)?-?\d{3}-?\d{2}-?\d{2}>
$mistake = (ошиб*|неверн*|некорректн*|неправиль*)
$roamingRegion = $entity<RoamingRegions>