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

bookTf-idf

Forståelse af TF-IDF

Selvom bag of words-modellen er enkel og effektiv, har den en tendens til at overvurdere almindelige termer, hvilket gør det sværere at identificere mindre hyppige, men mere informative ord. For at løse dette anvendes ofte TF-IDF-modellen i stedet.

Note
Definition

TF-IDF (term frequency-inverse document frequency) er et statistisk mål, der afspejler, hvor vigtig et ord er for et specifikt dokument i forhold til et større korpus.

I modsætning til BoW, som baserer sig på rå optællinger af termer, tager TF-IDF højde for både en terms frekvens i et dokument og dens inverse frekvens på tværs af hele korpuset. Dette reducerer indflydelsen af almindelige termer og fremhæver sjældnere, mere informative ord.

Sådan fungerer TF-IDF

TF-IDF-scoren for et term 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 termen (et ord eller n-gram);
  • dd er dokumentet.

Der findes mange varianter til beregning af tf\operatorname{tf} og idf\operatorname{idf} værdier. Her gennemgås en almindelig mulighed for hver:

Termfrekvens (TF)

Angiver hvor ofte et term forekommer i et dokument og afspejler dets relative betydning i dokumentet. Ligesom i bag of words-modellen anvendes ofte en simpel optælling:

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 sjældent et term forekommer i hele korpuset. Det kan beregnes som den naturlige logaritme af forholdet mellem det samlede antal dokumenter og antallet af dokumenter, der indeholder termen:

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 formel anvender udjævning (tilføjelse af 1) for at undgå division med nul og sikrer, at selv almindelige termer får en ikke-nul IDF-score. IDF nedvægter hyppige termer og fremhæver mere informative, sjældne termer.

Uden IDF-komponenten ville TF-IDF blot være en simpel termoptælling — hvilket svarer til en bag of words-model.

Beregning af TF-IDF

Her gennemgås et simpelt eksempel:

I dette tilfælde har vi kun to dokumenter og bruger kun unigrammer (enkeltstående ord), så beregningerne er ligetil. Vi starter med at beregne termfrekvenserne for hvert ord i begge dokumenter, efterfulgt af IDF-værdierne for termerne "a" og "is".

Note
Bemærk

Da der kun er to dokumenter i vores korpus, vil enhver term, der optræder i begge dokumenter, have en IDF-værdi på 1, mens andre termer vil have en IDF-værdi på ~1.406465.

Endelig kan vi beregne TF-IDF-værdierne for hver term i hvert dokument ved at multiplicere TF med IDF, hvilket resulterer i følgende matrix:

L2-normalisering

De resulterende TF-IDF-vektorer kan variere betydeligt i størrelse, især i store korpora, på grund af forskelle i dokumentlængde. Derfor anvendes L2-normalisering ofte — for at skalere alle vektorer til en ensartet længde, hvilket muliggør retfærdige og upartiske sammenligninger af dokumenter med forskellige længder.

Note
Læs Mere

L2-normalisering, også kendt som euklidisk normalisering, er en proces, der anvendes på individuelle vektorer og justerer deres værdier, så vektorens længde bliver 1.

L2-normalisering udføres ved at dividere hvert element i vektoren med vektorens euklidiske norm.

Hvis dokumentvektoren ser således ud:

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

hvor wiw_i er vægten af term ii,

så ser den euklidiske norm således ud:

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

og den normaliserede vektor ser således ud:

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})

Her er, hvordan L2-normalisering fungerer for en 2-dimensionel vektor (et dokument med 2 termer):

Note
Bemærk

Vær ikke bekymret, hvis formlerne ser komplekse ud. Alt vi gør, er at dividere hver TF-IDF-værdi i et dokument med længden (eller størrelsen) af dokumentets TF-IDF-vektor. Dette skalerer vektoren, så dens længde bliver 1, hvilket sikrer ensartede sammenligninger af vektorer.

Lad os nu anvende L2-normalisering på vores TF-IDF-matrix, som vi beregnede ovenfor:

Den resulterende matrix er præcis den, vi havde som eksempel i et af de foregående kapitler.

question mark

Hvad er den vigtigste fordel ved TF-IDF-modellen sammenlignet med BoW-modellen?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 6

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 3.45

bookTf-idf

Stryg for at vise menuen

Forståelse af TF-IDF

Selvom bag of words-modellen er enkel og effektiv, har den en tendens til at overvurdere almindelige termer, hvilket gør det sværere at identificere mindre hyppige, men mere informative ord. For at løse dette anvendes ofte TF-IDF-modellen i stedet.

Note
Definition

TF-IDF (term frequency-inverse document frequency) er et statistisk mål, der afspejler, hvor vigtig et ord er for et specifikt dokument i forhold til et større korpus.

I modsætning til BoW, som baserer sig på rå optællinger af termer, tager TF-IDF højde for både en terms frekvens i et dokument og dens inverse frekvens på tværs af hele korpuset. Dette reducerer indflydelsen af almindelige termer og fremhæver sjældnere, mere informative ord.

Sådan fungerer TF-IDF

TF-IDF-scoren for et term 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 termen (et ord eller n-gram);
  • dd er dokumentet.

Der findes mange varianter til beregning af tf\operatorname{tf} og idf\operatorname{idf} værdier. Her gennemgås en almindelig mulighed for hver:

Termfrekvens (TF)

Angiver hvor ofte et term forekommer i et dokument og afspejler dets relative betydning i dokumentet. Ligesom i bag of words-modellen anvendes ofte en simpel optælling:

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 sjældent et term forekommer i hele korpuset. Det kan beregnes som den naturlige logaritme af forholdet mellem det samlede antal dokumenter og antallet af dokumenter, der indeholder termen:

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 formel anvender udjævning (tilføjelse af 1) for at undgå division med nul og sikrer, at selv almindelige termer får en ikke-nul IDF-score. IDF nedvægter hyppige termer og fremhæver mere informative, sjældne termer.

Uden IDF-komponenten ville TF-IDF blot være en simpel termoptælling — hvilket svarer til en bag of words-model.

Beregning af TF-IDF

Her gennemgås et simpelt eksempel:

I dette tilfælde har vi kun to dokumenter og bruger kun unigrammer (enkeltstående ord), så beregningerne er ligetil. Vi starter med at beregne termfrekvenserne for hvert ord i begge dokumenter, efterfulgt af IDF-værdierne for termerne "a" og "is".

Note
Bemærk

Da der kun er to dokumenter i vores korpus, vil enhver term, der optræder i begge dokumenter, have en IDF-værdi på 1, mens andre termer vil have en IDF-værdi på ~1.406465.

Endelig kan vi beregne TF-IDF-værdierne for hver term i hvert dokument ved at multiplicere TF med IDF, hvilket resulterer i følgende matrix:

L2-normalisering

De resulterende TF-IDF-vektorer kan variere betydeligt i størrelse, især i store korpora, på grund af forskelle i dokumentlængde. Derfor anvendes L2-normalisering ofte — for at skalere alle vektorer til en ensartet længde, hvilket muliggør retfærdige og upartiske sammenligninger af dokumenter med forskellige længder.

Note
Læs Mere

L2-normalisering, også kendt som euklidisk normalisering, er en proces, der anvendes på individuelle vektorer og justerer deres værdier, så vektorens længde bliver 1.

L2-normalisering udføres ved at dividere hvert element i vektoren med vektorens euklidiske norm.

Hvis dokumentvektoren ser således ud:

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

hvor wiw_i er vægten af term ii,

så ser den euklidiske norm således ud:

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

og den normaliserede vektor ser således ud:

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})

Her er, hvordan L2-normalisering fungerer for en 2-dimensionel vektor (et dokument med 2 termer):

Note
Bemærk

Vær ikke bekymret, hvis formlerne ser komplekse ud. Alt vi gør, er at dividere hver TF-IDF-værdi i et dokument med længden (eller størrelsen) af dokumentets TF-IDF-vektor. Dette skalerer vektoren, så dens længde bliver 1, hvilket sikrer ensartede sammenligninger af vektorer.

Lad os nu anvende L2-normalisering på vores TF-IDF-matrix, som vi beregnede ovenfor:

Den resulterende matrix er præcis den, vi havde som eksempel i et af de foregående kapitler.

question mark

Hvad er den vigtigste fordel ved TF-IDF-modellen sammenlignet med BoW-modellen?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 6
some-alt