Tf-idf

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Tf-idf je metodika hodnocení relevance při vyhledávání textu. 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[editovat | editovat zdroj]

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:

 \mathrm{tf_{i,j}} = \frac{n_{i,j}}{\sum_k n_{k,j}}

kde n_{i,j} je počet výskytů slova  t_{i} v dokumentu  d_{j} . Jmenovatel reprezentuje součet počtu výskytů všech slov v dokumentu  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 spočítáme podle vzorce:

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

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

Příklad[editovat | editovat zdroj]

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.