Word2Vec: векторные представления слов

Word2Vec — это алгоритм для преобразования слов в векторные представления, которые сохраняют семантические и синтаксические свойства слов. Главная идея заключается в том, что слова, встречающиеся в схожих контекстах, имеют близкие векторы. Такие векторы могут быть использованы для задач машинного обучения, анализа текста и генерации контента.

Векторное представление слова — это многоразмерный числовой массив, где каждое число отражает определённый аспект значения слова. Например, векторы слов «король» и «королева» будут близки, а «король» и «машина» — далеки. Это свойство позволяет выполнять операции вроде арифметики слов: вектор("король") - вектор("мужчина") + вектор("женщина") ≈ вектор("королева").

Архитектура Word2Vec

Word2Vec использует два основных подхода:

  1. CBOW (Continuous Bag of Words)

    • Цель: предсказать слово по его контексту.
    • Вход: несколько слов, окружающих целевое.
    • Выход: вероятности для всех слов словаря, где наиболее вероятно целевое слово.
    • Преимущество: более быстрая тренировка на больших корпусах текстов.
    • Недостаток: хуже справляется с редкими словами.
  2. Skip-gram

    • Цель: предсказать контекстные слова по данному слову.
    • Вход: одно слово.
    • Выход: вероятности для каждого слова в словаре для каждого слова контекста.
    • Преимущество: лучше работает с редкими словами.
    • Недостаток: требует больше ресурсов на обучение.

Обучение моделей Word2Vec

Обучение Word2Vec основано на нейронной сети с одним скрытым слоем. Основные шаги:

  • Инициализация весов случайными числами.
  • Прямой проход (forward pass): вычисление вероятности предсказания слова.
  • Обратное распространение ошибки (backpropagation): корректировка весов на основе разницы между предсказанным и реальным словом.
  • Сэмплирование негативных примеров (negative sampling): ускоряет обучение, особенно для больших словарей.
  • Использование окна контекста (context window): определяет, сколько слов вокруг целевого учитываются при обучении.

Особенности векторных представлений

  • Кластеризация слов по смыслу: слова, имеющие схожее значение, группируются в пространстве векторов.
  • Вычисление сходства слов: косинусная мера угла между векторами позволяет определить семантическое сходство.
  • Арифметика векторов: операции сложения и вычитания отражают логические и грамматические отношения между словами.

Использование Word2Vec в JavaScript с ml5.js

Библиотека ml5.js предоставляет высокоуровневый доступ к моделям машинного обучения через JavaScript. Для работы с Word2Vec можно использовать предобученные модели, а также обучать свои на небольших корпусах текста.

Подключение ml5.js

<script src="https://cdnjs.cloudflare.com/ajax/libs/ml5/0.12.2/ml5.min.js"></script>

Загрузка предобученной модели Word2Vec

let word2vec;
ml5.word2vec('data/wordvecs.json', modelReady);

function modelReady() {
  console.log('Модель Word2Vec загружена');
}

Поиск похожих слов

word2vec.nearest('король', 5, function(err, results) {
  if (err) {
    console.error(err);
    return;
  }
  console.log('Похожие слова:', results);
});

Арифметика слов

word2vec.getVector('король', function(err, kingVector) {
  word2vec.getVector('мужчина', function(err, manVector) {
    word2vec.getVector('женщина', function(err, womanVector) {
      let resultVector = kingVector
                          .sub(manVector)
                          .add(womanVector);
      word2vec.nearestFromVector(resultVector, 1, function(err, results) {
        console.log('Результат арифметики слов:', results);
      });
    });
  });
});

Применения Word2Vec

  • Классификация текста: представления слов могут быть усреднены для векторизации документа.
  • Поиск синонимов и антонимов: косинусная близость позволяет быстро находить семантически схожие слова.
  • Рекомендательные системы: анализ текстовых описаний и отзывов.
  • Генерация текста: использование векторных пространств для создания контекстно релевантных слов и фраз.

Практические рекомендации

  • Использовать предобученные модели, если корпус текста небольшой.
  • Настраивать размерность векторов: 100–300 измерений достаточно для большинства задач.
  • Выбирать Skip-gram для редких слов, CBOW для быстрых тренировок на больших данных.
  • Для больших словарей использовать negative sampling, чтобы ускорить обучение.

Word2Vec создаёт фундамент для работы с текстами на уровне семантики, позволяя алгоритмам машинного обучения «понимать» слова как математические объекты, что открывает широкие возможности для анализа языка и построения интеллектуальных приложений.