Вопросы с собесов. База по 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 (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.
для небольших корпусов, хорошо работает даже с редкими словами
быстрее обучается и для популярных слов качество выше
Как мы видим, у нас есть две большие матрицы U и V. В одной лежат вектора слов, когда они являются контекстом, а в другой когда они центральное слово.
Это все дело обучаем, используя косинусную близость, то есть увеличиваем скалярное произведение векторов слов, которые находятся в одном контексте, и отдаляем их друг от друга, если они не встречаются вместе.
Слова из контекста несложно получить - просто проходимся окном фиксированного размера и на каждом шаге имеем центральное слово и слова контекста.
Негативные слова мы случайно семплируем из всех остальных слов в словаре, это существенно ускоряет обучение, по сравнению с тем, когда мы для всех слов не из контекста увеличиваем расстояние.
Семплируем взвешенно относительно частоты встречаемости слова в корпусе, но корректируем таким образом, чтобы немного чаще выбирались более редкие слова (возводим частоту в степень ¾)
Шаги 1, 2, 3 нам напоминают формулу софтмакса, а это на самом деле и хорошо.
И теперь мы можем обучать наш word2vec с помощью sgd на кросс-энтропию между истинным распределением и предсказанным.
- Хорошо улавливает семантические и синтаксические связи между словами
- Интерпретируемость –Близкие по смыслу слова оказываются рядом в векторном пространстве.
- Простота использования – Готовая реализация в библиотеках
- Работа с контекстом – Учитывает окружение слов
- Не учитывает многозначность слов – Каждому слову соответствует один вектор, даже если оно имеет несколько значений
- Не обрабатывает OOV-слова – Если слова не было в обучающей выборке, модель не сможет создать для него вектор
- В разных предложениях эмбеддинг слова будет один и тот же, в отличие, например, от моделей типа BERT.
Что такое FastText?
Улучшает Word2Vec, разбивая слова на n-граммы.
Помогает работать с морфологически богатыми языками, редкими словами, опечатками, незнакомыми словами.
Вектор слова — это сумма векторов н-граммы слова.
Что такое GloVe (Global Vectors for Word Representation)?
Объединяет частотные подходы и обучение через SGD как у Word2Vec.
- строим матрицу со встречаемости слов в корпусе
получается большая квадратная матрица - нормализуем частоты, чтобы сгладить слишком частые и редкие слова
- у нас также есть 2 матрицы для векторов слов
- обучаем с помощью SGD на лосс таким образом, чтобы вектора слов были другу на друга более похожи, если их совстречаемость выше