Понимание естественного языка (NLU)

NLU (Natural Language Understanding) — часть стека обработки языка, которая отвечает за понимание смысла сообщения. NLU решает две задачи: определяет намерение пользователя (intent) и извлекает из текста структурированные данные — сущности (entities). На выходе NLU-компонент передаёт боту не сырой текст, а распознанные данные: «намерение = запись_на_приём, дата = 15 июня, врач = терапевт».

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-модуль быстрее и дешевле, а генерацию выполняет более мощная модель только для нужных интентов.

Связанные термины

Где применяется

ИИ-консультант → Чат-бот на основе GPT →

Хотите настроить NLU для вашего бота? Обсудим задачу.

Связаться с нами