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

Для этого рядом с каждым примером фразы в блоке Фразы есть переключатель в виде кавычек:



Кликните на переключатель и кавычки поменяются на знак @ - в режим "шаблон".



Что такое шаблоны фраз

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

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

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

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

привет

Это шаблон, состоящий только из одного слова - позволяет боту реагировать только на фразу "Привет" (и не буквой больше).

* привет* *

Этот шаблон позволяет боту реагировать на фразы типа "Привет", "Привет ы " "Ну привет Алиса", "Скажи мне привет" и подобные.

* ~яблоко *

Этот шаблон сработает на фразах типа "Дай мне два яблок а пожалуйста"

Ниже представлен весь синтаксис шаблонов Aimylogic.

Слово

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

Звездочка

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

* привет - сработает на фразу "Ну привет" или "Скажи мне привет", а также просто на слово "Привет".

* заказать * стол * - сработает на фразах "Я хочу заказать сегодня стол" или "Заказать стол на двоих" и подобные

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

привет* - сработает на слова "Привет", "Привет ы ", "Привет ики " и так далее.

*скажи* - подойдет под "Скажи", " Под скажи", " Под скажит е ", "Скажит е " и тп.

Внимание! Звездочку нельзя использовать внутри слова! А только перед ним и после него.

Тильда

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

~яблоко - сработает на все формы слова "Яблоко" (яблоки, яблок и тд)

Альтернатива

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

(да/ага/угу) - сработает на любое из слов "Да", "Ага", "Угу"

* (~яблоко / ~груша) - срабатывает на "Дай мне 5 яблок " и на "Хочу купить десять груш "

Опция

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

* [много] (~яблоко / ~груша) - под этот шаблон подойдут фразы "Купил много яблок" и "Хочу грушу"

Сущность

Чтобы указать, что во фразе обязательно должна присутствовать какая-то сущность, подставьте ее в шаблон, используя знак $ перед именем сущности

* живу * $CITY * - сработает на фразу "Я живу в Питере"

При этом бот выделит сущность города (CITY) и создаст переменную $CITY со данными указанного города.

Переменная

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

* $CITY::From * $CITY::To * - сработает на фразы типа "Питер Москва" или "Билеты из Москвы до Питера".

При этом бот выделит сущности двух городов и сохранит их в переменные с именами $From и $To, чтобы вы могли определить, откуда и куда пользователь ищет билеты.

Вложенность шаблонов

Вы можете использовать шаблоны внутри других шаблонов без ограничений.
Была ли эта статья полезна?
отменить
Спасибо!