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”
Ala | lubi | psy | i | koty | Jacek | słonie |
1/5 | 1/5 | 1/5 | 1/5 | 1/5 | 0 | 0 |
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”
Ala | lubi | psy | i | koty | Jacek | słonie |
0 | 1/7 | 1/7 | 2/7 | 1/7 | 1/7 | 1/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”
Ala | lubi | psy | i | koty | Jacek | słonie |
ln(2/1) = 0.69 | ln(2/2) = 0 | ln(2/2) = 0 | ln(2/2) = 0 | ln(2/2) = 0 | ln(2/1) = 0.69 | ln(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”
Ala | lubi | psy | i | koty | Jacek | słonie |
ln(2/1) = 0.69 | ln(2/2) = 0 | ln(2/2) = 0 | ln(2/2) = 0 | ln(2/2) = 0 | ln(2/1) = 0.69 | ln(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
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