Skip to content

Вопросы на собеседовании: NLP-инженер

100 реальных вопросов с образцовыми ответами и пояснениями для уровня NLP-инженер I.

Смотреть пример резюме: NLP-инженер

Тренировка флешкарточками

Интервальное повторение · Hunter Pass

Вопросы

nlpnormalizationci-cd

Нормализация Unicode приводит визуально одинаковый текст к единому представлению символов перед анализом.

  • В слове café символ é может храниться одной кодовой точкой или как e с отдельным комбинируемым ударением.
  • NFC обычно объединяет символы, а NFKC также сводит совместимые формы, например полноширинные латинские буквы.
  • Выбранную форму нужно применять одинаково, иначе различия между обучением и инференсом создадут ложные расхождения в словаре.

Зачем это спрашивают: Интервьюер проверяет, знаете ли вы, что визуально одинаковые строки могут иметь разное внутреннее представление.

normalization

Нормализация текста должна убирать несущественные различия, не стирая признаки, нужные задаче.

  • Нижний регистр поможет простой поисковой модели сопоставить Apple и apple, но уберет полезный для NER признак компании и фрукта.
  • Удаление диакритики может улучшить поиск по шумному тексту, но способно объединить разные слова или имена во французском и испанском.
  • Хороший пайплайн фиксирует выбор для конкретной задачи и одинаково обрабатывает обучающие, валидационные и входящие тексты.

Зачем это спрашивают: Сильный ответ рассматривает нормализацию как выбор под задачу, а не как обязательный рецепт очистки.

tokenssentence-split

Токенизатор предложений должен отличать настоящие границы от знаков препинания внутри предложения.

  • Точка может входить в сокращение Dr. или десятичное число 3.14.
  • Кавычки, многоточия и заголовки требуют правил с учетом языка, а не одного разделителя.
  • Библиотеки вроде spaCy используют обученные или основанные на правилах компоненты и сохраняют позиции символов для последующей разметки.

Зачем это спрашивают: Интервьюер оценивает понимание неоднозначных границ и пользу готовых токенизаторов.

tokenstokenization

Токенизатор слов должен последовательно определять границы и сохранять части, которые несут смысл для задачи.

  • Повторные пробелы и переносы строк во многих корпусах служат разделителями, но исходные позиции символов все равно могут понадобиться.
  • Пунктуацию часто выделяют в отдельные токены, чтобы запятые и вопросительные знаки оставались доступными признаками.
  • Английское don't можно разделить на do и n't или оставить целиком, поэтому разметка и следующие компоненты должны использовать одно соглашение.

Зачем это спрашивают: Интервьюер проверяет, можете ли вы объяснить токенизацию как документированное соглашение с последствиями для следующих этапов.

stemminglemmatization

Стемминг применяет приближенные правила отсечения аффиксов, а лемматизация возвращает словарную форму с учетом лингвистической информации.

  • Стеммер может свести studies и studying к studi, хотя такого слова нет.
  • Лемматизатор способен преобразовать was в be, если знает, что токен является глаголом.
  • Стемминг быстр и подходит для поисковых признаков, а лемматизация лучше, когда важны читаемые или грамматически корректные формы.

Зачем это спрашивают: Интервьюер ждет точного различия и реалистичной причины выбрать каждый метод.

stop-words

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

  • Слова вроде the и of часто мало помогают тематическому классификатору на мешке слов.
  • Удаление not из not good может перевернуть тональность, а удаление who ухудшит классификацию вопросов.
  • Современные трансформерные токенизаторы обычно сохраняют стоп-слова, потому что модель использует контекст и порядок слов.

Зачем это спрашивают: Сильный ответ отвергает безусловное удаление стоп-слов и связывает решение с моделью и задачей.

word-ngrams

Словесные n-граммы сохраняют короткие локальные последовательности, которые теряются в представлении униграммами.

  • Признак-биграмма отличает not good от good, хотя обе фразы содержат токен good.
  • N-граммы большего порядка передают больше структуры фразы, но создают намного более крупный и разреженный словарь.
  • Практичный базовый вариант часто объединяет униграммы и биграммы с порогом минимальной частоты по документам.

Зачем это спрашивают: Интервьюер проверяет понимание дополнительного сигнала фраз и цены в виде разреженности.

char-ngrams

Символьные n-граммы полезны, когда фрагменты написания и форма слов остаются информативными при шуме или незнакомых словах.

  • Они могут связать run, running и runner через общие последовательности символов.
  • Они устойчивы к некоторым опечаткам и хорошо работают для определения языка и пользовательских текстов.
  • Они создают много признаков и могут находить случайные совпадения, поэтому диапазон n-грамм и пороги частоты проверяют на валидации.

Зачем это спрашивают: Интервьюер оценивает, знаете ли вы о преимуществах устойчивости и цене большого пространства признаков.

bag-of-words

Мешок слов кодирует документ количеством или наличием терминов из словаря, отбрасывая их порядок.

  • При словаре cat, sat, mat документ получает по одной числовой координате на каждый указанный термин.
  • Представление легко интерпретировать, и оно хорошо работает как базовый вариант с линейными классификаторами.
  • Оно не отличит dog bites man от man bites dog, если в двух предложениях одинаковые количества токенов.

Зачем это спрашивают: Интервьюер проверяет, можете ли вы описать представление, его практическую пользу и главное ограничение.

tf-idf

TF-IDF повышает вес термина, когда он часто встречается в одном документе, но редко во всей коллекции.

  • Частота термина показывает, насколько сильно он представлен в текущем документе, обычно через количество или его логарифм.
  • Обратная документная частота понижает вес повсеместных слов с учетом числа документов, содержащих термин.
  • В итоговых векторах отличительный термин tokenizer перевешивает повсеместный термин document при поиске или классификации.

Зачем это спрашивают: Интервьюер хочет увидеть, что вы можете объяснить оба множителя и пользу их произведения.

bag-of-wordstf-idf

Их хранят разреженно, потому что каждый документ использует лишь малую долю полного словаря.

  • В корпусе из 100 000 терминов короткий документ может иметь только 80 ненулевых значений.
  • Форматы вроде CSR хранят ненулевые значения и их индексы вместо выделения памяти под каждый ноль.
  • Модели scikit-learn с поддержкой разреженных данных обучаются прямо на таком представлении без преобразования в плотный массив.

Зачем это спрашивают: Интервьюер проверяет, связываете ли вы размер текстового словаря с эффективными по памяти структурами данных.

tf-idfsimilarity

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

  • Оно равно скалярному произведению, деленному на произведение норм двух векторов.
  • Два документа с похожими пропорциями TF-IDF могут получить высокий результат, даже если один намного длиннее.
  • Значение около 1 означает сонаправленные неотрицательные текстовые векторы, а нулевой вектор требует особой обработки из-за нулевой нормы.

Зачем это спрашивают: Интервьюер оценивает геометрическую интуицию и знание пограничного случая с нулевым вектором.

nlpfeature-engineeringembeddings

One-hot-вектор идентифицирует элемент словаря, а обучаемый эмбеддинг представляет его плотными настраиваемыми признаками.

  • Размерность one-hot-вектора равна размеру словаря, и любые два разных слова одинаково ортогональны.
  • У эмбеддингов намного меньше измерений, например 300, а слова с похожим употреблением расположены ближе.
  • One-hot-входы просты и точны, но обучаемые векторы позволяют переносить статистическую информацию между родственными словами.

Зачем это спрашивают: Интервьюер проверяет понимание разницы между идентификационными признаками и представлениями с обученным сходством.

word2veccbowskip-gram

CBOW предсказывает центральное слово по соседним, а skip-gram предсказывает соседние слова по центральному.

  • Для фразы the cat sleeps CBOW может использовать the и sleeps, чтобы предсказать cat.
  • Skip-gram может использовать cat, чтобы предсказать окружающие токены the и sleeps.
  • CBOW часто быстрее обучается на частых закономерностях, а skip-gram может лучше представлять редкие слова.

Зачем это спрашивают: Интервьюер ждет доступного объяснения двух направлений предсказания и их обычного компромисса.

glove

GloVe обучает векторы слов по агрегированной статистике их совместной встречаемости во всем корпусе.

  • Метод опирается на частоту появления слов рядом друг с другом, а не только последовательно обрабатывает отдельные обучающие окна.
  • Отношения вероятностей совместной встречаемости помогают кодировать связи между словами ice, steam, solid и gas.
  • Как и стандартный Word2Vec, GloVe назначает слову один статический вектор независимо от контекста предложения.

Зачем это спрашивают: Интервьюер проверяет знание корпусной статистики совместной встречаемости и статической природы GloVe.

fasttext

FastText представляет слово через его символьные n-граммы вместе с вектором целого слова.

  • Слово playing может разделять фрагменты вроде play со словами played и player.
  • Общие фрагменты улучшают векторы редких слов и позволяют приблизительно представить незнакомое написание.
  • Это помогает языкам с богатой морфологией, хотя неродственные слова тоже могут иметь вводящие в заблуждение общие части.

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

nlpembeddingscontextual-embeddings

Статические эмбеддинги дают слову один вектор, а контекстные строят вектор с учетом окружающего предложения.

  • Word2Vec даст слову bank одинаковый вектор во фразах river bank и bank account.
  • Энкодер BERT представит эти два употребления по-разному, потому что каждый токен учитывает контекст.
  • Контекстные векторы лучше передают многозначность, но требуют более крупной модели и больше вычислений, чем таблица эмбеддингов.

Зачем это спрашивают: Интервьюер проверяет понимание того, почему контекст меняет представление токена и какой ценой.

tokensoov

Словарь токенизатора сопоставляет известные токены с целыми ID, а для элемента вне словаря нет собственной записи.

  • Токенизатор по словам может заменить незнакомую фамилию одним неизвестным токеном и потерять ее написание.
  • Подсловные токенизаторы обычно разбивают фамилию на известные части вместо полной потери информации.
  • Словарь токенизатора должен соответствовать чекпоинту модели, потому что каждый ID выбирает конкретный обученный эмбеддинг.

Зачем это спрашивают: Интервьюер ждет ясной связи между словарем, неизвестными входами, ID токенов и совместимостью модели.

feature-engineeringtokensbpe

BPE многократно объединяет частые соседние символы, а затем применяет изученные слияния для разбиения нового текста.

  • Обучение начинается с малых единиц вроде символов или байтов и объединяет пары наподобие l и o, если они часто встречаются вместе.
  • Частые слова могут стать одним токеном, а редкие останутся несколькими переиспользуемыми частями.
  • Список слияний и базовый словарь задают точное разбиение, поэтому на обучении и инференсе они должны совпадать.

Зачем это спрашивают: Интервьюер проверяет понимание BPE как обучения частым слияниям пар, а не произвольного разбиения слов.

tokenswordpiece

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