Именованные паттерны
Выделяют в именованные паттерны правила по семантическому признаку. Например:
- синонимы;
- различные варианты написания выражений, объединенных одним смыслом и встречающихся в определенной позиции в однотипных предложениях.
Как использовать в сценарии
Список именованных паттернов объявляется в теге 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>