nlp
April 7

Вопросы с собесов. База по NLP

Рассмотрим самые популярные вопросы по классическому NLP: от предобработки текста до Word2Vec.

Вопросы:

  • Какие основные задачи решает NLP?
  • Какие основные этапы обработки текста в NLP?
  • В чем разница между лемматизацией и стеммингом?
  • Что такое стоп-слова и почему их нужно удалять?
  • Что такое Bag of Words (BoW)?
  • Что такое TF-IDF (Term Frequency-Inverted Document Frequency)?
  • Что такое BM25?
  • Что такое word embeddings?
  • Как считается близость между векторами?
  • Что такое Word2Vec?
  • Что такое FastText?
  • Что такое GloVe (Global Vectors for Word Representation)?

Какие основные задачи решает NLP?

  • Классификация / регрессия текста
    определение тональности, спам-фильтры, анализ тематики, предсказание возраста / цены
  • Извлечение информации
    Named Entity Recognition, факты
  • Генерация текста
    чат-боты, LLM, текстовые автодополнения, машинный перевод, RAG
  • Ранжирование / поиск
    Как семантический поиск, так и поиск по ключевым словам
  • Векторные представления
    Для того, чтобы добавить текстовые признаки в какую-нибудь другую модель

Какие основные этапы обработки текста в NLP?

  • фильтрация
  • токенизация
  • лемматизация / стемминг
  • векторное представление

В чем разница между лемматизацией и стеммингом?

  • Стемминг — алгоритмический подход, который просто отрезает окончания (не всегда грамматически правильно).
    (пример: "running" → "run", но "studies" → "studi")
  • Лемматизация — использует морфологические базы и правила языка, поэтому точность выше.
    (пример: "бегущий" → "бежать")

Что такое стоп-слова и почему их нужно удалять?

Стоп-слова — это часто встречающиеся слова (например, "и", "в", "на", "the", "is"), которые мало влияют на смысл текста. Они удаляются, чтобы снизить размерность и шум в данных при анализе.

Что такое Bag of Words (BoW)?

Составляем вектор текста по частоте встречаемости слов в нем.

Исключаем заранее заданные стоп-слова.

Особенности:

  • Не учитывает семантику и порядок (синонимы будут разными векторами)
  • Может приводить к разреженным векторам (особенно для больших корпусов)
  • Требует больших объемов памяти
  • Требует сильной предобработки

Что такое TF-IDF (Term Frequency-Inverted Document Frequency)?

Вместо обычной частоты слова, мы балансируем между распространенными и редкими (потенциально более информативными словами).

TF(t,d) * IDF(t,D)

где TF (Term Frequency) — частота появления термина в документе

IDF (Inverse Document Frequency) —  обратная частота документа

Вектор представления документа будет выглядеть как набор tf-idf по словам в корпусе.

А именно:

  • там будет столько элементов, сколько у нас уникальных слов
  • для каждого слова мы будет считать TF(t, d) * IDF(t, D)
  • таким образом у нас все вектора будут одного размера и каждый текст будет иметь свое уникальное векторное представление

Плюсы:

  • Простота реализации
  • Эффективность для небольших корпусов

Минусы:

  • Не учитывает порядок слов
  • Плохо работает с многозначными словами
  • Нормализация по длине документа не всегда адекватна
  • Требует больших объемов памяти

Что такое BM25?

BM25 (Best Matching 25) — улучшенная версия TF-IDF, используемая в поисковых системах для ранжирования документов.

Плюсы:

  • Просто и быстро работает
  • Лучше ранжирует релевантные документы
  • Нормализует длину документа, устраняя проблему TF-IDF
  • Используется в полнотекстовом поиске (Elasticsearch)

Минусы:

  • Не учитывает порядок слов
  • Чувствителен к гиперпараметрам

Что такое word embeddings?

Word embeddings — это метод представления слов в виде плотных (dense) векторов в многомерном пространстве, где семантически похожие слова располагаются ближе друг к другу. В отличие от Bag of Words и TF-IDF, embeddings захватывают контекст и смысл слов.

Как считается близость между векторами?

  • косинусная близость - косинус угла между векторами (скалярное произведение / нормы векторов)
  • евклидовое расстояние - корень из суммы квадратов разностей между координатами
  • манхеттенское расстояние - сумму модулей разности между координатами

Что такое Word2Vec?

Метод получения вектора слова фиксированного размера = его эмбеддинга по контексту этого слова.

Проходимся окном контекста по тексту и может обучаться на 2 задачи: Skip-Gram или CBOW.

  • Skip-Gram — из центрального слова предсказываем контекст

для небольших корпусов, хорошо работает даже с редкими словами

  • CBOW — по сумме векторов контекста предсказываем само слово

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

Как мы видим, у нас есть две большие матрицы U и V. В одной лежат вектора слов, когда они являются контекстом, а в другой когда они центральное слово.

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

Слова из контекста несложно получить - просто проходимся окном фиксированного размера и на каждом шаге имеем центральное слово и слова контекста.

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

Семплируем взвешенно относительно частоты встречаемости слова в корпусе, но корректируем таким образом, чтобы немного чаще выбирались более редкие слова (возводим частоту в степень ¾)

Шаги 1, 2, 3 нам напоминают формулу софтмакса, а это на самом деле и хорошо.

И теперь мы можем обучать наш word2vec с помощью sgd на кросс-энтропию между истинным распределением и предсказанным.

Плюсы:

  • Хорошо улавливает семантические и синтаксические связи между словами
  • Интерпретируемость –Близкие по смыслу слова оказываются рядом в векторном пространстве.
  • Простота использования – Готовая реализация в библиотеках
  • Работа с контекстом – Учитывает окружение слов

Минусы:

  • Не учитывает многозначность слов – Каждому слову соответствует один вектор, даже если оно имеет несколько значений
  • Не обрабатывает OOV-слова – Если слова не было в обучающей выборке, модель не сможет создать для него вектор
  • В разных предложениях эмбеддинг слова будет один и тот же, в отличие, например, от моделей типа BERT.

Что такое FastText?

Улучшает Word2Vec, разбивая слова на n-граммы.

Помогает работать с морфологически богатыми языками, редкими словами, опечатками, незнакомыми словами.

Вектор слова — это сумма векторов н-граммы слова.

Что такое GloVe (Global Vectors for Word Representation)?

Объединяет частотные подходы и обучение через SGD как у Word2Vec.

Работает так:

  • строим матрицу со встречаемости слов в корпусе
    получается большая квадратная матрица
  • нормализуем частоты, чтобы сгладить слишком частые и редкие слова
  • у нас также есть 2 матрицы для векторов слов
  • обучаем с помощью SGD на лосс таким образом, чтобы вектора слов были другу на друга более похожи, если их совстречаемость выше

Плюсы:

  • Учитывает глобальную статистику корпуса (Word2Vec работает только на локальных окнах контекста)
  • Хорошо отражает семантические и синтаксические связи между словами
  • Обучается быстрее, чем Word2Vec (потому что использует матричное представление)

Минусы:

  • Требует большого корпуса для построения матрицы совместных встречаемостей
  • Потребляет много памяти (матрица соразмерна квадрату словаря)
  • Дает статические векторы, которые не зависят от контекста (в отличие от, например, эмбеддингов BERT)