# Tf-idf
Bilgi almada (information retrieval), tf-idf (ayrıca TF*IDF, TFIDF, TF-IDF veya Tf-idf ), terim sıklığı-ters belge sıklığı ifadesinin kısaltmasıdır ve bir koleksiyon veya gövdedeki bir belge için bir kelimenin öneminin ölçüsüdür; bazı kelimelerin genel olarak daha sık göründüğü gerçeği göz önünde bulundurularak ayarlanmıştır. Kelime torbası modeli gibi, bir belgeyi kelime sırası olmaksızın, çoklu kelime kümeleri olarak modeller. Bu, kelimelerin ağırlığının metnin geri kalanına bağlı olmasına izin vererek, basit kelime torbası modeline göre bir iyileştirmedir.
Bilgi arama, metin madenciliği ve kullanıcı modelleme aramalarında sıklıkla ağırlıklandırma faktörü olarak kullanılmıştır. 2015 yılında yapılan bir araştırma, dijital kütüphanelerdeki metin tabanlı öneri sistemlerinin %83'ünün tf-idf kullandığını göstermiştir. tf-idf ağırlıklandırma şemasının varyasyonları , arama motorları tarafından bir kullanıcı sorgusu verildiğinde bir belgenin alakalılığını puanlama ve sıralamada merkezi bir araç olarak sıklıkla kullanılmıştır.
En basit sıralama fonksiyonlarından biri, her sorgu terimi için tf-idf'nin toplanmasıyla hesaplanır; çok daha karmaşık sıralama fonksiyonları bu basit modelin varyantlarıdır.


## Motivasyonlar.
Karen Spärck Jones (1972), Ters Belge Sıklığı (idf) adı verilen terim özgüllüğünün istatistiksel bir yorumunu tasarladı ve bu, terim ağırlıklandırmasının temel taşı haline geldi:
Örneğin, Shakespeare'in 37 oyunundaki bazı kelimelerin df (belge sıklığı) ve idf değerleri şu şekildedir:
" Romeo ", " Falstaff " ve "salata" kelimelerinin çok az oyunda geçtiğini görüyoruz, dolayısıyla bu kelimelere bakarak hangi oyuna ait olabileceği konusunda fikir sahibi olabiliriz. Buna karşılık, "iyi" ve "tatlı" her oyunda karşımıza çıkar ve hangi oyun olduğuna dair hiçbir bilgi vermez.


## Tanım.
  - tf-idf iki istatistiğin, "terim frekansı" ve "ters belge frekansının" ürünüdür. Her iki istatistiğin kesin değerlerini belirlemenin çeşitli yolları vardır.
  - Bir belge veya web sayfasındaki bir anahtar kelimenin veya ifadenin önemini tanımlamayı amaçlayan bir formül.


### Terim Sıklığı.
Terim sıklığı, tf("t","d"), "d" belgesi içindeki "t" teriminin göreli sıklığıdır,
 tf(t,d) = f_t,d/,
Burada "f""t","d" bir belgedeki bir terimin "ham sayısıdır", yani "t" teriminin "d" belgesinde geçtiği zaman sayısıdır. Paydanın, "d" belgesindeki toplam terim sayısı olduğunu (aynı terimin her bir geçişini ayrı ayrı sayarak) unutmayın. Terim sıklığını tanımlamanın çeşitli başka yolları da vardır: 
  - ham sayımın kendisi: tf("t","d") = "f""t","d"
  - Boole "frekansları": "t" "d" de meydana gelirse tf("t","d") = 1 aksi takdirde 0 
  - logaritmik olarak ölçeklenmiş frekans: tf("t","d") = log (1 + "f""t","d")  
  - artırılmış frekans, daha uzun belgelere doğru bir önyargıyı önlemek için, örneğin ham frekansın belgedeki en sık görülen terimin ham frekansına bölünmesiyle elde edilir:


### Ters belge sıklığı.
Ters belge sıklığı, kelimenin ne kadar bilgi sağladığının, yani tüm belgelerde ne kadar yaygın veya nadir olduğunun bir ölçüsüdür. Terimi içeren belgelerin sayısının, terimi içeren belgelerin sayısına bölünmesiyle elde edilen, kelimeyi içeren belgelerin logaritmik olarak ölçeklendirilmiş ters kesridir:
 idf(t, D) = log%s/%sN
  - N : korpustaki toplam belge sayısı N = 
  - |{d ∈D: t ∈d}| : terimin kullanıldığı belge sayısı t görünür (yani, tf(t,d) ≠0 ). Terimin korpusta olmaması durumunda sıfıra bölme işlemi gerçekleşir. Bu nedenle paydayı ayarlamak yaygındır 1 + N ve payda 1 + |{d ∈D: t ∈d}| .


### Terim sıklığı–ters belge sıklığı.
Daha sonra tf–idf şu şekilde hesaplanır:
tfidf(t,d,D) = tf(t,d) ·idf(t, D)
tf-idf'de yüksek bir ağırlığa, (verilen belgede) yüksek bir terimsıklığı ve tüm belge koleksiyonunda terimin düşük bir belge sıklığı ile ulaşılır; bu nedenle ağırlıklar ortak terimleri filtreleme eğilimindedir. İdf'nin logaritmik fonksiyonu içindeki oran her zaman 1'den büyük veya eşit olduğundan, idf'nin (ve tf-idf'nin) değeri 0'dan büyük veya eşittir. Bir terim daha fazla belgede göründükçe logaritmanın içindeki oran 1'e yaklaşır ve idf ile tf–idf'yi 0'a yakınlaştırır.


## IDF'nin gerekçesi.
Idf , Karen Spärck Jones'un 1972 tarihli bir makalesinde "terim özgüllüğü" olarak ortaya atılmıştır. Her ne kadar bir sezgisel yöntem olarak iyi çalışsa da, teorik temelleri en azından otuz yıl boyunca sorunlu oldu ve birçok araştırmacı bunun için bilgi teorik gerekçeleri bulmaya çalıştı.
Spärck Jones'un kendi açıklaması, Zipf yasasıyla bağlantı dışında pek fazla teori önermiyordu. Belirli bir belge "d" "t" terimini göreceli belge sıklığı olarak içermesi olasılığını tahmin ederek, idf'yi olasılıksal bir temele oturtmak için girişimlerde bulunuldu 
P(t|D) = N/,
böylece idf'yi şu şekilde tanımlayabiliriz
 idf amp; = -log P(t|D) 
 amp; = log1/P(t|D)
 amp; = logN/
Yani ters belge sıklığı, "ters" göreli belge sıklığının logaritmasıdır.
Bu olasılıksal yorumlama da öz-bilgilendirmeyle aynı biçimi alır. Ancak, bu tür bilgi-teorik kavramların bilgi alma sorunlarına uygulanması, gerekli olasılık dağılımları için uygun olay alanlarını tanımlamaya çalışırken sorunlara yol açar: yalnızca belgelerin değil, aynı zamanda sorguların ve terimlerin de dikkate alınması gerekir.


## Bilgi teorisiyle bağlantı.
Hem terim sıklığı hem de ters belge sıklığı, bilgi teorisi açısından formüle edilebilir; ürünlerinin, bir belgenin ortak bilgi içeriği açısından neden bir anlam taşıdığını anlamaya yardımcı olur. Dağıtım hakkında karakteristik bir varsayım p(d,t) bu mudur:
p(d|t) = %s/%s1
Aizawa'ya göre bu varsayım ve bunun sonuçları: "tf-idf'nin kullandığı sezgisel yöntemi temsil ediyor." 
Gövdedeki "rastgele seçilmiş" bir belgenin koşullu entropisi D, belirli bir terim içermesi koşuluyla t (ve tüm belgelerin seçilme olasılığının eşit olduğunu varsayarak) şudur:
H(D|T=t)=-∑_d p_d|tlogp_d|t=-log1/=log+/log|D|=-idf(t)+log|D|
Notasyon açısından, D Ve T sırasıyla bir belgeyi veya terimi çizmeye karşılık gelen "rastgele değişkenler"dir. Karşılıklı bilgi şu şekilde ifade edilebilir:
M(T;D) = H(D) - H(D|T) = ∑_t p_t·(H(D) - H(D|W=t))=∑_t p_t ·idf(t)
Son adım genişletmektir p_t, bir belgenin (rastgele) seçimine göre, bir terim çizmenin koşulsuz olasılığı, şunu elde eder:
M(T;D)=∑_t,d p_t|d·p_d ·idf(t) = ∑_t,d tf(t,d)·1/·idf(t) = 1/∑_t,d tf(t,d)·idf(t).
Bu ifade, tüm olası terimlerin ve belgelerin Tf–idf'sinin toplanmasının, ortak dağıtımlarının tüm özelliklerini hesaba katarak belgeler ve terimler arasındaki karşılıklı bilgiyi kurtardığını göstermektedir. Dolayısıyla her Tf-idf terim x belge çiftine bağlı "bilgi bitini" taşır.


## tf-idf Örneği.
Sağda listelendiği gibi, yalnızca iki belgeden oluşan bir metin gövdesinin terim sayım tablolarına sahip olduğumuzu varsayalım.
"Turkiye" terimi için tf-idf hesaplaması aşağıdaki şekilde yapılır:
Ham frekans formunda tf, her belge için "Turkiye" ifadesinin frekansıdır. Her belgede "Turkiye" kelimesi bir kez geçiyor; ancak 2. belgede daha fazla kelime olduğu için, göreceli sıklığı daha az.
 tf(”𝖳𝗎𝗋𝗄𝗂𝗒𝖾”, d_1) = 1/5 = 0.2
 tf(”𝖳𝗎𝗋𝗄𝗂𝗒𝖾”, d_2) = 1/7 ≈0.14 
İdf, her metinde sabittir ve "Turkiye" kelimesini içeren belgelerin oranını belirler . Bu durumda, iki belgeden oluşan bir metin bütününe sahibiz ve hepsinde "Turkiye" kelimesi geçiyor.
 idf(”𝖳𝗎𝗋𝗄𝗂𝗒𝖾”, D) = log(2/2 ) = 0 
Yani "Turkiye" kelimesi için tf–idf sıfırdır, bu da kelimenin tüm belgelerde göründüğü gibi pek de bilgilendirici olmadığı anlamına gelir.
 tfidf(”𝖳𝗎𝗋𝗄𝗂𝗒𝖾”, d_1, D) = 0.2 ×0 = 0 
 tfidf(”𝖳𝗎𝗋𝗄𝗂𝗒𝖾”, d_2, D) = 0.14 ×0 = 0 
"Su" kelimesi daha ilginçtir - üç kez geçer, ama sadece ikinci belgede:
 tf(”𝗌𝗎”, d_1) = 0/5 = 0 
 tf(”𝗌𝗎”, d_2) = 3/7 ≈0.429 
 idf(”𝗌𝗎”, D) = log(2/1 ) = 0.301 
Sonunda,
 tfidf(”𝗌𝗎”, d_1, D) = tf(”𝗌𝗎”, d_1) ×idf(”𝗌𝗎”, D) = 0 ×0.301 = 0
 tfidf(”𝗌𝗎”, d_2, D) = tf(”𝗌𝗎”, d_2) ×idf(”𝗌𝗎”, D) = 0.429 ×0.301 ≈0.129
(10 tabanlı logaritmayı kullanarak).


## Terimlerin ötesinde.
Tf-idf'nin ardındaki fikir, terimler dışındaki varlıklar için de geçerlidir. 1998 yılında, İDF kavramı atıflara uygulandı. Yazarlar, "çok nadir bir atıf iki belge tarafından paylaşılıyorsa, bu atıfın çok sayıda belge tarafından yapılan atıflardan daha fazla ağırlıklandırılması gerektiğini" savundular. Ek olarak, tf–idf, videolarda ve tüm cümlelerde nesne eşleştirmesi yapma amacıyla "görsel kelimelere" uygulandı. Ancak, tf-idf kavramının tüm durumlarda düz bir tf şemasından (idf olmadan) daha etkili olduğu kanıtlanmamıştır. Tf-idf atıflara uygulandığında, araştırmacılar idf bileşeni olmayan basit bir atıf sayısı ağırlığına göre herhangi bir iyileştirme bulamadılar.


## Türevler.
Bir dizi terim ağırlıklandırma şeması tf-idf'den türetilmiştir. Bunlardan biri TF–PDF'dir (terim sıklığı * orantılı belge sıklığı). TF-PDF, medyada ortaya çıkan yeni konuların belirlenmesi amacıyla 2001 yılında ortaya çıkmıştır. PDF bileşeni, bir terimin farklı alanlarda ne sıklıkta geçtiğini ölçer. Başka bir türev ise TF–IDuF'tur. TF–IDuF'de idf, aranacak veya önerilecek belge gövdesine göre hesaplanmaz. Bunun yerine idf kullanıcıların kişisel belge koleksiyonları üzerinden hesaplanır. Yazarlar, TF-IDuF'un tf-idf kadar etkili olduğunu ancak örneğin bir kullanıcı modelleme sisteminin küresel belge gövdesine erişimi olmadığı durumlarda da uygulanabileceğini bildirmektedir.


## Dış bağlantılar ve önerilen okumalar.
  - Gensim, vektör uzayı modellemesi için bir Python kütüphanesidir ve tf-idf ağırlıklandırmasını içerir.
  - Bir arama motorunun anatomisi
  - tf–idf ve Lucene'de kullanılan ilgili tanımlar
  - Scikit-learn'de TfidfTransformer
  - Metin Madenciliğinde (TM) çeşitli görevler için kullanılabilen Metinden Matris Oluşturucu (TMG) MATLAB araç kutusu  özellikle i) indeksleme, ii) alma, iii) boyut azaltma, iv) kümeleme, v) sınıflandırma. İndeksleme adımı kullanıcıya tf–idf dahil olmak üzere yerel ve küresel ağırlıklandırma yöntemlerini uygulama olanağı sunar.
  - Terim sıklığı açıklandı Terim sıklığının açıklaması