bag-of-words model
Főnév
bag-of-words model (tsz. bag-of-words models)
- (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.
- bag-of-words model - Szótár.net (en-hu)
- bag-of-words model - Sztaki (en-hu)
- bag-of-words model - Merriam–Webster
- bag-of-words model - Cambridge
- bag-of-words model - WordNet
- bag-of-words model - Яндекс (en-ru)
- bag-of-words model - Google (en-hu)
- bag-of-words model - Wikidata
- bag-of-words model - Wikipédia (angol)