Для чего используется Word2Vec?

«Для чего используется Word2Vec?» — вопрос из категории NLP и трансформеры, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Основные применения:

  1. Преобразование текста в числовой формат для любых моделей ML, которые работают с числами, а не текстом.
  2. Поиск семантической близости: нахождение синонимов или тематически связанных слов (king - man + womanqueen).
  3. Функционал для downstream-задач: полученные эмбеддинги используются как features для классификации текстов, кластеризации, в рекомендательных системах (например, для описаний товаров).

Практический пример с gensim:

from gensim.models import Word2Vec
import nltk

# Предобработка: токенизация и очистка корпуса текстов
sentences = [
    ['машинное', 'обучение', 'изучает', 'закономерности', 'в', 'данных'],
    ['глубокое', 'обучение', 'это', 'подраздел', 'машинного', 'обучения'],
    ['нейронные', 'сети', 'основа', 'глубокого', 'обучения']
]

# Обучение модели
model = Word2Vec(
    sentences=sentences,
    vector_size=100,   # Размерность вектора
    window=5,          # Размер контекстного окна
    min_count=1,       # Игнорировать слова с частотой ниже
    workers=4,
    sg=1               # 1 для skip-gram (лучше для редких слов), 0 для CBOW
)

# Использование
vector_learning = model.wv['обучение']  # Получить вектор слова
similar = model.wv.most_similar('обучение', topn=3)
# Результат: [('машинного', 0.98), ('глубокого', 0.95), ('данных', 0.87)]

# Сохранение и загрузка
model.save('word2vec.model')

Важно: Word2Vec — это один из первых и классических методов. В современных проектах часто используются более продвинутые контекстуальные эмбеддинги, такие как FastText (учитывает морфологию) или напрямую fine-tune предобученные трансформеры (BERT, GPT), которые учитывают контекст слова в предложении.