← Назад к вопросам

Что такое Word2Vec и как он работает?

2.0 Middle🔥 181 комментариев
#NLP и обработка текста

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Word2Vec

Word2Vec — это алгоритм обучения представлений слов (word embeddings), разработанный в Google в 2013 году. Он преобразует слова в плотные векторы чисел, где семантически близкие слова находятся рядом в пространстве.

Основная идея

Широко известная идея: You shall know a word by the company it keeps (Дж. Лайонс). Это означает, что смысл слова определяется контекстом, в котором оно часто появляется.

Word2Vec использует эту идею: слова, которые часто появляются в одинаковом контексте, должны иметь похожие векторные представления.

Два основных варианта

1. CBOW (Continuous Bag of Words)

  • Задача: предсказать целевое слово по окружающим словам
  • Входные данные: слова контекста
  • Выходные данные: целевое слово
  • Быстрее обучается
  • Работает лучше на маленьких наборах данных

2. Skip-gram

  • Задача: предсказать контекст по целевому слову
  • Входные данные: целевое слово
  • Выходные данные: слова контекста
  • Медленнее обучается
  • Работает лучше на больших наборах данных
  • Лучше захватывает редкие слова

Как работает Skip-gram?

Представим предложение: Король пошёл в королевство найти королеву

Если окно контекста = 2 слова слева и справа:

Текущее слово: пошёл Контекст: [король, в, королевство, найти]

Algorithm обучается предсказывать контекстные слова по целевому.

Архитектура нейросети

# Упрощённая архитектура Skip-gram
# Входной слой: one-hot вектор размера V (размер словаря)
# Скрытый слой: W matrix размера V x D (D - размер embedding)
# Выходной слой: W' matrix размера D x V

input_word -> [V x D] -> hidden_layer -> [D x V] -> output
             матрица W                   матрица W'

Вектор размерности D (обычно 100-300) из скрытого слоя — это и есть embedding слова.

Обучение: Negative Sampling

Победа Word2Vec в том, что обучение эффективно. Если использовать стандартный softmax, приходится считать вероятность для всех V слов в словаре — очень медленно.

Negative Sampling (отрицательная выборка) решает эту проблему:

  1. Для каждой пары (целевое слово, контекстное слово)
  2. Берём случайные слова (например, 5-15 слов) как отрицательные примеры
  3. Обучаем модель максимизировать вероятность положительного примера
  4. И минимизировать вероятность отрицательных примеров
from gensim.models import Word2Vec

# Обучение Word2Vec
sentences = [
    ['король', 'пошёл', 'в', 'королевство'],
    ['королева', 'сидит', 'в', 'дворце'],
    ['король', 'и', 'королева', 'вместе']
]

model = Word2Vec(
    sentences=sentences,
    vector_size=100,
    window=2,
    min_count=1,
    workers=4,
    sg=1
)

# Получить embedding слова
king_vector = model.wv['король']
print(f"Embedding размер: {king_vector.shape}")

# Найти похожие слова
similar_words = model.wv.most_similar('король', topn=5)
print(f"Похожие на король: {similar_words}")

# Косинусное расстояние
similarity = model.wv.similarity('король', 'королева')
print(f"Сходство король-королева: {similarity:.4f}")

Свойства Word2Vec embeddings

Одно из самых удивительных свойств — это линейные соотношения:

embedding('король') - embedding('человек') + embedding('женщина')
приблизительно равно embedding('королева')

Это показывает, что embedding захватывает сложные семантические отношения.

# Проверка линейных соотношений
result = model.wv.most_similar(
    positive=['король', 'женщина'],
    negative=['человек'],
    topn=5
)
# Результат содержит 'королева' первым!

Преимущества Word2Vec

  1. Быстрое обучение — эффективно даже на миллиардах слов
  2. Хорошие представления — capture семантики на удивление хорошо
  3. Низкая размерность — 100-300 измерений вместо одного горячего кодирования
  4. Трансфер обучение — pre-trained embeddings можно использовать как стартовую точку
  5. Простоту реализации — легко использовать через Gensim

Ограничения

  1. Игнорирует контекст целиком — одно слово = один вектор (омонимы проблемны)
  2. Синтаксис не учитывается — зависит только от co-occurrence
  3. Редкие слова плохо представлены — нужно много контекстов для качества
  4. Не работает с морфологией — король и королями — разные вектора

Современные альтернативы

  • GloVe — объединяет методы матричной факторизации и Word2Vec
  • FastText — расширение Word2Vec, работает с символами, лучше для морфологии
  • ELMo — контекстные embeddings (зависят от предложения)
  • BERT / GPT — трансформер-based embeddings, state-of-the-art

Word2Vec остаётся фундаментальным алгоритмом для понимания modern NLP. Даже если используешь BERT, понимание Skip-gram critical для вашего интервью.

Что такое Word2Vec и как он работает? | PrepBro