Intent recognition — распознавание намерения
Intent (намерение) — это то, что пользователь хочет сделать. Классификатор намерений сопоставляет входящий текст с набором заранее определённых категорий. Например, фраза «запишите меня к кардиологу на следующей неделе» → intent: book_appointment. Один и тот же intent может быть выражен десятками формулировок, и задача NLU — обобщить их все в один класс.
В современных ботах классификация намерений часто делегируется LLM через structured output: модель возвращает JSON с полем intent вместо свободного текста.
Entity extraction — извлечение сущностей
Сущности — это конкретные данные внутри сообщения: имена, даты, суммы, адреса, номера телефонов. NLU извлекает их и передаёт в структурированном виде. Для фразы «хочу перевести 5000 рублей Ивану Петрову» сущности: сумма = 5000, валюта = RUB, получатель = Иван Петров.
В HR-боте для автоматизации найма NLU извлекает из резюме ключевые сущности: стаж, должности, навыки — и передаёт их в CRM без ручного ввода. Результат: +50% заявок при том же штате рекрутеров.
NLU vs NLP vs NLG
NLP (Natural Language Processing) — широкий термин для всей обработки текста. NLU — часть NLP, отвечает за понимание входящего текста. NLG (Natural Language Generation) — противоположная часть, отвечает за генерацию ответа. Полный цикл диалога: пользователь пишет → NLU понимает → бизнес-логика принимает решение → NLG формирует ответ.
Когда нужно отдельное NLU-решение
Если бот работает в узкой предметной области с фиксированным набором намерений (50–200 классов), имеет смысл обучить специализированный NLU-классификатор — он будет работать быстрее и дешевле, чем вызов LLM на каждый запрос. При широком диапазоне запросов или необходимости понимать свободный контекст лучше использовать LLM с structured output напрямую.
Как NLU определяет намерение пользователя
В современных AI-ботах NLU реализуется через языковую модель: системный промпт описывает список возможных интентов, LLM классифицирует сообщение и возвращает JSON с интентом и слотами. Например, фраза «запишите меня к терапевту на завтра» → intent: "book_appointment", slot_specialty: "терапевт", slot_date: "tomorrow". Классический NLU (Rasa, Dialogflow) работает на обученных классификаторах и требует размеченных данных.
Точность NLU в реальных системах
Промышленные системы достигают точности классификации намерений 92–97% на обученном домене. Проблемы возникают с омонимией («хочу перенести встречу» — отменить или перенести на другое время?), редкими интентами (менее 50 примеров в обучающей выборке) и смешанными интентами в одном сообщении. Хорошая практика — предусмотреть интент "unclear" с запросом уточнения вместо случайного угадывания.
Сергей Полухин
Co-Founder & CTO PapAI Soft · профиль
Частые вопросы
Как улучшить распознавание намерений бота?
Три метода: добавить обучающие примеры для слабых интентов (нужно 50+ примеров на интент), ввести интент «уточнение» вместо принудительного угадывания, использовать few-shot промптинг с примерами правильной классификации прямо в системном промпте.
Нужно ли разделять NLU и генерацию ответа?
В простых ботах (до 20 интентов) можно объединить: LLM сразу классифицирует и генерирует ответ. В сложных системах разделение оправдано: специализированный NLU-модуль быстрее и дешевле, а генерацию выполняет более мощная модель только для нужных интентов.
Связанные термины
- NER (распознавание именованных сущностей) — детальное извлечение сущностей
- LLM — языковая модель как NLU-движок
- Чат-бот — применение NLU в диалоговых системах
- NLG — генерация ответа после обработки NLU
Где применяется
Хотите настроить NLU для вашего бота? Обсудим задачу.
Связаться с нами