Word2Vec: Skip-gram i CBOW
Teoria Word2Vec, implementacja w gensim, działania na wektorach (king - man + woman = queen).
Word2Vec: Skip-gram i CBOW to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Od słów do wektorów
Uczenie maszynowe potrzebuje liczb, ale słowa są symbolami. Embeddingi słów odwzorowują każde słowo na gęsty wektor, dzięki czemu podobne słowa znajdują się blisko siebie w przestrzeni wektorowej.
Hipoteza dystrybucyjna
Word2Vec opiera się na założeniu, że słowa występujące w podobnych kontekstach mają podobne znaczenia. Ucząc się przewidywać kontekst, model odwzorowuje znaczenie w wektorach.
Dwie architektury
Word2Vec ma dwa schematy trenowania:
- CBOW przewiduje słowo docelowe na podstawie otaczającego je kontekstu
- Skip-gram przewiduje otaczający kontekst na podstawie słowa docelowego
CBOW a Skip-gram
CBOW działa szybciej i dobrze sprawdza się w przypadku często występujących słów. Skip-gram jest wolniejszy, ale lepiej radzi sobie z rzadkimi słowami i małymi zbiorami danych. Skip-gram jest często domyślnym wyborem, gdy najważniejsza jest jakość.
Trenowanie za pomocą gensim
Biblioteka gensim ułatwia korzystanie z Word2Vec. Należy przekazać stokenizowane sentences (listy list słów) i skonfigurować embeddingi.
from gensim.models import Word2Vec
sentences = [["the", "cat", "sat"], ["the", "dog", "ran"]]
model = Word2Vec(sentences=sentences, vector_size=100, window=5, min_count=1)Najważniejsze parametry
Najważniejsze parametry to:
vector_sizewymiar embeddingu (np. 100–300)windowszerokość kontekstu wokół każdego słowamin_countignorowanie słów rzadszych niż podana wartość
from gensim.models import Word2Vec
model = Word2Vec(
sentences,
vector_size=200,
window=5,
min_count=5,
)Wybór Skip-gram za pomocą sg=1
Parametr sg wybiera architekturę: sg=0 używa CBOW (ustawienie domyślne), a sg=1 używa Skip-gram.
from gensim.models import Word2Vec
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, sg=1)
# sg=1 -> skip-gramDostęp do wektorów słów
Wytrenowane wektory znajdują się w model.wv. Aby uzyskać wektor danego słowa, należy zaindeksować ten obiekt słowem.
vec = model.wv["cat"]
print(vec.shape) # (vector_size,)
print("dog" in model.wv)Wyszukiwanie podobnych słów
wv.most_similar zwraca słowa, których wektory znajdują się najbliżej, co pozwala szybko sprawdzić, czego nauczył się embedding.
print(model.wv.most_similar("cat", topn=5))
# returns list of (word, similarity) pairsArytmetyka słów
Słynna właściwość: działania na wektorach odwzorowują relacje. król - mężczyzna + kobieta daje wynik bliski królowej, pokazując, że embedding koduje analogie.
result = model.wv.most_similar(
positive=["king", "woman"],
negative=["man"],
topn=1,
)
print(result) # often [("queen", 0.7...)]Wykorzystanie embeddingów w dalszych zadaniach
Aby reprezentować zdanie, należy uśrednić jego wektory słów, a następnie przekazać wynik do dowolnego klasyfikatora. Wstępnie wytrenowane embeddingi Word2Vec zapewniają również dobry punkt wyjścia, gdy zbiór danych jest mały.
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)Szybkie sprawdzenie
Sprawdź swoją wiedzę o Word2Vec.
Podsumowanie
Podsumowanie: Word2Vec uczy się gęstych wektorów słów na podstawie kontekstu. CBOW przewiduje słowo na podstawie kontekstu (działa szybko), a Skip-gram (sg=1) przewiduje kontekst na podstawie słowa (lepiej radzi sobie z rzadkimi słowami). W bibliotece gensim należy ustawić vector_size, window i min_count, a następnie używać wv.most_similar oraz analogii takich jak król - mężczyzna + kobieta.
Często zadawane pytania
Czy lekcja „Word2Vec: Skip-gram i CBOW” jest bezpłatna?
Tak — pełny tekst „Word2Vec: Skip-gram i CBOW” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Word2Vec: Skip-gram i CBOW”?
Teoria Word2Vec, implementacja w gensim, działania na wektorach (king - man + woman = queen). Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Word2Vec: Skip-gram i CBOW”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Word2Vec: Skip-gram i CBOW
- Osadzenia GloVe i FastText
- Klasyfikacja tekstu za pomocą BERT
- Podobieństwo semantyczne i osadzenia zdań