0Pricing
Learn AI with Python · Урок

Word2Vec: Skip-gram и CBOW

Теория Word2Vec, реализация в gensim, арифметика векторов (king - man + woman = queen)

«Word2Vec: Skip-gram и CBOW» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

От слов к векторам

Машинному обучению нужны числа, а слова являются символами. Векторные представления слов сопоставляют каждому слову плотный вектор, поэтому похожие слова оказываются рядом друг с другом в векторном пространстве.

Дистрибутивная гипотеза

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

Две архитектуры

У Word2Vec есть две схемы обучения:

  • CBOW предсказывает целевое слово по окружающему контексту
  • пропуск-грамма предсказывает окружающий контекст по целевому слову

CBOW и пропуск-грамма

CBOW работает быстрее и хорошо подходит для часто встречающихся слов. Пропуск-грамма работает медленнее, но лучше обрабатывает редкие слова и небольшие наборы данных. Для получения качественных представлений часто выбирают пропуск-грамму.

Обучение с помощью библиотеки «Дженсим»

Библиотека gensim упрощает работу с Word2Vec. Вы передаёте токенизированные sentences (списки списков слов) и задаёте параметры векторного представления.

from gensim.models import Word2Vec

sentences = [["the", "cat", "sat"], ["the", "dog", "ran"]]
model = Word2Vec(sentences=sentences, vector_size=100, window=5, min_count=1)

Основные параметры

Основные параметры:

  • vector_size размерность вектора (например, 100–300)
  • window ширина контекста вокруг каждого слова
  • min_count игнорировать слова, встречающиеся реже указанного числа раз
from gensim.models import Word2Vec

model = Word2Vec(
    sentences,
    vector_size=200,
    window=5,
    min_count=5,
)

Выбор пропуск-граммы с помощью sg=1

Параметр sg выбирает архитектуру: sg=0 использует CBOW (по умолчанию), а sg=1 — пропуск-грамму.

from gensim.models import Word2Vec

model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, sg=1)
# sg=1 -> skip-gram

Доступ к векторам слов

Обученные векторы находятся в model.wv. Обратитесь к нему по слову, чтобы получить вектор этого слова.

vec = model.wv["cat"]
print(vec.shape)   # (vector_size,)
print("dog" in model.wv)

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

wv.most_similar возвращает слова, чьи векторы находятся ближе всего. Это быстрый способ проверить, чему научилось векторное представление.

print(model.wv.most_similar("cat", topn=5))
# returns list of (word, similarity) pairs

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

Известное свойство: векторная арифметика отражает отношения между словами. king - man + woman оказывается рядом с queen, показывая, что векторное представление кодирует аналогии.

result = model.wv.most_similar(
    positive=["king", "woman"],
    negative=["man"],
    topn=1,
)
print(result)   # often [("queen", 0.7...)]

Использование векторных представлений в последующих задачах

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

import numpy as np

def sentence_vector(words, model):
    vecs = [model.wv[w] for w in words if w in model.wv]
    return np.mean(vecs, axis=0) if vecs else np.zeros(model.vector_size)

Быстрая проверка

Проверьте свои знания о Word2Vec.

Итоги

Итоги: Word2Vec обучается плотным векторам слов на основе контекста. CBOW предсказывает слово по контексту (быстро), а пропуск-грамма (sg=1) предсказывает контекст по слову (лучше подходит для редких слов). В библиотеке «Дженсим» задайте vector_size, window и min_count, а затем используйте wv.most_similar и аналогии вроде king - man + woman.

Часто задаваемые вопросы

Урок «Word2Vec: Skip-gram и CBOW» бесплатный?

Да — полный текст урока «Word2Vec: Skip-gram и CBOW» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «Word2Vec: Skip-gram и CBOW»?

Теория Word2Vec, реализация в gensim, арифметика векторов (king - man + woman = queen) Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Word2Vec: Skip-gram и CBOW»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Word2Vec: Skip-gram и CBOW
  2. Эмбеддинги GloVe и FastText
  3. Классификация текста с BERT
  4. Семантическое сходство и эмбеддинги предложений
← Назад к Learn AI with Python