JAICP

Базовые элементы паттернов


*

* — любые символы в любом количестве.

Использование в сценарии

state: catchAll
    q!: *
    a: Я Вас не понял.
state: start
    q!: *
    a: Начинаем работу!
    go!: /SecondStep

слово

слово — слово: проверяет наличие последовательности указанных символов.

Если клиент введет дополнительные символы (слова), его ответ не будет соотнесен с паттерном.

Использование в сценарии

state:
    q!: привет
    a: Привет! Как дела?

Если клиент отправит или скажет боту Бот, привет, то его ответ не будет соотнесен с паттерном привет.

* корень *

*корень* — стемма: проверяет наличие в слове заданного текста.

Звёздочки могут находиться:

  • В начале, обозначает вариативный префикс: в паттерн *ход попадут слова вход, выход, ход.
  • В конце, обозначает вариативный суффикс: в паттерн ход* попадут слова ходить, ходунки, ход.
  • В начале и конце, обозначает вариативные префикс и суффикс: в паттерн *ход* попадут слова выходить, ход.

Использование в сценарии

 state:
    q: * *подроб* *   //будет ловить: поподробнее, подробности, подробнее
    a: Подробнее на сайте example.cn

(слово1|слово2|или целая фраза)

(слово1|слово2|или целая фраза) — альтернативы: проверяет наличие одного из вариантов правила.

Варианты разделяются |. Внутри каждого из них могут содержаться любые другие вложенные элементы паттерна.

Варианты также можно разделять символом /.

Использование в сценарии

state:
    q: (привет | добр* (утро/день/вечер) | здравствуй* )
    a: Привет-привет!

[опциональное слово|или другая фраза]

[опциональное слово|или другая фраза] — опции: приведенные в квадратных скобках элементы не являются обязательными.

У паттерна увеличивается вес, если правило сработало.

Внутри опций можно использовать альтернативы.

Использование в сценарии

state: How many players
    q: * {(сколько|как много|насколько много) (игроков|плееров|человек) [могут] [играть]} *
    q: * [игра] для одного * [или] [нескольких] *
    q: * {([игра]|в игре) [есть] (мультиплеер*|многопользовательск* [режим]|для нескольких пользовател*)} *
    a: Это приключение для одного.

{слово1 слово2 (1|2)}

{слово1 слово2 (1|2)} — перестановки: проверяется соответствие заданных правил в любой последовательности.

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

Каждое правило может быть любым другим элементом паттерна с любой степенью вложенности.

Использование в сценарии

state: How much gameplay
    q: * {(сколько|(как|насколько) много|много) геймпле*} *
    q: * {[насколько] (большая|велика) [ли] [эта] [игра]} *
    a: Сюжет игры занял 2 тысячи страниц сценария!

Ограничения

В перестановках допустимо использовать не более 5–6 правил. Использование большего числа элементов существенно замедляет работу бота.

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

Например, паттерн * {какое * ты * к этому имеешь отношение} * можно переписать с использованием паттернов следующего вида:

* {какое * ты} * {(к этому) имеешь отношение} *
* какое * {(к этому) имеешь отношение} * ты *