Векторное представление слов

Векторные представления слов (Word Embeddings) — это числовые векторы, которые кодируют семантическое и синтаксическое значение слов так, что слова с похожим значением имеют близкие векторные представления в многомерном пространстве.

Представьте, что каждое слово — это точка в пространстве. Чем ближе точки, тем более «похожи» слова.

Пример 1. Векторное представление слов (упрощенно):

  • «Кошка» = [0.7, 0.3]
  • «Собака» = [0.6, 0.4]
  • «Самолет» = [-0.2, -0.8]

Здесь «кошка» и «собака» близки, а «самолет» далеко от них.


Пример 2. Расчет семантической близости слов

В современных NLP слова кодируются как векторы в многомерном пространстве (обычно от 50 до 300 измерений), и это позволяет компьютеру работать с семантикой и синтаксисом языка математически. Разберем ключевые аспекты.

Даны векторы слов:

  • кот = [1, 0.2]
  • собака = [0.8, 0.3]
  • мышь = [0.3, 0.9]

Требуется:

  1. Найти косинусную близость между векторами:
    • кот и собака
    • кот и мышь
  2. Какие слова семантически ближе?

Пример 3. Анализ текста с помощью векторов вручную

Если ты хочешь разобраться как можно работать с векторными представлениями слов 


1. Создай мини-модель (на примере 3 слов)

Возьмём текст:
«Кошка ловит мышку. Собака гонит кошку.»

Шаг 1: Составь таблицу совместных встречаемости
Записываешь, сколько раз слова стоят рядом (в окне ±1 слово):

Словокошкаловитмышкусобакагонит
кошка01010
ловит10100
мышку01000
собака10001
гонит00010

Пояснение:

  • «Кошка» и «ловит» встретились 1 раз → ставим 1 в соответствующую ячейку.
  • «Кошка» и «мышку» не стоят рядом → 0.

2. Упрости таблицу (аналог PCA)

Цель: Уменьшить размерность с 5D (по числу слов) до 2D, чтобы нарисовать на бумаге.

Шаг 2: Выдели главные признаки

  1. Признак 1: Животное (кошка, собака, мышка).
  2. Признак 2: Действие (ловит, гонит).

Шаг 3: Назначь координаты
Придумай примерные значения для каждого слова:

СловоПризнак 1 (Животное)Признак 2 (Действие)
кошка0.90.1
собака0.80.2
мышку0.6-0.3
ловит-0.20.7
гонит-0.10.8

Как придумать числа?

  • Чем сильнее слово связано с животными, тем больше Признак 1.
  • Чем больше связано с действиями, тем больше Признак 2.

3. Нарисуй график

Шаг 4: Построй оси и отметь точки

  • Ось X: Признак 1 (Животное).
  • Ось Y: Признак 2 (Действие).

Что видно:

  • «Кошка» и «собака» близки по оси X (оба животных).
  • «Ловит» и «гонит» близки по оси Y (оба действия).

4. Проверь семантические аналогии

Пример:
«Кошка относится к мышке, как собака к …?»

Шаг 5: Реши вручную

  1. Найди разницу векторов:
    "кошка" - "мышка" ≈ [0.9 - 0.6, 0.1 - (-0.3)] = [0.3, 0.4]
  2. Прибавь к «собака»:
    "собака" + [0.3, 0.4] ≈ [0.8 + 0.3, 0.2 + 0.4] = [1.1, 0.6]
  3. Посмотри, какое слово ближе всего к [1.1, 0.6]:
    • «кошка»: [0.9, 0.1] → далеко.
    • «собака»: [0.8, 0.2] → ближе.
    • Вывод: Собака тоже гоняет кого-то (например, «кошку»).

Ограничения ручного метода

  • Мало данных: На больших текстах таблица станет огромной.
  • Неточность: Числа назначаются «на глаз», а не вычисляются.
  • Сложные аналогии: Вручную трудно вычислить король - мужчина + женщина.

Вывод:

  1. Составил таблицу встречаемости слов.
  2. Назначил признаки (например, «животное» и «действие»).
  3. Нарисовал график и увидел кластеры.
  4. Проверил аналогии через разность векторов.

Основные идеи

Свойства векторного пространства слов

  • Семантическая упорядоченность (близость = схожесть). Слова с похожим значением расположены близко в векторном пространстве. Косинусная близость.
  • Алгебраическая структура (аналогии через операции). Векторы сохраняют семантические и синтаксические отношения.
  • Кластеризация по темам. Образуют группы слов одной тематики. Методы кластеризации (K-means, DBSCAN).
  • Инвариантность к морфологии. Формы одного слова («бегать», «бегал», «бег») имеют близкие векторы.
  • Переносимось признаков. Векторы, обученные на одном корпусе (например, Википедия), работают для других задач (анализ отзывов).

One-hot векторы: просто, но неэффективно

Как это работало:

  • Каждому слову в словаре присваивался вектор размером V (где V — размер словаря).
  • Вектор состоял из нулей и одной единицы на позиции слова:
    • «Кошка» = [1, 0, 0, ..., 0]
    • «Собака» = [0, 1, 0, ..., 0]

Проблемы:

  1. Гигантская размерность: Для словаря в 100K слов — вектор из 100K нулей и одной 1.
  2. Нет сходства между словами: Все векторы ортогональны.
    Пример: Косинусное сходство между «кошкой» и «собакой» = 0, хотя они семантически близки.
  3. Не учитывает контекст: Слово «ключ» (дверной vs музыкальный) имеет одинаковое представление.

Плотные (dense) векторы: Word Embeddings

Решение:
Сжимаем огромные one-hot векторы в плотные низкоразмерные (обычно 50–300 значений), где:

  • Каждое число в векторе — это «признак» слова (например, «живое», «может лаять», «летает»).
  • Слова с похожим значением имеют близкие векторы.

Пример плотных векторов:

  • «Кошка» = [0.7, -0.2, 0.3, ..., 0.1] (размерность 300)
  • «Собака» = [0.6, -0.1, 0.4, ..., 0.2]
    Косинусное сходство ≈ 0.8 (близко!)

Методы получения Word Embeddings

  1. Word2Vec (Mikolov et al., 2013)
    • Skip-gram: Предсказывает контекстные слова по заданному слову.
    • CBOW (Continuous Bag of Words): Предсказывает слово по контексту.
    • Обучение через нейросеть с одним скрытым слоем.
  2. GloVe (Global Vectors, 2014)
    • Использует статистику совместной встречаемости слов во всем корпусе.
    • Оптимизирует матрицу совместных вероятностей.
  3. FastText (Bojanowski et al., 2017)
    • Учитывает морфологию: слова разбиваются на n-граммы символов.
    • Полезно для редких слов и языков с богатой морфологией (например, русский).

Эволюция до контекстных векторов

Современные модели на основе Transformer (например, BERT, GPT, RoBERTa) генерируют разные векторные представления для одного слова в разных контекстах. Это революционное отличие от классических методов (Word2Vec, GloVe), где слово всегда кодировалось одним вектором. 

  • Проблема: Плотные векторы всё ещё статичны (у «ключа» один вектор).
  • РешениеTransformer-модели (BERT, GPT), где вектор зависит от контекста:
    • «Ключ от двери» → [0.9, -0.1, ...]
    • «Музыкальный ключ» → [-0.3, 0.8, ...]

Как это реализовано в Transformer-моделях?

a) Механизм внимания (Self-Attention)

  • Модель анализирует все слова в предложении одновременно.

b) Динамические векторы

  • Выходной вектор слова — это комбинация его собственного embedding + контекста от соседей.

Преимущества контекстных представлений

  • Учёт многозначности: Одно слово в разных значениях → разные векторы.
  • Улучшение качества задач NLP:
    • Точность в классификации, NER (распознавание именованных сущностей), машинном переводе.
  • Работа с редкими словами: Даже если слово встречалось редко, его вектор адаптируется к контексту.

Примеры моделей

МодельОсобенностьПример использования
BERTДвунаправленный контекстКлассификация, QA
GPTОдносторонний контекст (слева направо)Генерация текста
RoBERTaОптимизированная версия BERTАнализ тональности
XLNetУчитывает все перестановки словСложные NLP-задачи

Ограничения

  • Вычислительная сложность: Требуют GPU и много памяти.
  • Необходимость тонкой настройки (fine-tuning): Предобученные модели нужно дообучать под конкретную задачу.

Быстрый старт:


Визуализация

Чтобы увидеть векторы в 2D/3D, используют методы снижения размерности:

  • PCA (линейный метод),
  • t-SNE (нелинейный, подчеркивает кластеры),
  • UMAP (аналог t-SNE с сохранением глобальной структуры).

PCA (Principal Component Analysis)

Как работает?

  • Находит главные направления (оси), где данные меняются сильнее всего.
  • Проецирует векторы на эти оси, отбрасывая менее важные измерения.

Плюсы:
✅ Быстро работает даже на тысячах слов.
✅ Сохраняет глобальную структуру (например, общие группы: «животные», «города»).

Минусы:
❌ Линейный метод — плохо разделяет сложные нелинейные кластеры.

t-SNE (t-Distributed Stochastic Neighbor Embedding)

Как работает?

  • Оптимизирует расположение точек в 2D/3D, чтобы похожие в многомерном пространстве слова стали ближе на графике.
  • Использует вероятности: «Если слова часто встречались в одном контексте, они должны быть рядом».

Плюсы:
✅ Лучше выделяет локальные кластеры (например, «яблоко», «груша», «апельсин»).

Минусы:
❌ Медленнее PCA (не подходит для очень больших данных).
❌ Глобальные расстояния могут искажаться (например, размер кластеров не всегда важен).

МетодЛучше подходит для…Размер данныхСкорость
PCAОбщего понимания структурыБольшие (>10K слов)Быстро
t-SNEДетального анализа кластеровМалые/средние (<5K слов)Медленно

Примеры использования

  • Классификация текстов (сентимент-анализ).
  • Поиск синонимов, машинный перевод.
  • Похожесть документов (через усреднение векторов слов).

Классические работы

📜 Word2Vec (2013)

  • Авторы: Tomas Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean (Google)
  • Статьи:
    • «Efficient Estimation of Word Representations in Vector Space» (arXiv:1301.3781)
    • «Distributed Representations of Words and Phrases and their Compositionality» (arXiv:1310.4546)
  • Суть: Предложены архитектуры Skip-gram и CBOW, которые обучают векторы, предсказывая контекстные слова.

Word2vec в картинках: https://habr.com/ru/articles/446530/

📜 GloVe (2014)

  • Авторы: Jeffrey Pennington, Richard Socher, Christopher Manning (Stanford)
  • Статья«GloVe: Global Vectors for Word Representation» (arXiv:1405.4053)
  • Суть: Комбинирует идеи матрицы совместной встречаемости и оптимизации через нейросети.

📜 FastText (2017)

  • Авторы: Piotr Bojanowski, Edouard Grave, Armand Joulin, Tomas Mikolov (Facebook AI)
  • Статья«Enriching Word Vectors with Subword Information» (arXiv:1607.04606)
  • Суть: Учитывает морфологию слов (n-gram символов), что полезно для редких слов.

Контекстные Embeddings

📜 ELMo (2018)

  • Авторы: Matthew Peters, Mark Neumann (AI2)
  • Статья«Deep Contextualized Word Representations» (arXiv:1802.05365)
  • Суть: Первая модель, создающая разные векторы для одного слова в зависимости от контекста.

📜 BERT (2018)

  • Авторы: Jacob Devlin, Ming-Wei Chang (Google)
  • Статья«BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding» (arXiv:1810.04805)
  • Суть: Использует Transformer для создания контекстно-зависимых векторов.

Теоретические основы

  • Distributional Hypothesis (Zellig Harris, 1954):
    «Слова, встречающиеся в одинаковых контекстах, имеют схожие значения».
  • Neural Network Language Models (Bengio et al., 2003):
    Первые нейросетевые модели, предсказывающие слова через векторы.

Библиотеки с русской документацией:

Прокрутить вверх