TF-IDF Nedir ve Neden Önemlidir?
TF-IDF, bir belgedeki kelimelere otomatik önem puanı atayan istatistiksel bir ağırlıklandırma tekniğidir. Arama motorlarından belge sınıflandırmasına kadar pek çok metin tabanlı uygulamanın temelini oluşturur. Adındaki iki bileşen, farklı bilgileri bir araya getirir: TF yalnızca o belgede, IDF ise tüm koleksiyonda ne olduğuna bakar. Bu kombinasyon, kelimenin hem yerel (belgeye özgü) hem de global (koleksiyon genelinde) önemini yansıtır.
Hesaplama Formülü
TF(t,d) = (d belgesinde t kelimesi geçme sayısı) / (d belgesindeki toplam kelime sayısı)
IDF(t,D) = log(N / df(t)) — N: toplam belge sayısı; df(t): t kelimesini içeren belge sayısı.
TF-IDF(t,d,D) = TF(t,d) × IDF(t,D)
Scikit-learn varsayılanı 1 ile kaydırılmış (smoothed) IDF kullanır: log((1+N)/(1+df)) + 1. Bu formül, hiç görülmeyen bir terimin IDF değerinin sıfıra bölme hatasına yol açmasını engeller.
Python ile Uygulama
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = ["makine öğrenmesi çok güçlüdür", "derin öğrenme nöral ağlar kullanır", "makine öğrenmesi ile sınıflandırma yapılabilir"] vectorizer = TfidfVectorizer() X = vectorizer.fit_transform(corpus) print(vectorizer.get_feature_names_out())
fit_transform() hem IDF değerlerini hesaplar hem de matrisi döndürür. Türkçe metinler için analyzer="char_wb" veya özel tokenizer eklenerek noktalama ve ek sorunları aşılabilir.
Kullanım Alanları
TF-IDF günümüzde şu alanlarda yaygın olarak kullanılmaktadır: • Arama motoru sıralaması: Google'ın ilk algoritmaları ve Elasticsearch'ün BM25 tabanlı arama motoru • Spam filtresi: E-posta içeriğindeki anahtar kelime ağırlıkları • Metin sınıflandırma: Haber kategorisi tespiti, duygu analizi • Belge özetleme: En yüksek TF-IDF puanlı cümleler özete alınır • RAG sistemleri: LLM bağlamına sunulacak belgeleri seçen hibrit geri çağırma katmanı
Sınırlılıklar ve Modern Alternatifler
TF-IDF bağlamı ve kelime sırasını göz ardı eder (kelime torbası — bag of words modeli); eş anlamlı kelimeleri farklı terimler olarak değerlendirir ve olumsuzlama anlayamaz. Bu nedenle word2vec, GloVe ve transformer tabanlı embedding modelleri semantik anlayış gerektiren görevlerde tercih edilir. Bununla birlikte TF-IDF, düşük hesaplama maliyeti, yorumlanabilirliği ve büyük veri koleksiyonlarındaki seyrek matris temsili avantajlarıyla hibrit sistemlerde önemini korumaktadır. BM25 (TF-IDF'nin geliştirilmiş versiyonu), modern RAG pipeline'larında semantik embedding ile birlikte hibrit arama (sparse + dense) şeklinde kullanılmaktadır.
Türkiye'de Kullanım
Türkçe doğal dil işleme çalışmalarında TF-IDF, Türkçe haber sınıflandırma, ürün yorumu analizi ve arama motorlarının ön işleme katmanlarında aktif biçimde kullanılmaktadır. Türkçe'nin zengin çekimli yapısı nedeniyle ham TF-IDF uygulamak yerine genellikle zemberek veya snowball Türkçe stemmer ile ön işleme yapılması önerilir. Hugging Face'te yayımlanan "dbmdz/bert-base-turkish-cased" gibi Türkçe BERT modelleri embedding katmanında TF-IDF'yi geçmiş olsa da, hızlı prototipleme ve küçük veri kümelerinde hâlâ tercih edilmektedir.
Sık Sorulan Sorular
- check_circle TF-IDF ile BM25 arasındaki fark nedir? BM25 (Okapi BM25), TF-IDF'nin geliştirilmiş bir versiyonudur. TF değerini soylaştırarak (saturation) çok sık geçen kelimelerin etkisini sınırlar ve belge uzunluğunu normalleştirir. Elasticsearch gibi modern arama motorları TF-IDF yerine BM25 kullanır.
- check_circle TF-IDF bir makine öğrenmesi algoritması mıdır? Hayır. TF-IDF bir özellik çıkarma (feature extraction) yöntemidir; öğrenmez, sayar ve ağırlıklandırır. Çıkan sayısal matris, Naive Bayes, SVM, lojistik regresyon gibi makine öğrenmesi algoritmalarına girdi olarak verilir.
- check_circle Stop words (dolgu kelimeler) TF-IDF'yi nasıl etkiler? "ve", "bir", "bu" gibi stop words, IDF değerleri neredeyse sıfıra yaklaştığından TF-IDF matriste otomatik olarak ağırlıksız kalır. Yine de TfidfVectorizer(stop_words=...) parametresiyle açıkça kaldırmak hem belleği hem hesaplama süresini optimize eder.
- check_circle TF-IDF ile semantik arama yapılabilir mi? Doğrudan yapılamaz; TF-IDF sadece kelime düzeyinde eşleşme yapar. Semantik anlayış için BERT veya OpenAI embedding modelleri gerekir. Ancak TF-IDF (sparse) + embedding (dense) birlikte hibrit arama sistemi kurulabilir; bu yaklaşım RAG sistemlerinde popülerdir.
- check_circle Türkçe TF-IDF uygulamak için ne gerekir? Türkçe metinleri önce stemming veya lemmatization ile normalleştirmek gerekir (zemberek, snowball). TfidfVectorizer'da analyzer="word", tokenizer=özel_tokenizer ve min_df, max_df parametreleri ile ince ayar yapılabilir.