Sobes.tech
Back to questions
Middle — Senior
10

Что такое NLU и какие у него подзадачи (intent, slots, entities)?

Companies where asked
ЦифровыеПривычки
Автомакон
Райффайзенбанк

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

Пояснение кода:

Код не требуется, потому что это концептуальная задача. В примере система сначала определяет, что пользователь хочет сделать, затем выделяет из текста конкретные значения, которые нужны для выполнения действия.

Шаги разбора:

  1. Фраза «Забронируй столик» указывает на intent бронирования.
  2. «в Москве» — это место, которое система должна сохранить как параметр.
  3. «на завтра» — временная сущность, превращающаяся в дату.
  4. «на 2 человека» — количественный параметр для бронирования.
  5. Все найденные значения складываются в структуру, которую дальше использует диалоговый менеджер или backend.

Ключевые моменты:

  • Intent отвечает на вопрос «что хочет пользователь сделать?».
  • Entities отвечают на вопрос «какие объекты и значения упомянуты в тексте?».
  • Slots — это параметры, необходимые для выполнения конкретного intent.
  • Entity и slot часто связаны, но не обязаны быть одним и тем же: entity — это распознанная сущность, slot — её роль в задаче.
  • В реальных системах NLU часто работает вместе с диалоговым состоянием, чтобы заполнить недостающие параметры.
  • Ошибки в intent обычно критичнее, чем ошибки в отдельных slots, потому что они ведут к неверному сценарию обработки.