Robocikowo>ROBOCIKOWO
Dane

TF-IDF

1972AktywnyOpublikowany
Statystyczna miara wagi słowa w dokumencie uwzględniająca jego częstość i rzadkość w korpusie.
Kluczowa innowacja
Waży słowa nie tylko przez częstość w dokumencie (TF), ale też przez rzadkość w całym korpusie (IDF), eliminując dominację często występujących, lecz mało informatywnych słów.
Kategoria
Dane
Poziom abstrakcji
Building block
Poziom operacji
Dane
Zastosowania
Wyszukiwarki internetowe (ranking dokumentów)Klasyfikacja tekstuWyodrębnianie słów kluczowychSystemy rekomendacji treściPierwsza linia obrony przed spamem e-mailowym

Jak działa

TF(t,d) = liczba wystąpień terminu t w dokumencie d / całkowita liczba słów w d. IDF(t) = log(N / df(t)), gdzie N = liczba dokumentów, df(t) = liczba dokumentów zawierających t. TF-IDF(t,d) = TF(t,d) × IDF(t). Wynikowe wektory dokumentów są rzadkie i mogą być używane w wyszukiwaniu i klasyfikacji.

Rozwiązany problem

Bag-of-Words traktuje wszystkie słowa jednakowo — słowa takie jak "i", "w", "jest" mają wysoką częstość, ale niską wartość informacyjną. TF-IDF nadaje niższe wagi popularnym słowom i wyższe rzadkim, specyficznym dla danego dokumentu.

Komponenty

Term Frequency (TF)Sygnał lokalny (per dokument)

Częstość wystąpień terminu t w dokumencie d. Stosowane warianty: surowy count, count znormalizowany długością dokumentu, log(1+tf), boolean, sublinear scaling.

Oficjalna

Inverse Document Frequency (IDF)Sygnał globalny (per korpus)

Globalny czynnik karzący terminy częste w korpusie. Klasycznie IDF(t) = log(N / df(t)); warianty z wygładzaniem: log((N+1)/(df(t)+1))+1 (smooth IDF, scikit-learn) lub log((N - df(t) + 0.5)/(df(t) + 0.5)) (probabilistic, BM25).

Oficjalna

Normalizacja wektora dokumentuSkalowanie wyniku

Po obliczeniu TF·IDF wektory dokumentów są zwykle normalizowane do długości jednostkowej (L2), co umożliwia porównywanie podobieństwa kosinusowego niezależnie od długości dokumentu.

Oficjalna

Implementacja

Pułapki implementacyjne
IDF wymaga pełnego korpusu przy budowie indeksuŚrednia

TF-IDF nie może być obliczane inkrementalnie — każdy nowy dokument zmienia IDF wszystkich terminów. Dynamiczne korpusy wymagają periodycznego re-buildowania indeksu lub przybliżonych metod.

Rozwiązanie:Stosuj BM25 z aproksymowanymi statystykami IDF aktualizowanymi wsadowo lub hashing trick (HashingVectorizer) dla streamingu.
Brak semantycznego zrozumienia — synonimy traktowane jako różne terminyWysoka

TF-IDF traktuje "samochód" i "auto" jako niezależne terminy. Dla zadań wymagających semantycznego dopasowania (question answering, RAG) embeddingi gęste są lepszym wyborem.

Rozwiązanie:Łącz TF-IDF / BM25 (sparse retrieval) z embeddingami gęstymi w architekturze hybrid search; rozważ rozszerzenie zapytań przez synonimy lub stemming.
TF rośnie liniowo — częste słowa dominują wynikŚrednia

Surowe TF nadaje słowu występującemu 100 razy 100× większą wagę niż występującemu raz, co rzadko odzwierciedla relewancję. BM25 rozwiązuje to przez saturację (k1).

Rozwiązanie:Stosuj sublinear TF (1 + log tf) lub przejdź na BM25.
Eksplozja słownika przy n-gramach i braku filtrów dfWysoka

ngram_range=(1,3) bez min_df / max_df potrafi wygenerować miliony cech, z których większość to literówki lub hapax legomena — model przeucza się i indeks puchnie.

Rozwiązanie:Zawsze ustawiaj min_df ≥ 2 i max_df ≤ 0.95; rozważ HashingVectorizer dla bardzo dużych korpusów.
Niedopasowanie preprocessingu między indeksowaniem a zapytaniemWysoka

Zapytanie musi przejść identyczny tokenizer / stemmer / lowercasing co dokumenty w indeksie. Inny preprocessing = miss w odwróconym indeksie.

Rozwiązanie:Zapisz pełny pipeline preprocessing (np. sklearn Pipeline) i serializuj razem z indeksem.

Ewolucja

Oryginalny paper · 1972 · Journal of Documentation · Karen Spärck Jones
A Statistical Interpretation of Term Specificity and Its Application in Retrieval
Karen Spärck Jones
1957
Hans Peter Luhn — TF jako fundament

IBM-owski badacz Hans Peter Luhn proponuje automatyczne indeksowanie dokumentów na podstawie częstości słów — fundament komponentu TF.

1972
Karen Spärck Jones definiuje IDF
Punkt przełomowy

Praca "A Statistical Interpretation of Term Specificity and Its Application in Retrieval" wprowadza ideę, że specyficzność terminu (IDF) powinna ważyć jego statystykę dokumentową.

1988
Salton & Buckley — kanoniczne warianty TF·IDF
Punkt przełomowy

Praca "Term-weighting approaches in automatic text retrieval" systematyzuje rodzinę formuł TF·IDF (notacja SMART) używaną do dziś.

1994
BM25 jako probabilistyczny następca
Punkt przełomowy

Robertson i in. publikują Okapi BM25 — saturujący wariant TF z normalizacją długości dokumentu, który wypiera klasyczne TF·IDF w wyszukiwarkach pełnotekstowych.

2013
Word2Vec i era embeddingów gęstych

Mikolov i in. publikują Word2Vec — gęste reprezentacje semantyczne zaczynają wypierać TF·IDF w zadaniach wymagających rozumienia synonimów.

2020
Renesans w hybrydowym RAG

W systemach Retrieval-Augmented Generation TF·IDF / BM25 wracają jako sparse retriever w połączeniu z embeddingami gęstymi (hybrid search).

Hiperparametry (konfigurowalne osie)

Wariant TFŚrednia

Sposób liczenia częstości terminu: raw / log-scaled / boolean / sublinear. Sublinear (1 + log(tf)) tłumi efekt powtórzeń tego samego słowa.

rawSurowy licznik wystąpień.
sublinear (1 + log tf)Domyślne w wielu implementacjach IR.
booleanTylko obecność / brak terminu.
Wygładzanie IDFŚrednia

Czy stosować +1 w mianowniku, by uniknąć dzielenia przez zero dla terminów spoza zbioru treningowego (smooth IDF) oraz +1 do całego wyniku w scikit-learn.

smooth_idf=TrueDomyślne w sklearn TfidfVectorizer.
smooth_idf=FalseKlasyczna formuła log(N/df).
Normalizacja wektoraŚrednia

Norma wektora dokumentu po wymnożeniu TF·IDF: l2 (jednostkowa), l1 lub brak. L2 jest standardem dla cosine similarity.

l2Standard pod cosine similarity.
noneSurowe TF·IDF.
Zakres n-gramówWysoka

Czy traktować jako termin pojedyncze słowa (1,1), bigramy (1,2) lub dłuższe n-gramy. Większy zakres = bogatsze cechy, ale eksplodujący słownik.

(1, 1)Tylko unigramy — najprostszy baseline.
(1, 2)Unigramy + bigramy — popularne w klasyfikacji tekstu.
Filtry częstości dokumentowejWysoka

Odrzucenie terminów występujących rzadziej niż min_df lub w więcej niż max_df dokumentów. Pozwala odsiać literówki / hapax legomena oraz słowa stop-list-like.

min_df=2, max_df=0.95Konserwatywne ustawienie produkcyjne.

Złożoność obliczeniowa

Złożoność czasowa: O(N · L) build, O(|q| · log N) query. Złożoność przestrzenna: O(N · |V|) gęsto, O(Σ nnz) rzadko.

Paradygmat wykonania

Tryb główny
Rzadki
Wzorzec aktywacji
Podzbiór aktywny

Równoległość

Poziom równoległości
W pełni równoległy
Zakres
TreningInferencja

Wymagania sprzętowe

Podstawowe

TF-IDF to algebra rzadka na liczbach całkowitych / float — CPU z SIMD (AVX) i dobrą hierarchią cache jest naturalnym targetem; brak benefitu z masywnego paralelizmu GPU.

Dobry fit

Algorytm działa wszędzie — od mikrokontrolerów po klastry. Implementacje istnieją w Pythonie, Javie, C++, Rust, JS.

Ograniczony

Operacje rzadkie i przeważnie I/O-bound; tensor cores nie dają tu istotnego przyspieszenia. GPU stosuje się głównie gdy TF-IDF jest cechą wejściową dla modelu trenowanego na GPU.