Tf-idf

Tf-idf, celý pojem term frequency–inverse document frequency, je metodika hodnocení relevance při vyhledávání textu. Jde o číselnou statistiku, která má odrážet důležitost slova pro dokument v datasetu nebo korpusu.[1] Název je spojením zkratek dvou termínů:

  • Term Frequency – četnost slova v dokumentu
  • Inverse document frequency – převrácená četnost slova ve všech dokumentech

Teorie

Tf složka vyjadřuje, jak často se výraz vyskytuje v dokumentu z databáze. Většinou se normalizuje vydělením délkou (počtem slov) dokumentu, aby se předešlo nadhodnocování dlouhých dokumentů, ve kterých se hledaný výraz může vyskytovat častěji než v kratších, aniž by byl dokument relevantnější. Tím získáváme následující definici tf:

t f i , j = n i , j k n k , j {\displaystyle \mathrm {tf_{i,j}} ={\frac {n_{i,j}}{\sum _{k}n_{k,j}}}}

kde n i , j {\displaystyle n_{i,j}} je počet výskytů slova t i {\displaystyle t_{i}} v dokumentu d j {\displaystyle d_{j}} . Jmenovatel reprezentuje součet počtu výskytů všech slov v dokumentu d j {\displaystyle d_{j}} , tj. jeho délku.

Idf složka reprezentuje "důležitost" slova. Čím častěji se slovo vyskytuje v dokumentech, tím méně je důležité (slovo, které se vyskytuje ve všech dokumentech, jako například v angličtině člen "the" nebo česká spojka "a", je většinou pro vyhledávání nepoužitelné). Idf pro slovo i {\displaystyle i} spočítáme podle vzorce:

i d f i = log | D | | { j : t i d j } | {\displaystyle \mathrm {idf_{i}} =\log {\frac {|D|}{|\{j:t_{i}\in d_{j}\}|}}}

kde | D | {\displaystyle |D|} je velikost databáze dokumentů, tedy počet dokumentů, ve kterých hledáme a | { j : t i d j } | {\displaystyle |\{j:t_{i}\in d_{j}\}|} je počet dokumentů, které obsahují slovo i {\displaystyle i} .

Příklad

Mějme dokument o 100 slovech obsahující 3x slovo "wikipedie". Z předchozích rovnic spočítáme tf slova "wikipedie" jako 3/100 = 0,03. Nyní máme databázi 10 miliónů dokumentů, z nichž slovo "wikipedie" obsahuje jen tisíc dokumentů, idf pak bude log(10 000 000/1000) = 4. Tf-idf získáme jako součin těchto dvou čísel: 0,03 × 4 = 0,12. Nyní řekněme, že v použitém dokumentu byla spojka "a" šestkrát, takže tf pro "a" bude rovno 6/100 = 0,06. V celé databázi se "a" bude vyskytovat v 9 milionech dokumentů, takže idf bude log(10 000 000/9 000 000) = 0,0458. Výsledné tf-idf pro slovo "a" bude 0,06 × 0,0458 = 0,0027.

Odkazy

Reference

  1. Wayback Machine. web.archive.org [online]. [cit. 2023-08-16]. Dostupné v archivu pořízeném z originálu dne 2023-08-16. 

Externí odkazy

  • Slovníkové heslo TF-IDF ve Wikislovníku