ym88659208ym87991671
Синтаксис шаблонов фраз для чат-ботов | Документация для разработчиков

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

Обновлено 29 ноября 2023

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

Для этого рядом с каждым примером реплики в блоке Интенты есть переключатель в виде кавычек. Нажмите на переключатель, чтобы перейти в режим шаблонов. При этом кавычки изменятся на символ @.

Что такое шаблоны интентов

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

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

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

Шаблоны создаются с помощью специального синтаксиса, описывающего расширенные выражения, которые должен понимать чат-бот.

Примеры шаблонов:

  • Если в качестве шаблона указать одно слово, например привет, чат-бот будет реагировать строго на реплику Привет.
  • Если указать * привет* *, чат-бот будет реагировать так же и на измененное слово, которое может находиться посередине реплики. Так, при этом шаблоне чат-бот отреагирует не только на Привет, но и на реплики Приветики, Ну привет и другие.
  • Если в шаблоне использовать тильду, чат-бот будет реагировать на все словоформы в рамках части речи. Например, если указать * ~яблоко *, чат-бот отреагирует на реплику вроде Дай мне два яблока, пожалуйста, но не будет реагировать на слово яблочко или яблочный сок.

Слово

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

Звездочка

Звездочка (*) обозначает, что на ее месте в реплике пользователя может быть сколько угодно символов, в том числе и ни одного.

Примеры:

  • * привет - любое количество слов перед словом привет.

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

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

    Чат-бот сработает на фразах Я хочу заказать сегодня стол или Заказать стол на двоих и другие. При этом не сработает на заказать столик.

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

Примеры:

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

  • *скажи* - подойдет для реагирования на Скажи, Подскажи, Подскажите, Скажите и другие.

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

Тильда

Тильда (~) сообщает чат-боту, чтобы он реагировал на все словоформы указанного слова (в рамках части речи). Тильда ставится сразу перед словом в именительном падеже.

Пример:

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

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

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

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

Примеры:

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

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

Опция

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

Пример:

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

Сущность

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

Пример:

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

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

Переменная

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

Пример:

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

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

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

Шаблоны можно вкладывать друг в друга без ограничений.

ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.