Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Tf-idf | Grunnleggende Tekstmodeller
Introduksjon til NLP

bookTf-idf

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 frekvensen av en term 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. Her er 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)

Invers dokumentfrekvens (IDF)

Måler hvor sjeldent et begrep er i hele korpuset. Dette 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. IDF nedvekter dermed hyppige begreper og fremhever mer informative, sjeldne begreper.

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

Beregning av TF-IDF

Her er 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 hver term 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 element ii,

så 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 elementer):

Note
Merk

Ikke bekymre deg hvis formlene ser kompliserte ut. 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 3. Kapittel 6

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

Awesome!

Completion rate improved to 3.45

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 frekvensen av en term 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. Her er 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)

Invers dokumentfrekvens (IDF)

Måler hvor sjeldent et begrep er i hele korpuset. Dette 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. IDF nedvekter dermed hyppige begreper og fremhever mer informative, sjeldne begreper.

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

Beregning av TF-IDF

Her er 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 hver term 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 element ii,

så 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 elementer):

Note
Merk

Ikke bekymre deg hvis formlene ser kompliserte ut. 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 3. Kapittel 6
some-alt