word2vec
Főnév
word2vec (tsz. word2vecs)
- (informatika) A Word2Vec egy természetes nyelvfeldolgozási (NLP) technika, amely a szavakat folytonos értékű vektorokká alakítja át úgy, hogy ezek a vektorok megőrzik a szavak szemantikai jelentését. A módszert a Google fejlesztette ki 2013-ban, Tomas Mikolov vezetésével.
🧠 Lényeg: Szavak jelentése vektorokban
A Word2Vec algoritmus célja, hogy megtanulja:
- milyen kontextusban jelenik meg egy szó,
- milyen más szavak fordulnak elő a közelében.
Ennek eredményeként az algoritmus képes hasonló jelentésű szavakat hasonló vektorokhoz rendelni.
⚙️ Hogyan működik?
A Word2Vec mögött álló alapelv:
„A szó jelentése a környezetében rejlik.” (distributional semantics)
Két fő modell létezik:
| Modell | Jelentés |
|---|---|
| CBOW (Continuous Bag of Words) | A környező szavak alapján próbálja megtippelni a középső szót |
| Skip-gram | Egy szó alapján próbálja megtippelni a körülötte lévő szavakat |
📘 CBOW példa:
Input: [“A”, “kutya”, “__”, “ugat”] Output: “hangosan”
A modell megtanulja, hogy ha „kutya” és „ugat” szerepelnek a környezetben, akkor a „hangosan” valószínű.
📘 Skip-gram példa:
Input: „hangosan” Output: „kutya”, „ugat”
A modell azt tanulja meg, milyen környezetek jellemzőek egy adott szóra.
🔢 A szavak mint vektorok
Miután a modell megtanulta az összefüggéseket, minden szót egy n-dimenziós vektor reprezentál, például:
"kutya" → [0.15, -0.22, 0.71, ..., 0.05] "macska" → [0.17, -0.19, 0.68, ..., 0.06]
🧪 Mit lehet ezekkel a vektorokkal csinálni?
Hasonlóság mérése – pl. koszinusz távolság alapján:
cosine_similarity(vec("kutya"), vec("macska")) ≈ 0.92
Szemantikai műveletek:
vec("király") - vec("férfi") + vec("nő") ≈ vec("királynő")Klaszterezés, vizualizáció – pl. t-SNE módszerrel 2D-ben kirajzolhatók a szókapcsolatok.
📦 Implementáció
Pythonban (Gensim könyvtárral):
from gensim.models import Word2Vec
# Mondatokból álló korpusz
sentences = [["a", "kutya", "ugat"], ["a", "macska", "nyávog"]]
# Modell betanítása
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1)
# Vektor lekérése
print(model.wv["kutya"])
# Hasonló szavak keresése
print(model.wv.most_similar("kutya"))
🧬 Paraméterek
| Paraméter | Jelentés |
|---|---|
vector_size |
A vektor dimenziószáma |
window |
Kontextusablak mérete |
min_count |
A minimális előfordulás, hogy szó bekerüljön a modellbe |
epochs |
Hányszor tanulja meg a korpuszt |
📊 Előnyök
✅ Gyors és hatékony ✅ Képes absztrakt fogalmakat is „megtanulni” ✅ Hasonlóságokat jól tükröz
⚠️ Hátrányok
❌ Nem képes új szavakat kezelni ❌ Nem figyel kontextusra (szó többértelműsége!) ❌ A szavakat egyetlen vektorba sűríti → nem dinamikus jelentés
🔄 Összehasonlítás más embeddinggel
| Modell | Kontextusérzékeny? | Példa |
|---|---|---|
| Word2Vec | ❌ Nem | Gensim |
| GloVe | ❌ Nem | Stanford |
| FastText | ❌ Nem (de figyel a szótöredékekre) | |
| BERT, GPT | ✅ Igen | Transformers (contextual embeddings) |
🧠 TL;DR
- A Word2Vec egy hatékony eszköz arra, hogy a szavakat matematikai vektorokká alakítsuk.
- A tanulás során a modell a szavak közti kontextuális kapcsolatokat térképezi fel.
- A hasonló jelentésű szavakat a térben is közel rakja egymáshoz.
- Hasznos NLP-feladatokhoz: keresés, klaszterezés, szemantikus elemzés, gépi tanulás.