TFIDF – wektoryzacja biorąca pod uwagę ważność słów

TF (term frequency) IDF (Inverse Document Frequency)

Term Frequency

\text{Term Frequency (w)} = \frac{\text{ile razy słowo (w) występuje w dokumencie}}{\text{ile jest słów w całym dokumencie}}

Przykład

Dokument A:

Ala lubi psy i koty

Dokument B:

Jacek lubi psy i koty i słonie
Budowanie bazy słownictwa
Ala, lubi, psy, i, koty, Jacek, i, słonie
Budowanie wektora dla „Ala lubi psy i koty”
AlalubipsyikotyJaceksłonie
1/51/51/51/51/500

czyli nasz wektor to:

1/5, 1/5, 1/5, 1/5, 1/5, 0, 0
Budowanie wektora dla „Jacek lubi psy i koty i słonie”
AlalubipsyikotyJaceksłonie
01/71/72/71/71/71/7

czyli nasz wektor to:

0, 1/7, 1/7, 2/7, 1/7, 1/7, 1/7

Wniosek

TF faworyzuje często występujące słowa.

Inverse Document Frequency

\text{Inverse Document Frequency(w)} = ln(\frac{\text{ile mamy dokumentów}}{\text{w ilu dokumentach występuje dane słowo - w}})

Przykład

W przykładzie posłużę się tymi samymi dokumentami co w poprzednim. Tak więc zaczynamy tutaj od budowania wektorów.

Budowanie wektora dla „Ala lubi psy i koty”
AlalubipsyikotyJaceksłonie
ln(2/1) = 0.69ln(2/2) = 0ln(2/2) = 0ln(2/2) = 0ln(2/2) = 0ln(2/1) = 0.69ln(2/1) = 0.69

czyli nasz wektor to:

0.69, 0, 0, 0, 0, 0.69, 0.69
Budowanie wektora dla „Jacek lubi psy i koty i słonie”
AlalubipsyikotyJaceksłonie
ln(2/1) = 0.69ln(2/2) = 0ln(2/2) = 0ln(2/2) = 0ln(2/2) = 0ln(2/1) = 0.69ln(2/1) = 0.69

czyli nasz wektor to:

0.69, 0, 0, 0, 0, 0.69, 0.69

Jak widać wektory są identyczne dla obydwu dokumentów przypadków – tak działa IDF 🙂

Wniosek

IDF promuje słowa, które występują rzadko patrząc na dokumenty.

Term Frequency – Inverse Document Frequency

Żeby zbudować finalny wektor TFIDF należy po prostu przemnożyć przez siebie wektory.

Budowanie wektora dla „Ala lubi psy i koty”
(1/5 * 0.69, 1/5 * 0, 1/5 * 0, 1/5 * 0, 1/5 * 0, 0 * 0.69, 0 * 0.69) = (0.138, 0, 0, 0, 0, 0, 0)

Budowanie wektora dla „Jacek lubi psy i koty i słonie”
(0 * 0.69, 1/7 * 0, 1/7 * 0, 2/7 * 0, 1/5 * 0, 1/7 * 0.69, 1/7 * 0.69) = (0, 0, 0, 0, 0, 0.098..., 0.098...)

Obliczanie podobieństwa

Zajrzyj tutaj

Problem TFIDF

Mimo swojego zaawansowania TFIDF wciąż nie będzie w stanie uchwycić identycznego/bliskiego znaczenie innych słów. Przykładowo:

Kocham koty
Uwielbiam koty

Dla TFIDF będą to tak samo podobne do siebie zdania jak:

Kocham koty
Nienawidzę koty

Warto zajrzeć

1. https://towardsdatascience.com/text-vectorization-term-frequency-inverse-document-frequency-tfidf-5a3f9604da6d

Pozostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *