Что такое намерения¶
Что такое намерения¶
Содержание инструкции:
- Определение
- Обучение намерениям
- Как работают намерения?
- Формат записи намерения в файлах проекта
- Советы по работе с намерениями
Определение¶
Намерение или Интент (от англ. "intent" — намерение) — это основная цель или задача, выраженное в тексте сообщения от пользователя. Намерения помогают помощнику классифицировать запросы и точно понимать, что именно пользователь хочет сделать или узнать.
За распознавание намерений отвечает модель NLU (Natural Language Understanding). Эта модель позволяет помощнику понимать и анализировать естественный язык пользователей.
Рассмотрим простой пример на основе приветствий. Вот несколько разных способов, которыми пользователь может поздороваться:
- Доброе утро!
- Привет!
- Здравствуй!
- Добрый вечер!
Все эти фразы относятся к одному намерению — «приветствие». Чтобы помощник мог распознавать намерение пользователя поздороваться, независимо от конкретной формулировки, в системе создаётся набор тренировочных фраз, охватывающий различные варианты приветствий. Этот набор помогает помощнику научиться обобщать и корректно определять намерение даже в новых, ранее не встречавшихся фразах.
Обучение намерениям¶
Обучение намерениям — это процесс, в ходе которого модель NLU учится распознавать цели и задачи пользователя на основе добавленных тренировочных фраз.
В основе NLU лежит сложная нейронная сеть, которая обучается классифицировать фразы пользователей по намерениям. Для работы этой сети входные фразы преобразуются в векторы (массивы вещественных чисел). Эти векторы называются признаками (futures).
При построении векторов признаков используются три основных технологии:
-
Bag-of-Words (мешок слов)
- Преобразование текста в набор значимых слов
- Учёт частоты встречаемости слов
-
Word Embeddings (word2vec)
- Векторизация слов
- Учёт семантической близости слов
- Понимание синонимов и схожих по смыслу выражений
-
N-граммы
- Последовательности из N букв
- Обработка отдельных букв (N=1)
- Анализ пар последовательных букв (N=2)
- Коррекция опечаток и ошибок
В конфигурационном файле config.yml можно настроить использование предобученных векторов слов для конкретного языка. Это значительно улучшает способность модели понимать синонимы и близкие по смыслу слова, даже если они не встречались в тренировочных фразах.
Как работают намерения?¶
-
Обучение модели:
- Заполняются примеры фраз для каждого намерения.
- Модель NLU обучается на этих данных и учится распознавать намерения.
-
Распознавание намерений:
- Когда пользователь отправляет сообщение, модель NLU анализирует текст и определяет наиболее вероятное намерение.
- Например, для фразы "Какая погода в Москве?" модель определит намерение ask_weather.
-
Реакция помощника:
- На основе распознанного намерения помощник выбирает, как реагировать. Например, для намерения ask_weather помощник может вызвать API погоды и отправить ответ.
Формат записи намерения в файлах проекта¶
Намерения записываются:
-
В файле
nlu.yml
. Этот файл содержит примеры тренировочных фраз для каждого намерения. Именно здесь указываются примеры того, что пользователь может сказать, и какие намерения эти фразы представляют.Пример записи:
nlu: - intent: greet # Уникальное имя намерения (например, `greet`, `goodbye`, `ask_weather`) examples: | # Список примеров фраз, которые могут быть связаны с этим намерением. - Привет! - Здравствуйте! - Добрый день! - intent: order_pizza examples: | - Хочу заказать пиццу - Мне нужна пицца - Дайте пиццу, пожалуйста
-
В файле
domain.yml
. В этом файле перечисляются все намерения, которые бот должен распознавать. Он также содержит ответы, действия и сущности, связанные с намерениями.Пример записи:
-
В файле
stories.yml
. В этом файле описываются истории взаимодействия пользователя с ботом, где указывается, как бот должен реагировать на определенные намерения.Пример записи:
-
В файле
rules.yml
. Этот файл содержит правила, которые определяют, как бот должен реагировать на определенные намерения в конкретных ситуациях.Пример записи:
Советы по работе с намерениями¶
-
Создавайте разнообразные обучающие примеры:
Чем больше примеров фраз вы предоставите, тем лучше модель будет распознавать намерения. Примеры для каждого намерения должны включать не только ключевые слова, но и различный контекст. Например, для намерения «оплатить картой» можно использовать фразы: «как оплатить», «хочу оплатить картой», «можно ли оплатить», «хотел бы оплатить картой», «оплату картой принимаете», «вы карту принимаете».
-
Используйте уникальные намерения:
Каждое намерение должно быть чётко определено и иметь ясную цель. Намерения должны быть легко различимы. Например, если в одном намерении «Да» будут примеры «да» и «конечно», а в другом намерении «согласие» — «да, согласен» и «конечно, буду», то это может запутать помощника. В таких случаях лучше объединить эти два намерения в одно.
-
Регулярно обновляйте данные:
Добавляйте новые примеры фраз и намерения по мере развития бота.
-
Используйте синонимы и вариации:
Учитывайте разные формулировки, которые могут использовать пользователи