Tf-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.
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)hvor:
- t er termen (et ord eller n-gram);
- d er dokumentet.
Der findes mange varianter til beregning af tf og 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)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+df(t)1+Ndocuments)+1Denne 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".
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.
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)hvor wi er vægten af term i,
så ser den euklidiske norm således ud:
∥d∥2=w12+w22+w32+...+wN2og den normaliserede vektor ser således ud:
dnorm=(∥d∥2w1,∥d∥2w2,∥d∥2w3,...,∥d∥2wN)Her er, hvordan L2-normalisering fungerer for en 2-dimensionel vektor (et dokument med 2 termer):
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.
Tak for dine kommentarer!
Spørg AI
Spørg AI
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
Tf-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.
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)hvor:
- t er termen (et ord eller n-gram);
- d er dokumentet.
Der findes mange varianter til beregning af tf og 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)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+df(t)1+Ndocuments)+1Denne 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".
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.
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)hvor wi er vægten af term i,
så ser den euklidiske norm således ud:
∥d∥2=w12+w22+w32+...+wN2og den normaliserede vektor ser således ud:
dnorm=(∥d∥2w1,∥d∥2w2,∥d∥2w3,...,∥d∥2wN)Her er, hvordan L2-normalisering fungerer for en 2-dimensionel vektor (et dokument med 2 termer):
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.
Tak for dine kommentarer!