Определение интента


Для определения намерения клиента вы можете использовать паттерны, примеры фраз классификатора STS и классификатор Brain

При использовании в одном сценарии паттернов, интентов и групп примеров, обработка правил активаций происходит с приоритетом по мере убывания:

  1. Паттерны.
  2. Группа примеров классификатора STS.
  3. Интенты.

Механизм активации правил

  1. Если запрос пользователя сработал в стейте с паттерном, группой примеров e! и интентом, то приоритет будет у паттерна. Сработает стейт с паттерном.
  2. Если запрос пользователя сработал в стейте с группой примеров e! и интентом, то приоритет будет у группы примеров. Cработает стейт с группой примеров.
  3. Если запрос пользователя сработал только в стейте с интентом, отработает только он.
  4. В остальных случаях запрос пользователя будет обработан стейтом CatchAll.

CatchAll

Обратите внимание, что при совместном использовании NLU-сервиса с паттернами и примерами фраз классификатора, не используется подобный CatchAll:

    state: CatchAll
        q!: *
        a: Не понял

Для непредусмотренных сценарием запросов пользователя используйте event: noMatch:

    state: CatchAll
        event: noMatch
        a: Вы сказали: {{ $request.query }}

Пример сценария

Рассмотрим сценарий:

theme: /

    state: Pattern
        q!: * паттерн *
        a: Сработал паттерн

    state: Example
        e!: паттерн
        a: Этот пример не срабатывает, потому что отрабатывает паттерн

    state: Second example
        e!: пример
        a: Сработал пример

    state:
        intent!: /паттерн
        a: Этот пример не срабатывает, потому что отрабатывает паттерн

    state:
        intent!: /пример
        a: Этот пример не срабатывает, потому что отрабатывает группа примеров

    state: Intent
        intent!: /интент
        a: Сработал интент

    state: CatchAll
        event: noMatch
        a: Вы сказали: {{ $request.query }}

При этом тренировочные фразы для интентов:

  • /паттерн — паттерн;
  • /пример — пример;
  • /интент — интент.

Запускаем тестовый виджет и проверям сценарий:

  1. При запросе Паттерн отрабатывает стейт Pattern.
  2. При запросе Пример отрабатывает стейт Second example.
  3. При запросе Интент отрабатывает стейт Intent.
  4. Все непредусмотренные сценарием запросы обрабатывает стейт CatchAll.