Что такое NLU и какие у него подзадачи (intent, slots, entities)?
Answer from AI
sobes.tech AI
Что хотят услышать интервьюеры:
NLU — это часть NLP, которая переводит текст пользователя в структурированное представление, понятное системе. Обычно нужно уметь выделять намерение пользователя, находить значимые фрагменты текста и привязывать их к типам данных. Хороший ответ показывает понимание, что эти задачи работают вместе, но не всегда совпадают один-в-один.
Определение:
NLU (Natural Language Understanding) — это набор методов для понимания смысла пользовательского текста. В диалоговых системах NLU обычно решает три основные подзадачи: определение intent, извлечение slots и распознавание entities.
Intent — это цель или намерение пользователя, например «забронировать билет» или «узнать погоду». Slots — это значения параметров, нужные для выполнения intent, например дата, время, город, номер заказа. Entities — это сущности в тексте, то есть именованные объекты или типы объектов, например имя человека, организация, локация, дата; в конкретной системе entity может совпадать со slot, но концептуально entity — это распознанная сущность, а slot — роль этого значения в конкретном действии.
Пример использования:
Пользователь пишет: «Забронируй столик в Москве на завтра на 2 человека».
Система может разобрать это так:
- intent:
book_table - entities:
Москвакакcity,завтракакdate,2 человекакакparty_size - slots: заполненные параметры для выполнения бронирования
Text: "Забронируй столик в Москве на завтра на 2 человека"
Intent: book_table
Slots:
city = "Москва"
date = "завтра"
party_size = 2
Entities:
Москва -> LOCATION
завтра -> DATE
2 человека -> NUMBER_OF_PEOPLE
Пояснение кода:
Код не требуется, потому что это концептуальная задача. В примере система сначала определяет, что пользователь хочет сделать, затем выделяет из текста конкретные значения, которые нужны для выполнения действия.
Шаги разбора:
- Фраза «Забронируй столик» указывает на intent бронирования.
- «в Москве» — это место, которое система должна сохранить как параметр.
- «на завтра» — временная сущность, превращающаяся в дату.
- «на 2 человека» — количественный параметр для бронирования.
- Все найденные значения складываются в структуру, которую дальше использует диалоговый менеджер или backend.
Ключевые моменты:
- Intent отвечает на вопрос «что хочет пользователь сделать?».
- Entities отвечают на вопрос «какие объекты и значения упомянуты в тексте?».
- Slots — это параметры, необходимые для выполнения конкретного intent.
- Entity и slot часто связаны, но не обязаны быть одним и тем же: entity — это распознанная сущность, slot — её роль в задаче.
- В реальных системах NLU часто работает вместе с диалоговым состоянием, чтобы заполнить недостающие параметры.
- Ошибки в intent обычно критичнее, чем ошибки в отдельных slots, потому что они ведут к неверному сценарию обработки.