• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

Scikit-learn CountVectorizer ne işe yarar?

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni
CountVectorizer, metinleri makine öğrenmesi algoritmalarının kullanabileceği sayısal özelliklere dönüştürür. Varsayılan ayarlarda metni küçük harfe çevirir ve en az iki karakterlik kelime belirteçlerini sayar; sözlükteki her belirteci bir sütun, her metni bir satır yapar. Hücrelere ilgili belirtecin metinde kaç kez geçtiğini yazar. Böylece ham cümleleri, sınıflandırma veya benzerlik hesaplama gibi işlemlerde kullanılabilecek seyrek bir matrise çevirebilirsiniz.

CountVectorizer nasıl çalışır?​


CountVectorizer iki temel işlem yapar: Önce eğitim metinlerindeki kelimelerden bir sözlük oluşturur, ardından her metni bu sözlüğe göre kelime sayılarından oluşan bir vektöre dönüştürür. Aynı kelime metinde iki kez geçiyorsa ilgili hücredeki değer 2 olur; hiç geçmiyorsa değer 0 kalır.

Örneğin aşağıdaki varsayımsal metinleri ele alalım:

Python:
from sklearn.feature_extraction.text import CountVectorizer

metinler = [
    "kedi süt içer",
    "köpek su içer"
]

vektorleyici = CountVectorizer()
matris = vektorleyici.fit_transform(metinler)

print(vektorleyici.get_feature_names_out())
print(matris.toarray())

Bu örnekte get_feature_names_out() çıktısındaki sütun sırası içer, kedi, köpek, su, süt olur. Bu sırayla beklenen matris şöyledir:

Kod:
[
    [1, 1, 0, 0, 1],
    [1, 0, 1, 1, 0]
]

Sütun sırası, get_feature_names_out() çıktısındaki kelime sırasına göre değerlendirilmelidir. İlk satır ilk metni, ikinci satır ikinci metni temsil eder. Bu değerler bir dil modelinin cümlenin anlamını bildiğini kanıtlamaz; yalnızca seçilen kelimelerin kaç kez göründüğünü gösterir.

Kurulum ve temel kullanım​


Scikit-learn kurulu değilse Python ortamınıza kurun. Ardından metinleri liste olarak hazırlayıp vektörleyiciyi eğitim verisi üzerinde çalıştırın.
  1. Metinleri hazırlayın. Her belgeyi bir Python karakter dizisi olarak aynı listeye koyun. Örneğin her haber, yorum veya ürün açıklaması listenin bir elemanı olabilir.
  2. Vektörleyiciyi oluşturun. CountVectorizer() varsayılan ayarlarla kelime sözlüğünü ve kelime sayımlarını üretir.
  3. Sözlüğü ve eğitim matrisini oluşturun. fit_transform(metinler) çağrısı, sözlüğü verilen metinlerden çıkarır ve bu metinleri sayısal matrise dönüştürür.
  4. Özellik adlarını kontrol edin. get_feature_names_out() ile sütunların hangi kelimelere karşılık geldiğini inceleyin. Böylece matris sütunlarını yanlış yorumlamazsınız.
  5. Yeni metinleri dönüştürün. Yeni veriler için transform(yeni_metinler) kullanın. Yeni metinler sözlüğü değiştirmez; yalnızca daha önce öğrenilen kelimelerin sayımları üretilir.
Örnek kullanım şu şekildedir:

Python:
yeni_metinler = ["kedi su içer"]
yeni_matris = vektorleyici.transform(yeni_metinler)

print(yeni_matris.toarray())

Burada fit_transform() yalnızca eğitim verisinde, transform() ise doğrulama, test veya üretim verisinde kullanılmalıdır. Test verisine yeniden fit() uygulamak, testteki kelimelerin sözlüğe sızmasına ve ölçümün güvenilirliğinin bozulmasına yol açabilir.

Hangi ayarlar neyi değiştirir?​


CountVectorizer varsayılan davranıştan daha kontrollü kullanılabilir. Örneğin yalnızca belirli sıklıktaki kelimeleri almak, kelime öbekleri üretmek veya kelimenin yalnızca görünüp görünmediğini saymak mümkündür.

Python:
vektorleyici = CountVectorizer(
    lowercase=True,
    stop_words=None,
    ngram_range=(1, 2),
    min_df=2,
    binary=False
)

lowercase=True büyük harfleri küçültür. ngram_range=(1, 2) tek kelimelerin yanında iki kelimelik öbekleri de özellik olarak alır; örneğin "hızlı kargo" ayrı bir özellik olabilir. min_df=2, yalnızca en az iki belgede görülen özellikleri tutar. binary=True kullanılırsa kelimenin kaç kez geçtiği yerine yalnızca geçip geçmediği 0 veya 1 olarak yazılır.

Türkçe metinlerde varsayılan kelime ayırma davranışı her dilbilgisi ayrıntısını çözmez. Ekler, yazım biçimleri, birleşik kelimeler, noktalama ve anlam benzerliği için ayrıca ön işleme gerekebilir. CountVectorizer sözcüklerin anlamını, cümledeki niyeti veya kelimeler arasındaki anlamsal yakınlığı kendiliğinden öğrenmez.

CountVectorizer ne zaman yeterlidir?​


Kelime sıklığının önemli olduğu küçük ve orta ölçekli metin sınıflandırma çalışmalarında, spam ayırmada veya basit belge benzerliği hesaplarında iyi bir başlangıçtır. Ürettiği matris genellikle seyrektir; bu nedenle toarray() yalnızca küçük örneklerde kullanılmalıdır. Büyük veri kümelerinde seyrek matrisi yoğun matrise çevirmek gereksiz bellek tüketebilir.

Kelime sayısı belge uzunluğundan veya çok sık kullanılan genel kelimelerden fazla etkileniyorsa CountVectorizer yerine ya da yanında TF-IDF tabanlı özellikler değerlendirilebilir. CountVectorizer'ın çıktısı bir özellik temsilidir; tek başına sınıflandırma, duygu analizi veya tahmin sonucu üretmez. Bunun için elde edilen matrisi bir makine öğrenmesi algoritmasına vermeniz gerekir.

Sık sorulan sorular​

CountVectorizer cümlelerin anlamını anlayabilir mi?​

Hayır. Kelimeleri ve istenirse kelime öbeklerini sayısal özelliklere dönüştürür. Eş anlamlı kelimeleri, ironiyi veya cümledeki bağlamı kendiliğinden aynı anlam olarak değerlendirmez.

Yeni veri için neden fit_transform yerine transform kullanılmalıdır?​

Çünkü sözlük yalnızca eğitim verisinden öğrenilmelidir. Yeni veride yeniden fit etmek özellik sütunlarını değiştirebilir ve model değerlendirmesine eğitim dışı bilgi sızdırabilir.
 
Son düzenleme:

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic
Geri
Üst