Мощный блог

Классический NLP: TF-IDF, Word2Vec и рекуррентные сети

29 августа 2026 · Собесы

Темы 35–39: препроцессинг текста, мешок слов и TF-IDF, Word2Vec, GloVe и FastText, RNN, LSTM и seq2seq, классические задачи NLP и их метрики.

Эта часть спрашивается реже, чем трансформеры, но полностью игнорировать её нельзя: TF-IDF всё ещё живёт в гибридном поиске (BM25), а вопросы про Word2Vec и LSTM задают как проверку того, понимаете ли вы, откуда всё выросло. Держите её в голове конспективно.

35. Препроцессинг текста

Важность на собеседовании: 4/10 ████░░░░░░

🔥 Иногда. Раньше был обязателен, сейчас в эпоху трансформеров спрашивают меньше. Главный современный поворот вопроса: «а нужен ли препроцессинг перед BERT?» — знать ответ обязательно.

Классический пайплайн: нормализация регистра → удаление пунктуации/цифр/HTML → токенизация → удаление стоп-слов → стемминг или лемматизация → векторизация.

Стемминг vs лемматизация. Стемминг (Портер, Snowball) грубо отрезает окончания по правилам: «бегущий» → «бегущ». Быстро, но результат может не быть словом. Лемматизация приводит к словарной форме с учётом морфологии и части речи: «бежал» → «бежать». Медленнее, но корректно. Для русского языка лемматизация практически обязательна из-за богатой морфологии: pymorphy3, Natasha, spaCy (ru_core_news), Stanza.

Особенности русского языка (спрашивают, если позиция про русский): свободный порядок слов, богатая флективная морфология (одно слово — десятки форм), омонимия форм («стали» — глагол или существительное), составные слова через дефис («бизнес-ланч» — одно слово, «инженер-программист» — по смыслу два), ё/е, буквы-омоглифы из латиницы в спаме.

Главный современный ответ. Перед современными трансформерами агрессивный препроцессинг вреден. Стоп-слова несут синтаксическую информацию, которую использует attention; стемминг ломает подсловную токенизацию, под которую модель предобучена; удаление пунктуации убирает границы предложений. Правило: для BERT/GPT — минимальная очистка (мусорные символы, дубликаты, нормализация пробелов и юникода), для TF-IDF/BM25 — полный классический пайплайн.

36. Мешок слов, TF-IDF, n-граммы

Важность на собеседовании: 7/10 ███████░░░

🔥🔥 Часто — но не сам по себе, а потому что BM25 остаётся половиной гибридного поиска в RAG. Вопрос «зачем в 2026 году лексический поиск, если есть эмбеддинги» задают регулярно.

Bag of Words. Документ = вектор частот слов, порядок теряется. Размерность = размер словаря, матрица разреженная.

TF-IDF = tf(t,d) · log(N/df(t)). Идея: слово важно, если часто встречается в документе (TF) и редко — в коллекции (IDF). Обнуляет вклад слов вроде «и», «в», которые есть везде.

BM25 — улучшенный TF-IDF, стандарт лексического поиска (Elasticsearch, OpenSearch, Lucene). Два улучшения: насыщение TF (десятое вхождение слова добавляет меньше, чем второе — параметр k₁) и нормализация на длину документа (параметр b, чтобы длинные документы не выигрывали автоматически).

n-граммы частично возвращают порядок: биграммы «не хорошо» ≠ «хорошо». Цена — взрыв размерности. Символьные n-граммы устойчивы к опечаткам и полезны для морфологически богатых языков.

Почему это живо в 2026 (главный ответ). Плотные эмбеддинги плохо ловят точные совпадения: артикулы, коды ошибок, названия моделей, редкие термины, аббревиатуры, имена собственные. Запрос «ошибка E-4271» эмбеддинг «размажет» по смыслу, а BM25 найдёт точно. Поэтому продовый RAG — гибридный: BM25 + плотный поиск, объединённые через Reciprocal Rank Fusion. Измеренный эффект гибрида — порядка +10 пунктов MRR и +15–30% релевантности по сравнению с чисто семантическим поиском.

37. Word2Vec, GloVe, FastText

Важность на собеседовании: 5/10 █████░░░░░

🔥 Иногда. Спрашивают как «историю вопроса» и чтобы проверить понимание идеи дистрибутивной семантики. Negative sampling — популярный уточняющий вопрос. Глубоко не копают.

Идея (гипотеза дистрибутивной семантики): слова, встречающиеся в похожих контекстах, имеют похожий смысл.

Word2Vec (2013), две архитектуры:

  • CBOW — предсказать слово по контексту. Быстрее, лучше для частых слов.
  • Skip-gram — предсказать контекст по слову. Медленнее, лучше для редких слов и малых корпусов.

Negative sampling — ключевая деталь. Полный softmax по словарю в 100k слов на каждом шаге неподъёмен. Вместо этого задача переформулируется как бинарная: отличить настоящую пару (слово, контекст) от 5–20 случайно подобранных «отрицательных» пар. Отрицательные слова сэмплируются с вероятностью, пропорциональной freq^0.75 — эта степень сглаживает распределение, чтобы частые слова не доминировали. Альтернатива — иерархический softmax (дерево Хаффмана, O(log|V|)), но на практике negative sampling работает лучше на аналогиях.

GloVe — факторизация матрицы совстречаемости слов: сочетает глобальную статистику корпуса с локальным контекстным окном.

FastText — слово представляется как сумма эмбеддингов символьных n-грамм. Два следствия: (1) умеет строить вектор для невиданного слова (нет проблемы OOV), (2) отлично работает на морфологически богатых языках вроде русского, потому что подхватывает общий корень у разных словоформ.

Главное ограничение всех трёх: один вектор на слово, вне зависимости от контекста. «Ключ» от двери и «ключ» в лесу получают один и тот же вектор. Именно эту проблему решили контекстные эмбеддинги (ELMo → BERT).

Знаменитый пример: vec("король") − vec("мужчина") + vec("женщина") ≈ vec("королева"). Полезно упомянуть, но и добавить, что на практике такие аналогии работают выборочно и зависят от корпуса.

38. RNN, LSTM, GRU, seq2seq

Важность на собеседовании: 5/10 █████░░░░░

🔥 Иногда. В 2026 RNN в проде почти нет, но вопрос «зачем понадобился attention» невозможно объяснить, не зная про bottleneck seq2seq. Спрашивают именно как мостик к трансформерам. Учить конспективно.

RNN. h_t = tanh(W_h h_{t−1} + W_x x_t). Скрытое состояние переносит информацию по шагам. Проблема — затухающий/взрывающийся градиент: при обратном распространении через T шагов градиент множится на одну и ту же матрицу T раз. Практический предел памяти — 10–20 шагов.

LSTM. Добавляет состояние ячейки C_t с аддитивным обновлением и три гейта: forget (что забыть), input (что записать), output (что выдать). Аддитивность — ключ: градиент течёт по «магистрали» состояния ячейки без многократного умножения, поэтому длинные зависимости выживают.

GRU — упрощение LSTM: два гейта (update и reset), нет отдельного состояния ячейки. Меньше параметров, быстрее, качество сопоставимо.

seq2seq (энкодер-декодер). Энкодер сжимает весь вход в один вектор фиксированной длины, декодер по нему генерирует выход. Bottleneck-проблема: предложение из 50 слов и из 5 слов сжимаются в вектор одного размера — для длинных входов информация теряется.

Attention (Bahdanau, 2014) как решение. Декодер на каждом шаге смотрит на все скрытые состояния энкодера и взвешивает их: «при генерации этого слова важны вот эти позиции входа». Bottleneck исчезает. Дальше Vaswani et al. (2017) сделали радикальный шаг: убрали рекуррентность вообще и оставили только внимание. Отсюда название «Attention Is All You Need».

Почему трансформеры победили: RNN обрабатывает последовательность строго по одному шагу — обучение непараллелизуемо. Трансформер обрабатывает все позиции одновременно, что позволяет использовать GPU полностью и обучаться на несопоставимо больших корпусах.

39. Классические задачи и метрики NLP

Важность на собеседовании: 8/10 ████████░░

🔥🔥 Часто для NLP-ролей. BLEU/ROUGE спрашивают почти всегда вместе с вопросом «а почему их мало для LLM». Постановки задач (NER как BIO-разметка) — средняя глубина.

Задачи:

  • Классификация текста — тональность, тематика, спам, интент.
  • NER (распознавание сущностей) — разметка в схеме BIO/BIOES: B-PER (начало сущности), I-PER (продолжение), O (не сущность). Оценивается по F1 на уровне сущностей целиком, а не токенов: частично угаданная сущность считается ошибкой (seqeval).
  • POS-теггинг, парсинг зависимостей.
  • Question Answering — экстрактивный (найти спан в тексте, метрики EM и token-F1) и абстрактивный (сгенерировать ответ).
  • Суммаризация — экстрактивная (выбрать предложения) и абстрактивная (переписать).
  • Машинный перевод, генерация.

Метрики генерации:

  • BLEU — точность по n-граммам с штрафом за краткость (brevity penalty). Для перевода. Не учитывает синонимы и перефразы.
  • ROUGE — полнота по n-граммам. Для суммаризации. ROUGE-L — по самой длинной общей подпоследовательности.
  • METEOR — учитывает синонимы и стемминг, лучше коррелирует с человеческой оценкой.
  • chrF — на символьных n-граммах, лучше для морфологически богатых языков (в том числе русского).
  • BERTScore — косинусная близость контекстных эмбеддингов вместо точного совпадения слов. Ловит перефразы.
  • Перплексия — качество языковой модели, а не задачи (см. тему 10).

Главная мысль для LLM-эпохи. BLEU/ROUGE меряют лексическое пересечение с эталоном. Для открытых задач (диалог, объяснение, рассуждение) правильных ответов бесконечно много, и эти метрики почти не коррелируют с человеческой оценкой. Поэтому в 2026 качество LLM меряют через: (1) задачные метрики там, где есть верный ответ (accuracy, EM, pass@k для кода); (2) LLM-as-judge с валидированным на людях промптом; (3) человеческую разметку на срезе; (4) продуктовые метрики (доля эскалаций в поддержку, конверсия, время решения). Ответ «мерил BLEU» на вопрос про качество чат-бота — красный флаг.


Часть 8 из 17 конспекта для подготовки к собеседованиям на NLP/LLM-разработчика. Остальные части — в разделе «Собесы».

0,0
0 оценок
5★
0
4★
0
3★
0
2★
0
1★
0

Оставить отзыв

Нажмите на звезду для оценки от 1 до 5
Необязательно. Используется только для связи
0/2000

Комментарии

Все С ответами Проверенные Только 4-5★