Ugrás a tartalomhoz

bag-of-words model

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


Főnév

bag-of-words model (tsz. bag-of-words models)

  1. (informatika, mesterséges intelligencia) A Bag-of-Words (BoW) model egy egyszerű, de hatékony módszer szövegek numerikus reprezentálására, amelyet széles körben alkalmaznak szövegfeldolgozásban (NLP) és gépi tanulásban, különösen dokumentumosztályozásban és információ-visszakeresésben.



🧠 Alapötlet

A bag-of-words modell a dokumentumot úgy kezeli, mint egy szavak “zsákját”, figyelmen kívül hagyva a szórendet és a nyelvtant. A dokumentumot egy vektorként ábrázolja, ahol minden elem azt jelzi, hogy egy adott szó hányszor fordul elő a szövegben.



📦 Fő jellemzők

Jellemző Érték
Szórendet figyelmen kívül hagyja ✅
Egyszerű, gyors megvalósítás ✅
Nem tartalmaz szemantikai információt ❌



🔧 Hogyan működik?

1. Szókincs (Vocabulary) létrehozása

  • Az összes dokumentumból kinyerjük az összes egyedi szót.
  • Például: Dokumentumok:
    • D1: “kutya ugat”
    • D2: “macska nyávog” → Szókincs: ["kutya", "ugat", "macska", "nyávog"]

2. Vektorizálás (Encoding)

  • Minden dokumentumot egy vektorrá alakítunk, ahol minden elem egy szó előfordulását jelenti a szókincsből.

Példa:

Szókincs: [kutya, ugat, macska, nyávog]
D1:       [1,     1,     0,       0]
D2:       [0,     0,     1,       1]

Ez a dokumentum-mátrix (document-term matrix), amely betáplálható gépi tanuló algoritmusokba.



📈 Variációk

🔢 1. Term Frequency (TF)

  • A BoW egyszerűen szóelőfordulásokat számol.

  • A TF arányosítja a számokat:

🌐 2. TF-IDF (Term Frequency–Inverse Document Frequency)

  • Súlyozza a szavakat: a ritkán előforduló, de fontos szavakat jobban kiemeli.

🔤 3. N-gram modellek

  • Ahelyett, hogy csak szavakat számolnánk, nézhetünk szókapcsolatokat (pl. bigram: “kutya ugat”) is.
  • Részben kompenzálja, hogy BoW nem figyel a szórendre.



📌 Előnyök

  • ✅ Egyszerű, jól működik sok klasszikus NLP feladaton
  • ✅ Gyors vektorizálás, könnyen implementálható
  • ✅ Jól integrálható klasszikus gépi tanuló algoritmusokkal (SVM, Naive Bayes)



⚠️ Hátrányok

  • ❌ Figyelmen kívül hagyja a szórendet, nyelvtani szerkezetet
  • ❌ Nem különbözteti meg a jelentéstanilag különböző, de azonos szavakat („bank” mint folyópart vagy pénzintézet)
  • ❌ Nagy dokumentumhalmaz esetén a vektortér nagyon magas dimenziós lehet



🧠 Alkalmazások

  • 📂 Szövegklasszifikáció: pl. spam-szűrés, sentiment analysis
  • 🔍 Információ-visszakeresés: keresési motorok
  • 🤖 Chatbotok és egyszerű NLP feladatok
  • 📊 Tematika-modellezés: dokumentumok hasonlóságvizsgálata



💻 Python példa (Scikit-learn)

from sklearn.feature_extraction.text import CountVectorizer

docs = ["kutya ugat", "macska nyávog"]
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(docs)

print(vectorizer.get_feature_names_out())  # ['kutya' 'macska' 'nyávog' 'ugat']
print(X.toarray())  # [[1 0 0 1], [0 1 1 0]]

🧩 TL;DR

A bag-of-words modell a szövegeket egyszerű szó-előfordulási vektorokká alakítja, függetlenül a szórendtől vagy nyelvtani összefüggésektől. Nagy előnye az egyszerűség és a gyorsaság, hátránya a jelentéstan figyelmen kívül hagyása.