Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære TF-IDF | Seksjon
Naturlig Språkprosessering

bookTF-IDF

Sveip for å vise menyen

Forståelse av TF-IDF

Selv om bag of words-modellen er enkel og effektiv, har den en tendens til å overvurdere vanlige termer, noe som gjør det vanskeligere å identifisere mindre hyppige, men mer informative ord. For å løse dette brukes ofte TF-IDF-modellen i stedet.

Note
Definisjon

TF-IDF (term frequency-inverse document frequency) er et statistisk mål som reflekterer hvor viktig et ord er for et spesifikt dokument i forhold til et større korpus.

I motsetning til BoW, som baserer seg på rå forekomster av termer, tar TF-IDF hensyn til både en terms frekvens i et dokument og dens inverse frekvens i hele korpuset. Dette reduserer innflytelsen til vanlige termer og fremhever sjeldnere, mer informative ord.

Hvordan TF-IDF fungerer

TF-IDF-verdien for et begrep i et dokument beregnes som:

tf-idf(t,d)=tf(t,d)×idf(t)\def\tfidf{\operatorname{tf-idf}} \def\tf{\operatorname{tf}} \def\idf{\operatorname{idf}} \tfidf(t, d) = \tf(t, d) \times \idf(t)

hvor:

  • tt er begrepet (et ord eller n-gram);
  • dd er dokumentet.

Det finnes mange varianter for å beregne tf\operatorname{tf} og idf\operatorname{idf} verdier. La oss se på ett vanlig alternativ for hver:

Termfrekvens (TF)

Angir hvor ofte et begrep forekommer i et dokument, og fanger opp dets relative betydning i dokumentet. Tilsvarende bag of words-modellen brukes ofte et enkelt antall:

tf(t,d)=count(t,d)\def\tf{\operatorname{tf}} \def\count{\operatorname{count}} \tf(t, d) = \count(t, d)

Omvendt dokumentfrekvens (IDF)

Måler hvor sjeldent et begrep er i hele korpuset. Det kan beregnes som den naturlige logaritmen av forholdet mellom totalt antall dokumenter og antall dokumenter som inneholder begrepet:

idf(t)=log(1+Ndocuments1+df(t))+1\def\idf{\operatorname{idf}} \def\df{\operatorname{df}} \idf(t) = \log\Bigl(\frac{1 + N_{documents}}{1 + \df(t)}\Bigr) + 1

Denne formelen bruker utjevning (legger til 1) for å unngå divisjon med null og sikrer at selv vanlige begreper får en ikke-null IDF-verdi. I praksis nedvekter IDF hyppige begreper og fremhever mer informative, sjeldne begreper.

Uten IDF-komponenten ville TF-IDF reduseres til et enkelt antall begreper — altså i praksis en bag of words-modell.

Beregning av TF-IDF

La oss gå gjennom et enkelt eksempel:

I dette tilfellet har vi bare to dokumenter og bruker kun unigrammer (enkeltord), så beregningene er enkle. Vi begynner med å beregne termfrekvensene for hvert ord i begge dokumentene, etterfulgt av IDF-verdiene for termene "a" og "is".

Note
Merk

Siden det kun er to dokumenter i vårt korpus, vil alle termer som forekommer i begge dokumentene ha en IDF-verdi på 1, mens andre termer vil ha en IDF-verdi på ~1.406465.

Til slutt kan vi beregne TF-IDF-verdiene for hver term i hvert dokument ved å multiplisere TF med IDF, noe som gir følgende matrise:

L2-normalisering

De resulterende TF-IDF-vektorene kan variere betydelig i størrelse, spesielt i store tekstsamlinger, på grunn av forskjeller i dokumentlengde. Derfor brukes L2-normalisering ofte — for å skalere alle vektorer til en ensartet lengde, noe som muliggjør rettferdige og objektive sammenligninger av dokumenter med ulik lengde.

Note
Les mer

L2-normalisering, også kjent som euklidsk normalisering, er en prosess som brukes på individuelle vektorer for å justere verdiene slik at lengden på vektoren blir 1.

L2-normalisering utføres ved å dele hvert element i vektoren på euklidsk norm for vektoren.

Hvis dokumentvektoren ser slik ut:

d=(w1,w2,w3,...,wN)d = (w_1, w_2, w_3, ..., w_N)

hvor wiw_i er vekten til term ii,

ser euklidsk norm slik ut:

d2=w12+w22+w32+...+wN2\|d\|_2 = \sqrt{w^2_1 + w^2_2 + w^2_3 + ... + w^2_N}

og den normaliserte vektoren ser slik ut:

dnorm=(w1d2,w2d2,w3d2,...,wNd2)d_{norm} = \Bigl(\frac{w_1}{\|d\|_2}, \frac{w_2}{\|d\|_2}, \frac{w_3}{\|d\|_2}, ..., \frac{w_N}{\|d\|_2})

Slik fungerer L2-normalisering for en todimensjonal vektor (et dokument med 2 termer):

Note
Merk

Ikke bekymre deg hvis formlene virker kompliserte. Alt vi gjør er å dividere hver TF-IDF-verdi i et dokument med lengden (eller størrelsen) til dokumentets TF-IDF-vektor. Dette skalerer vektoren slik at lengden blir 1, noe som sikrer konsistente sammenligninger av vektorer.

La oss nå anvende L2-normalisering på vår TF-IDF-matrise, som vi beregnet ovenfor:

Den resulterende matrisen er nøyaktig det vi hadde som eksempel i et av de forrige kapitlene.

question mark

Hva er den viktigste fordelen med TF-IDF-modellen sammenlignet med BoW-modellen?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 23

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 1. Kapittel 23
some-alt