Bag of Words (Kelime Torbası)

Metindeki kelimeleri sıra ve bağlamı göz ardı ederek yalnızca frekanslarına göre sayısal vektöre dönüştüren temel NLP temsil yöntemi.

Bag of Words (Kelime Torbası ya da BoW), doğal dil işleme alanında metni makine öğrenimi algoritmalarının işleyebileceği sayısal forma dönüştürmek için kullanılan en temel yöntemlerden biridir. Model, bir metindeki her kelimeyi sıra ve bağlamdan bağımsız biçimde yalnızca frekansına göre temsil eder; kelimeler metaforik olarak bir "torbaya" atılır ve hangisinin önce, hangisinin sonra geldiği bilgisi yok sayılır. BoW üç adımda çalışır: metin tokenize edilerek kelimeler ayrıştırılır ve "ve", "bir", "bu" gibi bilgi taşımayan stop word'ler temizlenir; tüm belgeler üzerinden benzersiz kelimelerden oluşan bir sözcük dağarcığı (vocabulary) inşa edilir; her belge bu dağarcık boyutunda bir vektöre dönüştürülür. Vektördeki her boyut bir kelimeye karşılık gelir ve değeri o kelimenin belgede kaç kez geçtiğini gösterir. Büyük bir veri kümesinde oluşan matris genellikle son derece seyrek olur, zira her belge sözcük dağarcığının yalnızca küçük bir bölümünü barındırır. Yöntemin en önemli avantajı basitliği ve yorumlanabilirliğidir. Metin sınıflandırma, spam tespiti, konu modelleme ve duygu analizi gibi klasik NLP görevlerinde hızlı ve güvenilir bir başlangıç noktası olarak kullanılır. Hesaplama maliyeti düşüktür ve büyük veri kümelerinde kolayca ölçeklenebilir. Bununla birlikte BoW'un ciddi kısıtlamaları vardır. Kelime sırası tamamen görmezden gelindiğinden "Türkiye İngiltere'yi yendi" ve "İngiltere Türkiye'yi yendi" cümleleri özdeş vektörlerle temsil edilir. Eş anlamlı kelimeler farklı boyutlar olarak değerlendirilir; çok anlamlı kelimeler tek bir boyuta sıkıştırılır. Yüksek boyutluluk ve seyreklik ise bellek ve hesaplama açısından zorluk çıkarır. NLP tarihinin gelişim çizgisinde BoW temel bir başlangıç noktasıdır. TF-IDF bunu kelime ağırlıklandırmasıyla geliştirmiş; Word2Vec ve GloVe bağlamsal anlam ilişkilerini yakalamıştır; günümüz transformer tabanlı dil modelleri ise metin temsilini çok daha zengin semantik düzeyde gerçekleştirmektedir. Kaynak kısıtlı ortamlarda ve klasik makine öğrenimi pipeline'larında BoW pratikliğini korumaktadır.

Bag of Words Nasıl Çalışır?

BoW'un temel çalışma mantığı üç adıma dayanır. İlk adımda metin tokenize edilir: cümleler bireysel kelimelere bölünür, küçük harfe dönüştürülür ve "ve", "bir", "bu" gibi anlam taşımayan stop word'ler çıkarılır. İkinci adımda tüm belgeler üzerindeki benzersiz kelimelerden oluşan bir sözcük dağarcığı (vocabulary) inşa edilir. Son adımda her belge bu dağarcığın boyutunda bir sayısal vektöre dönüştürülür; her boyut bir kelimeyi, değeri ise o kelimenin belgede kaç kez geçtiğini temsil eder.

Örneğin iki cümlelik bir korpus düşünelim: "kedi fare yer" ve "köpek fare kaçar". Sözcük dağarcığı [fare, kaçar, kedi, köpek, yer] olur. İlk cümlenin vektörü [1, 0, 1, 0, 1], ikincisinin ise [1, 1, 0, 1, 0] şeklinde kodlanır.

Avantajları

  • check_circle Basitlik ve yorumlanabilirlik: Vektördeki her boyutun hangi kelimeye karşılık geldiği açıktır; model davranışı kolayca açıklanabilir.
  • check_circle Düşük hesaplama maliyeti: Büyük veri kümelerinde bile hızla ölçeklenebilir; eğitim için çok az bellek ve işlem süresi gerekir.
  • check_circle Geniş algoritma uyumluluğu: Naive Bayes, SVM, lojistik regresyon gibi klasik makine öğrenimi algoritmalarıyla doğrudan kullanılabilir.
  • check_circle Hızlı prototipleme: Karmaşık modellere geçmeden önce güvenilir bir baseline (temel) oluşturmak için ideal başlangıç noktasıdır.

Sınırlılıkları

  • check_circle Kelime sırası yok sayılır: "A, B'yi yendi" ile "B, A'yı yendi" özdeş vektörler üretir; semantik sıra bilgisi tamamen kaybolur.
  • check_circle Yüksek boyutluluk ve seyreklik: Büyük sözcük dağarcıklarında matrisler çok boyutlu ve büyük çoğunluğu sıfır olan seyrek yapılar oluşturur.
  • check_circle Bağlamsal anlam yok: Eş anlamlı kelimeler farklı boyutlar; çok anlamlı kelimeler tek bir boyut olarak işlenir. Semantik ilişkiler yakalanmaz.
  • check_circle Olumsuzlama ve tonlama körü: "İyi değil" ve "İyi" ifadelerinin temsillerinde 'iyi' kelimesi aynı ağırlıkta yer alır.

Kullanım Alanları

  • check_circle Metin sınıflandırma: Haber kategorisi tespiti, müşteri yorumu sınıflandırma ve belge gruplama gibi görevlerde standart bir özellik çıkarma aracıdır.
  • check_circle Spam tespiti: E-posta içeriğindeki belirli kelimelerin frekansı spam filtrelemede BoW tabanlı modellerin temelini oluşturur.
  • check_circle Konu modelleme: LDA (Latent Dirichlet Allocation) gibi konu modelleme algoritmaları girdi olarak BoW matrisini kullanır.
  • check_circle Duygu analizi: Ürün yorumları veya sosyal medya gönderilerinde pozitif/negatif sınıflandırma için basit ve etkili bir yöntemdir.

TF-IDF ve Embedding'lerle Karşılaştırma

BoW, NLP metin temsil yöntemlerinin ilk basamağını oluşturur. TF-IDF bu yöntemi kelime ağırlıklandırmasıyla geliştirir: çok yaygın kelimelerin ağırlığını düşürürken nadir kelimelerin önemini yükseltir. Her iki yöntem de seyrek vektörler üretir ve kelime sırasını görmezden gelir.

Word Embedding yöntemleri (Word2Vec, GloVe) ise kelimeleri anlamsal olarak birbirine yakın yoğun vektörlerle temsil eder. Transformer tabanlı modeller (BERT, GPT) ise bağlam duyarlı embedding'ler üreterek metin temsilini çok daha yüksek bir anlama kapasitesine taşımaktadır. Modern RAG sistemleri bu yoğun embedding'leri tercih eder; ancak BoW ve TF-IDF hibrit arama mimarilerinde hâlâ rol oynamaktadır.

Sık Sorulan Sorular

  • check_circle Bag of Words ile TF-IDF arasındaki temel fark nedir? BoW her kelimenin ham frekansını kullanır; TF-IDF ise kelimenin belgede ne kadar sık geçtiğini, tüm koleksiyonda ne kadar yaygın olduğuyla ağırlıklandırır. Dolayısıyla TF-IDF, "ve" veya "bir" gibi çok yaygın kelimeleri otomatik olarak önemsizleştirir.
  • check_circle Bag of Words büyük veri kümelerinde neden verimsiz olabilir? Büyük bir sözcük dağarcığında (örn. 100.000 benzersiz kelime) her belge 100.000 boyutlu bir vektörle temsil edilir; bu vektörün büyük çoğunluğu sıfırdır. Bu seyrek ve yüksek boyutlu yapı bellek tüketimini artırır ve bazı algoritmalar için hesaplama süresini uzatır.
  • check_circle Kelime sırası neden bu kadar önemli? Dil anlamı büyük ölçüde sıraya bağlıdır. "Köpek insanı ısırdı" ile "İnsan köpeği ısırdı" BoW'da özdeş vektörler üretir ama anlamları zıttır. Bu nedenle sıra duyarlılığı gerektiren görevlerde BoW yetersiz kalır.
  • check_circle BoW günümüzde hâlâ kullanılıyor mu? Evet. Kaynak kısıtlı sistemlerde, açıklanabilir yapay zeka gerektiren uygulamalarda ve hızlı prototipleme aşamalarında BoW tercih edilebilir. Ayrıca hibrit arama (sparse + dense retrieval) sistemlerinde yoğun embedding'lerin yanında seyrek BoW/TF-IDF temsili de kullanılmaktadır.
  • check_circle Python'da Bag of Words nasıl uygulanır? scikit-learn kütüphanesinin CountVectorizer sınıfı BoW matrisini kolayca oluşturur: from sklearn.feature_extraction.text import CountVectorizer; vec = CountVectorizer(); X = vec.fit_transform(belgeler). Ağırlıklı varyant için TfidfVectorizer kullanılır.