Перейти к основному содержимому

Интенты

Интент — ключевая единица NLU-ядра, представляющая намерение, которое может выразить клиент в запросе. Интент объединяет в себе:

  • Метаинформацию о целевом намерении.
  • Набор тренировочных фраз и/или паттернов для обучения классификатора распознавать намерение.
  • Данные о слотах — сущностях, уточняющих намерение.

Создание интента

Войдите в проект, на панели управления нажмите NLU → Интенты. Вы перешли в справочник интентов проекта.

Справочник интентов

Нажмите Создать интент и заполните информацию об интенте. Обязательно для заполнения только поле Название.

ПолеОписаниеПримечание
НазваниеНазвание интента.Под полем ввода названия указан путь к интенту в общем дереве интентов.
Путь рассчитывается автоматически и используется при обращении к интенту из сценария.
КомментарийДополнительное описание к интенту.
ОтветСтандартный ответ на интент.Вы можете обратиться к тексту ответа из сценария через $context.intent.answer.

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

Тренировочные фразы

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

Чтобы добавить новую тренировочную фразу в обучающую выборку, введите текст фразы в поле ввода и нажмите Enter. Далее вы можете искать необходимые фразы, нажав на иконку . При помощи флажков слева можно выбрать и удалить нужные фразы из выборки.

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

Если вас не устроило, как обученный классификатор распознал интенты:

  • Повысьте качество выборки. Следуйте рекоммендациям из статьи Как обучать интенты.
  • Задайте другие пороговые значения для фраз и паттернов в конфигурационном файле chatbot.yaml.

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

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

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

Синтаксис паттернов в интентах поддерживает все базовые и большинство расширенных элементов паттернов, за небольшим числом исключений:

  • Не поддерживается паттерн $morph и маппинги — (один:1/два:2).

  • Вместо именованных паттернов $pattern и сущностей $entity<> используйте сущности NLU.

    предупреждение
    Названия сущностей NLU начинаются с символа @.

Перефразирование тренировочных фраз

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

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

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

Как сгенерировать парафраз
Результат перефразирования

Групповое добавление фраз

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

подсказка
Каждая строка из вставленного фрагмента будет помещена в отдельную тренировочную фразу.

Слоты

Слоты — сущности, которые клиент упоминает в запросе либо в процессе уточнения информации, необходимой для выполнения запроса. Этот процесс называется слот-филлинг.

Нажмите Добавить слот и заполните параметры:

  • Название — имя слота.
  • Сущность — системная либо пользовательская сущность, задающая тип данных, которые попадут в слот.

При необходимости настройте дополнительные параметры:

  • Обязательно — переведите переключатель в активное положение, если слот обязателен для заполнения, чтобы обработать интент.
  • Массив — переведите переключатель в активное положение, чтобы в слот помещались все сущности данного типа, оформленные как массив.
  • Вопросы — укажите вопросы, которые будут задаваться в процессе уточнения незаполненных слотов.

Правила классификации

Правила классификации позволяют задать дополнительные условия распознавания интента. С помощью правил классификации вы можете выбрать сущности либо задать паттерны или синонимы, которые обязательно должны встречаться или отсутствовать во фразах клиента.

Правила классификации не являются заменой тренировочным фразам. Наиболее полезно их использовать в близких по смыслу интентах, которые обучены на похожем наборе фраз и часто путаются при распознавании. В этом случае правила могут помочь классификатору различать такие интенты.

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

Нажмите Добавить правило и заполните параметры:

  • Содержит / Не содержит.
  • Сущность / Паттерн / Синонимы.

В зависимости от выбранного типа правила появится поле, где вы можете:

  • Выбрать сущность из списка сущностей, которые включены в данном проекте.
  • Ввести паттерн или список синонимов без вынесения их в отдельную сущность.
подсказка
Работу правил классификации можно проверить при тестировании интентов в тестовом виджете NLU.

Вложенные интенты

Интенты могут быть вложены друг в друга. Для этого нажмите иконку напротив названия интента → Создать вложенный интент. Уровень вложенности интентов не ограничен.

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

Создание вложенного интента

Интенты формируют дерево на левой панели. Узлы дерева отсортированы по алфавиту. Для каждого узла через символ / указано число фраз в данном интенте и во всех вложенных.

Как использовать интенты в сценарии

Заполненные интенты можно использовать в сценарии в качестве способа активации стейтов. Для этого воспользуйтесь тегами intent/intent! или intentGroup/intentGroup!:

state: Hello
intent!: /Приветствие
a: Здравствуйте! Чем могу помочь?

state: Courses
intentGroup: /Курсы
intent: /Курсы
a: Вас интересуют наши курсы? Я нашел такой ответ:
script: $faq.pushReplies();

state: NoHelpNeeded
intent: /Отрицание
a: Если будут вопросы, обращайтесь!
предупреждение
По умолчанию срабатывает стейт, который активируется интентом с наибольшим весом. Но если вы используете intent или intent! совместно с intentGroup или intentGroup!, порядок срабатывания стейтов может измениться.