TF-IDF (TF-IDF (Terim Frekansı-Ters Belge Frekansı))

Bir kelimenin bir belgede ne kadar önemli olduğunu ölçen, metin madenciliğinde kullanılan istatistiksel bir ağırlıklandırma yöntemi.

TF-IDF (Term Frequency-Inverse Document Frequency — Terim Frekansı-Ters Belge Frekansı), metin madenciliği ve bilgi erişiminde bir kelimenin bir belge koleksiyonuna göre o belgede ne kadar önemli olduğunu sayısal olarak temsil eden temel bir yöntemdir. İki bileşenin çarpımından oluşur. TF (Terim Frekansı), hedef kelimenin incelenen belgede kaç kez geçtiğini gösterir. Genellikle toplam kelime sayısına bölünerek normalleştirilir; böylece uzun belgeler haksız avantaj elde etmez. IDF (Ters Belge Frekansı), kelimenin belge koleksiyonunda ne kadar nadir olduğunu ölçer. Koleksiyondaki toplam belge sayısının kelimenin geçtiği belge sayısına oranının logaritması alınarak hesaplanır. Bu sayede "ve", "ile", "bu" gibi anlam taşımayan yaygın kelimeler çok düşük ağırlık alırken belgeye özgü teknik terimler ön plana çıkar. 1972'de Karen Spärck Jones tarafından geliştirilen bu yöntem, onlarca yıldır arama motorlarında belge sıralama, metin sınıflandırma, anahtar kelime çıkarma, belge özeti ve benzerlik hesaplama gibi görevlerde kullanılmaktadır. Elasticsearch ve Apache Solr, arama skorlamasında TF-IDF türevli BM25 algoritmasına dayanır. Python ekosisteminde scikit-learn'ün TfidfVectorizer sınıfı, ham metin koleksiyonunu seyrek TF-IDF matrisine dönüştürür; bu matris makine öğrenmesi modellerine doğrudan girdi olarak verilir. Modern büyük dil modelleri (LLM) ve semantik gömme (embedding) yöntemlerinin yaygınlaşmasıyla birlikte TF-IDF'nin önemi sorgulanmış olsa da, yorumlanabilirlik, düşük bellek ayak izi ve hesaplama verimliliği bu yöntemi uygulamada hâlâ geçerli kılmaktadır. Özellikle BM25 ile hibrit arama sistemleri ve RAG (Retrieval-Augmented Generation) ardışık düzenlerinde TF-IDF temelli geri çağırma katmanı yaygın biçimde kullanılmaktadır. Türkçe doğal dil işleme çalışmalarında TF-IDF, haber sınıflandırma, ürün yorumu analizi ve arama ön işleme katmanlarında kullanılmaktadır. Türkçe'nin zengin çekimli yapısı nedeniyle zemberek veya snowball stemmer ile ön işleme yapılması önerilir. Büyük dil modelleri embedding katmanında TF-IDF'yi geçmiş olsa da, hızlı prototipleme ve küçük veri kümelerinde hâlâ tercih edilmektedir.

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.