Расширенные элементы паттернов
$pattern_name
$название-паттерна
— ссылка на именованный паттерн.
Использование в сценарии
Объявление паттерна:
patterns:
$thanks = (спасибо [и] [тебе|вам] [большое]|благодар*|спс|супер|супир|ура|отлично|молод*|умни*|пасиб*)
$ok = (окей|ок|okey|okay|o key|ok)
$you = (ты|вы|тебе|вам|тебя|тя|тибя|вас)
$my = (мой|моя|мое|моё|мае|маё|мне|мои|маи|мою|маю|моне|мане|манё|монё|меня|миня|моих|маих|моим|маим|моем|маем|моём|маём|мя|ма|мня|[со] мной)
Использование паттерна в сценарии:
state: Thanks
q!: * $thanks
q!: * $ok *
q!: * {мне (понятно|понятненько|ясно|ясненько) [все|всё]} *
q!: * {(понятно|понятненько|ясно|ясненько) (все|всё)} *
q!: * [премного] благодарн* *
script:
$reactions.answer("Рад помочь.\nОстались ли у вас еще вопросы?")
~lemma
~lemma
проверяет все формы слова. Слово после тильды должно стоять в словарной форме.
Например, в паттерн ~яблоко
попадут слова: яблоки
, яблок
и др.
Правило срабатывает на всех словоформах всех омонимов: слов, которые звучат и пишутся одинаково, но имеют разные значения или морфологическую форму.
Например, паттерн ~печь
сработает на словоформах существительного печь
(печи
, печью
) и глагола печь
(пеку
, печешь
).
Использование в сценарии
state: Delivery
q!: * {(заказать/заказывать/заказ/~доставка/доставляете) [~еда] * [$cafe]} * $City *
q: * $City *
script:
if (!$session.address) {
$session.address = {};
}
$session.address.city = $parseTree.City[0].value.name;
go!: ../../Delivery
$morph
Элемент $morph<свойство>
проверяет совпадение по слову с определенными грамматическими свойствами.
Список поддерживаемых свойств зависит от того, какой диалоговый движок использует проект.
botEngine: v1
Устарело
На первой версии диалогового движка для морфологического анализа используется парсер AOT. Используйте для грамматических свойств условные обозначения для русского и английского языка. Указывайте их внутри угловых скобок через пробел.
Кроме того, на этой версии $morph
позволяет проверить совпадение по одному или сразу по нескольким свойствам.
Например, элемент $morph<С им ед>
(существительное в именительном падеже и единственном числе) даст совпадения со словами кошка, банк, условие и т. д.
botEngine: v2
На второй версии диалогового движка через элемент $morph
можно указать только совпадение по частям речи.
Другие грамматические свойства не поддерживаются.
Формат обозначений для частей речи зависит от того, какой движок токенизации использует проект. Обозначения, указанные под один движок, в большинстве случаев не будут работать для другого.
Токенизатор | Ссылка на описание формата |
---|---|
kaznlp | kaznlp |
morphsrus | pymorphy2 |
mystem | mystem |
pinyin | Движок не поддерживает частеречную разметку. |
spacy | Universal Dependencies |
udpipe | Universal Dependencies |