TF-IDF Nedir?

- 3 mins

Screenshot

TF-IDF (term frequency–inverse document frequency), sözcüğün bulunduğu dökümanı ne kadar temsil ettiğini gösteren bir istatistiksel değerdir. TF, DF ve IDF kısımlarını ayrı ayrı açıklayalım.

TF (Terim Sıklığı)

İlgili kelimenin dökümandaki frekansıdır. Kelimenin dökümanda geçme sayısını, dökümandaki toplam kelime sayısına bölerek elde edilir.

DF (Döküman Sıklığı)

TF ile benzemektedir ama bu kez diğer dökümanlara odaklanır. Döküman sayısının ilgili kelimenin geçtiği döküman sayısına bölünmesi ile hesaplanır.

IDF (Ters Döküman Sıklığı)

DF değerinin logaritması alınarak hesaplanır.

Bir kelime diğer dökümanlarda ne kadar sık geçiyorsa DF değeri artar, IDF değeri o kadar azalır.

Screenshot

Örnek

Basit bir senaryo ve python ile konuyu detaylı inceleyelim.

Öncelikle elimizde 4 tane döküman olsun.

doc1 = "a a b c"
doc2 = "a c c c d e f"
doc3 = "a c d d d"
doc4 = "a d f"

Problem1

D anahtar kelimesinin 3.dökümanı ne denli temsil ettiğini bulalım yani tf-idf değerini bulalım.

key = "d"

Problem2

F anahtar kelimesinin 2.döküman için tf-idf değerini bulalım.

key = "f"

# TF
TF = doc4.count(key) / len(doc4)

# IDF
all_documents = [doc1, doc2, doc3, doc4]
count = 0
for doc in all_documents:
    for word in doc:
        if word == key:
            count += 1
            break

total_doc_number = len(all_documents)
DF = total_doc_number / count

from math import log10
IDF = log10(DF)

TF * IDF # 0.1

Görüldüğü üzere 3 ayrı dökümanda geçen D daha düşük tf-idf değerine sahipken, 2 ayrı dökümanda geçen F daha yüksek tf-idf elde etti. İlgili dökümanlarda geçme sayılarını da unutmayalım.

Bir sonraki yazıda görüşmek dileğiyle.

Referanslar

Mustafa Durmus

Mustafa Durmus

a man who travels the world!

rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora