chatme.ai
Search
⌃K

Распознавание намерений | Слот NLU и под-слоты Intent и Fallback

Назначение и общая информация

Слот NLU – слот, предназначенный для реализации распознавания речи Собеседника Агентом ー обработки сообщений на естественном языке с целью определить высказанное намерение (Интент) Собеседника и в зависимости от определенного интента выполнить переход в соответствующую ветку Сценария.
Слот NLU является комплексным слотом и не может существовать без дочерних под-слотов Intent и под-слота Fallback, которые начинают собственные ветки, в которые осуществляется переход после распознавания соответствующего намерения.
Слот NLU обрабатывает входящую реплику Собеседника, предварительно записанную в переменную client_message.
Слот NLU распознает только те интенты, которые заключены в его под-слоты Intent. Остальные возможные намерения Собеседников (интенты) не участвуют в распознавании в данном NLU слоте. Например, на изображении выше, слот NLU будет обучен распознавать только два интента, которые выбраны в его под-слотах Intent. Если ни один из этих интентов не будет распознан, общение перейдет в под-слот Fallback.

Создание и настройки комплексного слота NLU (NLU + Intent + Fallback)

Атрибуты слота

  1. 1.
    Name – название слота. Максимальная длина значения поля — 40 символов.
    1. 1.
      При сохранении Слота проверяется значение в поле:
      1. 1.
        если поле пустое, выводится ошибка Please enter a slot name
        image.png
      2. 2.
        если в поле более 40 символов, выводится ошибка Name must contain no more than 40 characters
        image.png
  2. 2.
    Confidence Threshold – выраженное в процентах минимальное значение уверенности в распознанном намерении, при котором интент считается распознанным, и общение переходит в ветку соответствующего под-слота Intent. Значение Confidence threshold может быть целым числом от 0 до 100.
    1. 1.
      Значение Confidence Threshold зависит от количества интентов в Дереве Сценария. Рекомендуется, чтобы значение было обратно пропорционально количеству под-слотов Intent в Сценарии: чем больше интентов, тем меньше должен быть Confidence Threshold.
    2. 2.
      Для начала рекомендуется сначала устанавливать значение, равное 15 – при таком Confidence Threshold распознавание происходит наиболее успешно у большинства Ботов. В зависимости от результатов тестирования Бота Confidence Threshold можно будет изменить. Подробнее в разделе Подбор оптимального значения Confidence Threshold.
    3. 3.
      Каждому сообщению Собеседника присваивается значение Confidence (число от 0 до 1). Confidence характеризует уверенность Бота в том, что сообщение относится к определенному интенту.
    4. 4.
      Значение Confidence Threshold – это выраженное в процентах минимальное значение Confidence, при котором Бот переходит в слот одного из интентов. Если значение Confidence меньше Confidence threshold, Бот переходит в слот Fallback.
    5. 5.
      При сохранении Слота проверяется значение в поле:
      1. 1.
        если поле пустое, выводится ошибка Please enter confidence threshold
        image.png
      2. 2.
        при значении более 100 выводится ошибка Confidence threshold must be less than or equal to 100
        image.png
      3. 3.
        при указании нецелого значения выводится ошибка Confidence threshold must be an integer
        image.png

Атрибуты подслота intent

image.png
  1. 1.
    Name — название слота, которое будет отображено в Дереве сценария. Максимальная длина значения поля — 40 символов. Если название не введено, Платформа автоматически копирует название Интента из поля Intent в поле Name.
    1. 1.
      При сохранении Слота проверяется значение в поле:
      1. 1.
        если в поле более 40 символов, выводится ошибка Name must contain no more than 40 characters
        image.png
  2. 2.
    Intent* — Интент, при распознании которого Сценарий пойдет по Ветке сценария , следующей за данным интентом.
    1. 1.
      При сохранении Слота проверяется значение в поле:
      1. 1.
        если поле пустое, выводится ошибка Please choose an intent.
        image.png
  3. 3.
    Кнопка SHOW INTENT IN A NEW TAB — по нажатию кнопки выбранный в поле Интент открывается в соседней вкладке браузера.

Атрибуты подслота fallback

image.png
Name — название подслота, которое будет отображено в Дереве сценария. Максимальная длина значения поля — 40 символов. При создании слота NLU в поле Name подслота Fallback автоматически подставляется содержимое поля Name слота NLU. Если содержимое поля Name удалено, подслот в Дерево сценария будет отображаться без названия.
При сохранении Слота проверяется значение в поле:
  1. 1.
    если в поле более 40 символов, выводится ошибка Name must contain no more than 40 characters
    image.png

Подслоты Intent и Fallback

Автоматическая генерация под-слотов при создании NLU

  • При создании слота NLU автоматически создаются два подслота Intent и подслот Fallback.
Если предварительно интенты не были созданы, за слотом NLU будут созданы под-слоты с автоматически сгенерированными интентами:
Эти интенты появятся в списке интентов Компании.
  • Для того чтобы заменить интенты в сгенерированном подслоте, разверните его двойным нажатием мыши. Нажав на название интента в поле INTENT и выберите нужный интент из выпадающего списка. Далее нажмите Save.

Добавление под-слотов Intent

  • Для того чтобы добавить новый под-слот, нужно нажать на кнопку +. Новый под-слот отобразится в Сценарии выше под-слота Fallback, который всегда располагается самым нижним.

Работа слота

Слот NLU обучается на выборках Интентов, добавленных в качестве его подслотов. О создании Интентов и их обучающих выборок см статью Вкладка интентов — Intents . Слот NLU на входе принимает переменную client_message (Confidence threshold, указанный в слоте NLU), обрабатывает ее, распознавая Интент, и переводит Общение в ветку распознанного Интента. Если же ни один Интент не распознан с должным уровнем уверенности, Общение переходит в под-слот fallback.

Процесс распознавания интентов

  1. 1.
    Обучение: слот NLU обучается на выборках интентов, добавленных в качестве его под-слотов Intent и после этого становится частью обученной модели Агента.
  2. 2.
    Получение реплики: слот NLU в обученной модели Агента на входе принимает реплики Собеседниковー текст из переменной client_message.
  3. 3.
    Классификация реплики: Обученная модель Агента производит классификацию реплики Собеседника из переменной client_message и расставляет все интенты данного слота NLU по уровню уверенности в них ー Confidence (в процентах, аналогично Confidence Threshold).
  4. 4.
    Сохранение топ-5 интентов в Контексте чата: в Контексте Чата создается Контекстная переменная nlu_result, значением которой становится json-объект, содержащий информацию о топ-5 распознанных интентов в порядке убывания их Сonfidence. Пример: [{'intent_name': 'size', 'confidence': 0.9993743300437927}, {'intent_name': 'product_in_stock', 'confidence': 0.00019508253899402916}, {'intent_name': 'model_price', 'confidence': 0.00012844608863815665}, {'intent_name': 'address', 'confidence': 0.00010525238758418709}]
    Важно: в поле Confidence Threshold Слота NLU значение задается в процентах, а в данной Контекстной переменной — в долях от единицы.
  5. 5.
    Переход в интент: переход осуществляется в интент с максимальным Confidence при условии, что Confidence >= Confidence Threshold в настройках данного слота NLU, и является интентом, которым распознана реплика Собеседника. Как следствие:
    • Общение перейдет в ветку данного под-слота Intent;
    • В системных контекстных переменных создается переменная intent_name ー название распознанного интента;
    • В системных контекстных переменных создается переменная confidence – степень уверенности Бота в том, что реплика Собеседника относится к данному интенту (в процентах);
    • Переменные intent_name и confidence сохраняются в контексте Чата до следующего выполнения этого же или другого слота NLU в данном Чате .
  6. 6.
    Переход в Fallbaclk: переход в под-слот Fallbaclk осуществляется, если Confidence всех интентов ниже значения Confidence Threshold в настройках данного слота NLU. Это означает, что ни один из интентов не был распознан. Как следствие:
    • Общение перейдет в ветку данного под-слота Fallback;
    • В системных контекстных переменных создается переменная error – текст ошибки. Значение error сохраняется в контексте Чата до: - Следующего выполнения этого же или другого слота NLU; - Выполнения слота Regular Expression; - Выполнения слота External Request.

Пример

В данном случае реплика Собеседника была отнесена слотом NLU к интенту joke, и Сценарий перешел по соответствующей данному интенту ветке.