Вопросы на собеседовании: NLP-инженер
100 реальных вопросов с образцовыми ответами и пояснениями для уровня NLP-инженер I.
Смотреть пример резюме: NLP-инженер →Тренировка флешкарточками
Интервальное повторение · Hunter Pass
Вопросы
Нормализация Unicode приводит визуально одинаковый текст к единому представлению символов перед анализом.
- В слове café символ é может храниться одной кодовой точкой или как e с отдельным комбинируемым ударением.
- NFC обычно объединяет символы, а NFKC также сводит совместимые формы, например полноширинные латинские буквы.
- Выбранную форму нужно применять одинаково, иначе различия между обучением и инференсом создадут ложные расхождения в словаре.
Зачем это спрашивают: Интервьюер проверяет, знаете ли вы, что визуально одинаковые строки могут иметь разное внутреннее представление.
Нормализация текста должна убирать несущественные различия, не стирая признаки, нужные задаче.
- Нижний регистр поможет простой поисковой модели сопоставить Apple и apple, но уберет полезный для NER признак компании и фрукта.
- Удаление диакритики может улучшить поиск по шумному тексту, но способно объединить разные слова или имена во французском и испанском.
- Хороший пайплайн фиксирует выбор для конкретной задачи и одинаково обрабатывает обучающие, валидационные и входящие тексты.
Зачем это спрашивают: Сильный ответ рассматривает нормализацию как выбор под задачу, а не как обязательный рецепт очистки.
Токенизатор предложений должен отличать настоящие границы от знаков препинания внутри предложения.
- Точка может входить в сокращение Dr. или десятичное число 3.14.
- Кавычки, многоточия и заголовки требуют правил с учетом языка, а не одного разделителя.
- Библиотеки вроде spaCy используют обученные или основанные на правилах компоненты и сохраняют позиции символов для последующей разметки.
Зачем это спрашивают: Интервьюер оценивает понимание неоднозначных границ и пользу готовых токенизаторов.
Токенизатор слов должен последовательно определять границы и сохранять части, которые несут смысл для задачи.
- Повторные пробелы и переносы строк во многих корпусах служат разделителями, но исходные позиции символов все равно могут понадобиться.
- Пунктуацию часто выделяют в отдельные токены, чтобы запятые и вопросительные знаки оставались доступными признаками.
- Английское don't можно разделить на do и n't или оставить целиком, поэтому разметка и следующие компоненты должны использовать одно соглашение.
Зачем это спрашивают: Интервьюер проверяет, можете ли вы объяснить токенизацию как документированное соглашение с последствиями для следующих этапов.
Стемминг применяет приближенные правила отсечения аффиксов, а лемматизация возвращает словарную форму с учетом лингвистической информации.
- Стеммер может свести studies и studying к studi, хотя такого слова нет.
- Лемматизатор способен преобразовать was в be, если знает, что токен является глаголом.
- Стемминг быстр и подходит для поисковых признаков, а лемматизация лучше, когда важны читаемые или грамматически корректные формы.
Зачем это спрашивают: Интервьюер ждет точного различия и реалистичной причины выбрать каждый метод.
Удаление частых служебных слов может сократить пространство простых признаков, но способно стереть критичный для задачи смысл.
- Слова вроде the и of часто мало помогают тематическому классификатору на мешке слов.
- Удаление not из not good может перевернуть тональность, а удаление who ухудшит классификацию вопросов.
- Современные трансформерные токенизаторы обычно сохраняют стоп-слова, потому что модель использует контекст и порядок слов.
Зачем это спрашивают: Сильный ответ отвергает безусловное удаление стоп-слов и связывает решение с моделью и задачей.
Словесные n-граммы сохраняют короткие локальные последовательности, которые теряются в представлении униграммами.
- Признак-биграмма отличает not good от good, хотя обе фразы содержат токен good.
- N-граммы большего порядка передают больше структуры фразы, но создают намного более крупный и разреженный словарь.
- Практичный базовый вариант часто объединяет униграммы и биграммы с порогом минимальной частоты по документам.
Зачем это спрашивают: Интервьюер проверяет понимание дополнительного сигнала фраз и цены в виде разреженности.
Символьные n-граммы полезны, когда фрагменты написания и форма слов остаются информативными при шуме или незнакомых словах.
- Они могут связать run, running и runner через общие последовательности символов.
- Они устойчивы к некоторым опечаткам и хорошо работают для определения языка и пользовательских текстов.
- Они создают много признаков и могут находить случайные совпадения, поэтому диапазон n-грамм и пороги частоты проверяют на валидации.
Зачем это спрашивают: Интервьюер оценивает, знаете ли вы о преимуществах устойчивости и цене большого пространства признаков.
Мешок слов кодирует документ количеством или наличием терминов из словаря, отбрасывая их порядок.
- При словаре cat, sat, mat документ получает по одной числовой координате на каждый указанный термин.
- Представление легко интерпретировать, и оно хорошо работает как базовый вариант с линейными классификаторами.
- Оно не отличит dog bites man от man bites dog, если в двух предложениях одинаковые количества токенов.
Зачем это спрашивают: Интервьюер проверяет, можете ли вы описать представление, его практическую пользу и главное ограничение.
TF-IDF повышает вес термина, когда он часто встречается в одном документе, но редко во всей коллекции.
- Частота термина показывает, насколько сильно он представлен в текущем документе, обычно через количество или его логарифм.
- Обратная документная частота понижает вес повсеместных слов с учетом числа документов, содержащих термин.
- В итоговых векторах отличительный термин tokenizer перевешивает повсеместный термин document при поиске или классификации.
Зачем это спрашивают: Интервьюер хочет увидеть, что вы можете объяснить оба множителя и пользу их произведения.
Их хранят разреженно, потому что каждый документ использует лишь малую долю полного словаря.
- В корпусе из 100 000 терминов короткий документ может иметь только 80 ненулевых значений.
- Форматы вроде CSR хранят ненулевые значения и их индексы вместо выделения памяти под каждый ноль.
- Модели scikit-learn с поддержкой разреженных данных обучаются прямо на таком представлении без преобразования в плотный массив.
Зачем это спрашивают: Интервьюер проверяет, связываете ли вы размер текстового словаря с эффективными по памяти структурами данных.
Косинусное сходство измеряет близость направлений двух векторов, почти не учитывая их абсолютную длину.
- Оно равно скалярному произведению, деленному на произведение норм двух векторов.
- Два документа с похожими пропорциями TF-IDF могут получить высокий результат, даже если один намного длиннее.
- Значение около 1 означает сонаправленные неотрицательные текстовые векторы, а нулевой вектор требует особой обработки из-за нулевой нормы.
Зачем это спрашивают: Интервьюер оценивает геометрическую интуицию и знание пограничного случая с нулевым вектором.
One-hot-вектор идентифицирует элемент словаря, а обучаемый эмбеддинг представляет его плотными настраиваемыми признаками.
- Размерность one-hot-вектора равна размеру словаря, и любые два разных слова одинаково ортогональны.
- У эмбеддингов намного меньше измерений, например 300, а слова с похожим употреблением расположены ближе.
- One-hot-входы просты и точны, но обучаемые векторы позволяют переносить статистическую информацию между родственными словами.
Зачем это спрашивают: Интервьюер проверяет понимание разницы между идентификационными признаками и представлениями с обученным сходством.
CBOW предсказывает центральное слово по соседним, а skip-gram предсказывает соседние слова по центральному.
- Для фразы the cat sleeps CBOW может использовать the и sleeps, чтобы предсказать cat.
- Skip-gram может использовать cat, чтобы предсказать окружающие токены the и sleeps.
- CBOW часто быстрее обучается на частых закономерностях, а skip-gram может лучше представлять редкие слова.
Зачем это спрашивают: Интервьюер ждет доступного объяснения двух направлений предсказания и их обычного компромисса.
GloVe обучает векторы слов по агрегированной статистике их совместной встречаемости во всем корпусе.
- Метод опирается на частоту появления слов рядом друг с другом, а не только последовательно обрабатывает отдельные обучающие окна.
- Отношения вероятностей совместной встречаемости помогают кодировать связи между словами ice, steam, solid и gas.
- Как и стандартный Word2Vec, GloVe назначает слову один статический вектор независимо от контекста предложения.
Зачем это спрашивают: Интервьюер проверяет знание корпусной статистики совместной встречаемости и статической природы GloVe.
FastText представляет слово через его символьные n-граммы вместе с вектором целого слова.
- Слово playing может разделять фрагменты вроде play со словами played и player.
- Общие фрагменты улучшают векторы редких слов и позволяют приблизительно представить незнакомое написание.
- Это помогает языкам с богатой морфологией, хотя неродственные слова тоже могут иметь вводящие в заблуждение общие части.
Зачем это спрашивают: Интервьюер оценивает, можете ли вы связать подсловную композицию с обработкой редких и незнакомых слов.
Статические эмбеддинги дают слову один вектор, а контекстные строят вектор с учетом окружающего предложения.
- Word2Vec даст слову bank одинаковый вектор во фразах river bank и bank account.
- Энкодер BERT представит эти два употребления по-разному, потому что каждый токен учитывает контекст.
- Контекстные векторы лучше передают многозначность, но требуют более крупной модели и больше вычислений, чем таблица эмбеддингов.
Зачем это спрашивают: Интервьюер проверяет понимание того, почему контекст меняет представление токена и какой ценой.
Словарь токенизатора сопоставляет известные токены с целыми ID, а для элемента вне словаря нет собственной записи.
- Токенизатор по словам может заменить незнакомую фамилию одним неизвестным токеном и потерять ее написание.
- Подсловные токенизаторы обычно разбивают фамилию на известные части вместо полной потери информации.
- Словарь токенизатора должен соответствовать чекпоинту модели, потому что каждый ID выбирает конкретный обученный эмбеддинг.
Зачем это спрашивают: Интервьюер ждет ясной связи между словарем, неизвестными входами, ID токенов и совместимостью модели.
BPE многократно объединяет частые соседние символы, а затем применяет изученные слияния для разбиения нового текста.
- Обучение начинается с малых единиц вроде символов или байтов и объединяет пары наподобие l и o, если они часто встречаются вместе.
- Частые слова могут стать одним токеном, а редкие останутся несколькими переиспользуемыми частями.
- Список слияний и базовый словарь задают точное разбиение, поэтому на обучении и инференсе они должны совпадать.
Зачем это спрашивают: Интервьюер проверяет понимание BPE как обучения частым слияниям пар, а не произвольного разбиения слов.
WordPiece строит словарь подслов и разбивает слово на последовательность частей из этого фиксированного словаря.
- Частые слова могут остаться целыми, а редкие превращаются в части вроде play и ##ing в обозначениях BERT.
- При построении словаря полезные слияния выбираются по оценке, связанной с правдоподобием, а не только по сырой частоте пары.
- Если допустимую последовательность частей найти нельзя, реализация может выдать неизвестный токен.
Зачем это спрашивают: Интервьюер оценивает, можете ли вы отличить сегментацию WordPiece от токенизации по словам и BPE.
Закрытые вопросы
- 21
Как униграммный подсловный токенизатор выбирает разбиение?
tokenizationunigram-tokenizertokens - 22
Что такое маска внимания в батче трансформера с паддингом?
nlpattention-maskbatch - 23
Зачем при подготовке входов трансформера используют паддинг и обрезку?
nlptruncationcss - 24
Как максимальная длина последовательности влияет на NLP-модель?
nlp - 25
Какую роль играют обучающая, валидационная и тестовая выборки для текстовой модели?
validation - 26
Как дубликаты и связанные тексты вызывают утечку между выборками?
leakage - 27
Почему качество меток и дисбаланс классов важны в классификации текстов?
classificationimbalance - 28
Как precision, recall и F1 описывают классификатор?
evaluation - 29
Чем отличаются macro, micro и weighted F1 в многоклассовой классификации текстов?
classification - 30
Что показывает матрица ошибок текстового классификатора?
evaluation - 31
Когда кривая precision-recall информативнее ROC-кривой?
evaluation - 32
Что измеряет BLEU и каковы его главные ограничения?
bleu - 33
Как следует интерпретировать оценку ROUGE для системы суммаризации?
rougesystem-design - 34
Как exact match и token F1 оценивают экстрактивные ответы на вопросы?
tokensdecision-makingllm-eval - 35
Какие признаки может использовать модель определения языка?
language-id - 36
Что частеречная разметка назначает словам в предложении?
pos-tagging - 37
Что представляет синтаксический анализ зависимостей?
dependenciesdependency-parsing - 38
Что предсказывает распознавание именованных сущностей и почему важны границы сущностей?
ner - 39
Как теги BIO и BILOU кодируют границы сущностей?
bio-tagsbilou-tags - 40
Что такое классификация текста и чем она отличается от разметки последовательности?
classificationsequence-labeling - 41
Что предсказывает модель экстрактивных ответов на вопросы?
- 42
Почему BERT подходит для NER, а T5 естественным образом подходит для перевода?
bertt5 - 43
Как LSTM обрабатывает последовательность токенов и почему двунаправленная LSTM помогает в разметке?
tokenslstmconcurrency - 44
Что трансформерный энкодер выдает для входного предложения?
nlptransformer - 45
Как одномерная CNN над эмбеддингами токенов находит локальные текстовые шаблоны и в чем компромисс пулинга?
nlpembeddingstokens - 46
Чему BERT учится при предобучении с masked language modeling?
bert - 47
Что такое головной слой задачи и что меняется при fine-tuning?
fine-tuning - 48
Как батчи токенизированного текста представлены в PyTorch?
tokensbatchpytorch - 49
Какую роль играют токенизатор, модель и pipeline в Hugging Face?
tokensci-cd - 50
Как пайплайны spaCy и инструкции по аннотированию помогают получать надежные NLP-данные?
nlpci-cd - 51
Классификатор отзывов считает café и café разными токенами, а фигурные апострофы создают лишние элементы словаря. Как исправить предобработку?
tokens - 52
После удаления стоп-слов модель тональности получает похожие признаки для good и not good. Что вы измените?
stop-words - 53
В датасете тональности из соцсетей есть 😊, #NeverAgain и #GreatService, но текущая очистка их удаляет. Как её изменить?
- 54
Ваше разбиение на предложения делит Dr. Smith arrived at 3 p.m. на несколько предложений. Как найти и исправить проблему?
- 55
После добавления стемминга F1 классификации намерений падает, потому что разные продуктовые термины сводятся к одной основе. Что вы сделаете?
classificationdistinctstemming - 56
Вы получили 8 000 размеченных обращений в поддержку и должны до конца дня подготовить убедительный бейзлайн классификации. Что вы построите?
classification - 57
Ноутбук падает при вызове toarray для TF-IDF-матрицы из 200 000 документов и 100 000 признаков. Как это исправить?
tf-idf - 58
Текстовый классификатор получил 99 процентов на валидации, но вы нашли скопированные сообщения и в обучающей, и в валидационной выборке. Что вы сделаете?
validation - 59
Модель модерации хорошо работает на случайном разбиении, но много сообщений одного пользователя или треда попали в обе выборки. Как вы переразобьёте данные?
concurrency - 60
Только 3 процента обращений в поддержку срочные, и классификатор почти всегда выбирает основной класс. Как вы попробуете веса классов?
- 61
Классификатор токсичности использует порог 0,5, но команда хочет находить больше вредных сообщений ценой дополнительных ложных срабатываний для модераторов. Как выбрать порог?
thresholding - 62
Бинарный классификатор дал 40 истинно положительных, 10 ложноположительных, 20 ложноотрицательных и 930 истинно отрицательных ответов. Что показывает эта матрица ошибок?
evaluation - 63
У модели намерений с тремя классами accuracy 94 процента, но macro F1 всего 58 процентов. Как объяснить расхождение?
conflict - 64
В обучающем NER-файле организация размечена последовательностью O, I-ORG, I-ORG. Почему это ошибка BIO и как её обработать?
bio-tags - 65
Датасет NER с метками на уровне слов разбивается токенизатором на подтокены, поэтому логиты имеют по позиции на подтокен, а метки остаются по одной на слово. Как выровнять их через word_ids?
tokens - 66
Эталонная сущность New York в строке I love New York. подсвечивается как New Yor из-за неверной конечной символьной позиции. Как исправить логику span?
- 67
spaCy doc.char_span возвращает None для нескольких размеченных сущностей, хотя их текст выглядит правильным. Что вы проверите?
- 68
В разметке сущностями отмечены и Bank of America, и America, но присвоение их spaCy doc.ents завершается ошибкой. Как их представить?
- 69
Два аннотатора расходятся по 25 процентам сущностей организаций в пилоте из 200 документов. Что вы сделаете до обучения?
conflict - 70
Аннотаторы непоследовательно размечают названия продуктов, потому что в инструкции сказано только отмечать продукты. Как улучшить инструкцию?
- 71
После случайного разбиения в валидации осталось только два примера редкого намерения. Как создать более подходящее разбиение для классификации?
classificationvalidation - 72
Вы загружаете чекпоинт классификатора BERT с токенизатором от другой модели, и предсказания становятся бессмысленными. Что проверить первым?
tokensbert - 73
Предсказания для батча с padding отличаются от инференса по одному примеру, потому что модель обращает внимание на padding-токены. Как это исправить?
batchinferencetokens - 74
Локальный токенизатор передает последовательность из 900 токенов в энкодер с лимитом 512, потому что усечение отключено, и возникает ошибка индекса или формы тензора во время выполнения. Как вы это исправите?
tokenstruncationindexes - 75
Hugging Face DataLoader падает при обучении, потому что токенизированные примеры имеют разную длину. Какой data collator вы используете?
tokens - 76
Обучение на трех классах падает с ошибкой формы головы классификатора после загрузки чекпоинта, обученного для двух меток. Что вы измените?
- 77
Валидационные предсказания сохранённой модели меняются при повторных запусках, потому что dropout остаётся активным. Как это исправить локально?
validation - 78
Loss при обучении ведёт себя странно, потому что градиенты всех батчей продолжают накапливаться. Какая строка, вероятно, пропущена в цикле?
batch - 79
Loss небольшого текстового классификатора через несколько обновлений становится NaN, а нормы градиентов резко растут. Какие базовые проверки вы сделаете?
- 80
Во время обучения PyTorch выдаёт Expected all tensors to be on the same device. Как исправить ошибку?
pytorch - 81
Два запуска одного ноутбука дают заметно разные валидационные результаты. Как сделать эксперимент более воспроизводимым?
reproducibilityvalidationexperiments - 82
Hugging Face Dataset.map работает медленно, потому что токенизатор обрабатывает по одной строке. Как правильно использовать пакетное отображение?
tokensbatchconcurrency - 83
После загрузки экспортированного CSV текст с диакритикой искажён, а часть меток оказалась не в том столбце. Как найти причину?
schema - 84
Для локального эксперимента нужна повторяемая выборка из 10 000 размеченных сообщений из SQL. Как вы получите и проверите её?
sqlqueriesvalidation - 85
NER-модель показывает 98 процентов точности по токенам, но пропускает много полных имён людей. Какую оценку вы добавите?
tokensllm-eval - 86
Модель question answering выделяет неверную подстроку, хотя эталонный ответ есть в контексте. Как проверить позиции ответа?
- 87
У суммаризатора высокий ROUGE, но проверяющие говорят, что он сохраняет формулировки и при этом меняет важные факты. Как его оценивать?
llm-evaldecision-makingrouge - 88
Мультиязычный классификатор работает на простом английском, но ошибается на названиях вроде Łódź и при смене регистра в турецком тексте. Какую предобработку вы пересмотрите?
- 89
В сервисе есть отдельные английский и испанский классификаторы, но короткие и смешанные сообщения маршрутизируются неверно. Как улучшить language-ID routing?
- 90
Классификатор на FastText встречает новое доменное слово с опечаткой, которого нет в списке слов. Как проверить его представление?
fasttext - 91
Нужно классифицировать 5 000 локальных предложений моделью Hugging Face без переполнения памяти. Как реализовать пакетный инференс?
batchinferencememory - 92
REST-эндпоинт классификации падает, если text отсутствует, пустой или заменён списком из 100 000 элементов. Какую валидацию вы добавите?
restendpointsvalidation - 93
Docker-образ запускает NLP API, но падает с model artifact not found, хотя на хосте тот же код работает. Что вы проверите?
dockerartifactsapi - 94
API классификации возвращает 0 и 1, но клиентам нужны negative и positive. Где вы исправите ответ?
classificationapi - 95
После получения проекта коллега не может воспроизвести результат из вашего Jupyter-ноутбука. Что вы добавите для воспроизводимости?
reproducibilitydebuggingpython - 96
Общий F1 модели намерений приемлем, но пользователи сообщают о множестве ошибок на коротких сообщениях и испанском тексте. Как провести анализ по срезам?
- 97
Обычный текстовый классификатор путает два намерения, когда пользователи упоминают внутренние коды продуктов вроде ZX-410. Как учесть доменную лексику?
- 98
Какие простые проверки качества вы запустите перед обучением на 30 000 новых размеченных NER-предложений?
- 99
Коллега предлагает сразу файн-тюнить трансформер для датасета тональности из 2 000 строк. Какой бейзлайн вы потребуете сначала?
nlpfine-tuning - 100
Классификатор правильно отвечает в ноутбуке, но локальный API выдаёт другую метку для того же предложения. Как найти проблему?
api