TF-IDF: bir kelimenin belge için ne kadar ayırt edici olduğunu ölçmek
Sözlük

TF-IDF: bir kelimenin belge için ne kadar ayırt edici olduğunu ölçmek

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 4 dk okuma

TF-IDF, bir kelimenin belgedeki sıklığını ve tüm belgelerdeki nadirliğini birleştirerek ağırlık veren metin analizi yöntemidir. Formülü, örneği ve sınırları.

TF-IDF nedir?

TF-IDF (term frequency, inverse document frequency), bir kelimenin bir belge için ne kadar önemli olduğunu sayısal olarak ifade eden klasik bir metin temsil yöntemidir. Mantık basittir: bir kelime belgede ne kadar sık geçiyorsa o belge için o kadar ilgilidir, ancak tüm belgelerde çok sık geçen bir kelime (örneğin bağlaçlar) ayırt edici değildir ve ağırlığı düşürülmelidir.

Yöntem, metinleri makine öğrenmesi modellerinin işleyebileceği sayısal vektörlere çevirir. Bilgi erişimi, arama motorları, belge sınıflandırma ve anahtar kelime çıkarımı gibi alanlarda uzun süredir kullanılır.

Nasıl hesaplanır?

TF-IDF, birbiriyle çarpılan bileşenlerden oluşur.

TF, kelimenin ilgili belgede geçme sıklığıdır. Çoğunlukla belgedeki toplam kelime sayısına bölünerek normalleştirilir ki uzun belgeler haksız avantaj kazanmasın.

IDF, kelimenin tüm belge koleksiyonundaki nadirliğidir. Temel biçimi şöyledir: toplam belge sayısı, kelimenin geçtiği belge sayısına bölünür ve sonucun logaritması alınır. Kelime az belgede geçiyorsa IDF yüksek, hemen her belgede geçiyorsa sıfıra yakın olur.

Sonuç: TF-IDF = TF × IDF. Bir belgede sık geçen ve koleksiyonda nadir olan kelime yüksek puan alır. Uygulamalarda logaritma tabanı, yumuşatma ve normalleştirme biçimi farklı olabilir; bu yüzden aynı metinde farklı kütüphanelerin sayıları birbirinden küçük farklarla ayrışır.

Küçük bir örnek

Kısa birkaç belge düşünelim: birinde kedinin evde uyuması, ikincisinde köpeğin bahçede koşması, üçüncüsünde kedi ile köpeğin iyi anlaşması anlatılıyor. Hepsinde geçen bir sözcük (örneğin bağlaç) düşük puan alır. Yalnızca ikinci belgede geçen bahçe kelimesi ise o belge için yüksek puan taşır.

Python'da scikit-learn ile bu işlem kısa bir kodla yapılır:

from sklearn.feature_extraction.text import TfidfVectorizer belgeler = ["kedi evde uyur", "köpek bahçede koşar", "kedi ve köpek iyi anlaşır"] vec = TfidfVectorizer() matris = vec.fit_transform(belgeler) print(vec.get_feature_names_out())

Çıktı, satırları belgeler, sütunları kelimeler olan bir matristir. Her hücre ilgili kelimenin o belgedeki TF-IDF ağırlığıdır. Türkçede kelime ekleri nedeniyle köke indirme ya da lemmatization uygulamak, aynı kelimenin farklı biçimlerinin ayrı sütunlara dağılmasını önler.

TF-IDF nerelerde kullanılır?

En yaygın kullanım alanları şunlardır: • Arama ve belge sıralama: sorgudaki kelimelere göre belgelerin ilgisini puanlamak. • Belge sınıflandırma: haber kategorisi ya da müşteri şikayeti türü gibi hedefleri tahmin eden klasik modellere girdi vermek. • Anahtar kelime çıkarımı: bir belgede en yüksek ağırlıklı kelimeleri öne çıkarmak. • Benzer belge bulma: belgelerin TF-IDF vektörleri arasında kosinüs benzerliği ölçmek. • Çıkarıcı özetleme: en ağırlıklı kelimeleri taşıyan cümleleri seçmek.

Hızlı, açıklanabilir ve az veriyle çalıştığı için günümüzde bile temel bir referans (baseline) olarak sık tercih edilir.

Sınırları ve gömme vektörlerle farkı

TF-IDF kelimenin anlamını bilmez. Eş anlamlı kelimeleri birbirinden bağımsız sayar, kelime sırasını ve bağlamı göz ardı eder. Bu yüzden bir belgede araç ve otomobil kelimeleri geçiyorsa yöntem bunları ilişkili görmez.

Gömme vektörleri (embeddings) ve dil modelleri ise anlamsal yakınlığı da yakalar; benzer anlamlı kelimeler vektör uzayında birbirine yakın durur. Buna karşılık bu modeller daha fazla hesaplama ve veri gerektirir, sonuçları açıklamak daha zordur.

Pratikte TF-IDF çoğu zaman ilk denenen, sonuçları açıklaması kolay temel yöntemdir. Gerekirse anlamsal modellerle birleştirilir: örneğin önce TF-IDF ile hızlı aday belge listesi çıkarılır, sonra bir dil modeli yeniden sıralar.

Sık yapılan hatalar

Türkçe metinde ön işleme yapmadan doğrudan TF-IDF uygulamak yaygın bir hatadır: ek almış sözcük biçimleri ayrı birimler sayılır ve ağırlıklar dağılır. Durak sözcük (stop word) listesi de dile ve alana göre kurulmalıdır; hazır listeler her metin için uygun olmayabilir.

Bir diğer hata, ağırlıkları eğitim ve test verisinde ayrı hesaplamaktır. Sözlük ve IDF değerleri yalnızca eğitim verisinden öğrenilmeli, test verisi bu öğrenilmiş dönüşümden geçirilmelidir. Aksi halde veri sızıntısı olur ve başarı yapay biçimde yüksek görünür.

Mindset programlarında TF-IDF

Doğal Dil İşleme (NLP) Programı metin ön işlemeyi, metin temsilini ve klasik makine öğrenmesiyle metin sınıflandırmayı sıralı modüllerde işler. Python ile Metin Analizi ve Yapay Zeka ile Metin Özetleme Modelleri ise veri bilimi ve analitik ekiplerine, geleneksel çıkarıcı yöntemlerden dil modellerine uzanan yolu gösterir.

İlgili Mindset programı

Doğal Dil İşleme (NLP) Programı

Sık sorulanlar

Sık sorulan sorular

TF-IDF ile kelime sayımı (bag of words) arasındaki fark nedir?

Kelime sayımı yalnızca her kelimenin belgede kaç kez geçtiğini sayar; sık geçen ama anlamsız kelimeler yüksek değer alır. TF-IDF ise bu sıklığı kelimenin tüm koleksiyondaki yaygınlığına göre düzeltir. Böylece her belgeyi ayırt eden kelimeler öne çıkar.

TF-IDF Türkçe metinlerde çalışır mı?

Çalışır, ancak Türkçe ekler nedeniyle ön işleme önemlidir. Kök bulma ya da lemmatization uygulanmazsa aynı kelimenin farklı çekimleri ayrı sayılır. Durak sözcük listesi de Türkçeye uygun olmalıdır. Bu adımlar iyi yapıldığında TF-IDF Türkçede de sağlam bir temel sunar.

TF-IDF hâlâ kullanılıyor mu, yoksa gömme vektörleri mi onun yerini aldı?

TF-IDF hâlâ yaygın biçimde kullanılır, çünkü hızlıdır, az veriyle çalışır ve sonuçları açıklanabilir. Gömme vektörleri anlamsal benzerlikte üstündür, ama her sorunda gerekli değildir. Birçok proje önce TF-IDF ile başlar, gerekirse daha karmaşık modele geçer.

TF-IDF değeri yüksek olan kelime ne anlama gelir?

O kelimenin ilgili belgede sık geçtiğini ve koleksiyondaki diğer belgelerde nadir bulunduğunu gösterir. Yani belgeyi diğerlerinden ayırt eden bir ipucudur. Değerin yüksek olması kelimenin olumlu ya da önemli olduğu anlamına gelmez, yalnızca ayırt edici olduğunu söyler.

TF-IDF Nedir? Metin Madenciliğinde Kelime Ağırlığı