Блок Фразы был переименован на Интенты. На функционал это не повлияло.

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

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



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

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

При этом Aimylogic не будет расширять шаблон синонимами.

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

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

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

привет



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

* привет* * - то есть, у слова "привет" могут быть разные продолжения, плюс до этого слова и после него может быть любое количество слов.

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



* ~яблоко * - то есть, все словоформы слова "яблоко" (в рамках части речи), плюс любое количество слов до и после данного слова.

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



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

Слово

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



Звездочка

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

* привет - то есть, любое количество слов перед словом "привет".
Сработает на словосочетания "Ну привет" или "Скажи мне привет", а также просто на слово "Привет".



* заказать * стол * - то есть, любое количество слов перед, между и после слов "заказать" и "стол".

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



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

привет* - сработает на слова "Привет", "Приветы", "Приветики " и так далее. Так как вы не указывали, что до слова и после слова могут быть другие слова, то на словосочетания со словоформами от слова "привет" бот реагировать не будет.



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



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

Тильда

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

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

Не будет работать на слова типа "яблочный", так как это другая часть речи
Не будет реагировать на слова с суффиксами, например, "яблочко".


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

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

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



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



Опция

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

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

Сущность

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

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

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

Переменная

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

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

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

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

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