Ugrás a tartalomhoz

word2vec

A Wikiszótárból, a nyitott szótárból


Főnév

word2vec (tsz. word2vecs)

  1. (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?

  1. Hasonlóság mérése – pl. koszinusz távolság alapján:

    cosine_similarity(vec("kutya"), vec("macska"))  0.92
    
  2. Szemantikai műveletek:

    vec("király") - vec("férfi") + vec("nő") ≈ vec("királynő")
  3. 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) Facebook
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.