Tf-idf
Förståelse av TF-IDF
Även om bag of words-modellen är enkel och effektiv tenderar den att överskatta vanliga termer, vilket gör det svårare att identifiera mindre frekventa men mer informativa ord. För att hantera detta används ofta TF-IDF-modellen istället.
TF-IDF (term frequency-inverse document frequency) är ett statistiskt mått som återspeglar hur viktig ett ord är för ett specifikt dokument i förhållande till en större korpus.
Till skillnad från BoW, som bygger på råa termfrekvenser, tar TF-IDF hänsyn till både en terms frekvens inom ett dokument och dess omvända frekvens över hela korpusen. Detta minskar påverkan av vanliga termer och lyfter fram mer sällsynta och informativa ord.
Hur TF-IDF fungerar
TF-IDF-poängen för ett ord i ett dokument beräknas som:
tf-idf(t,d)=tf(t,d)×idf(t)Där:
- t är termen (ett ord eller n-gram);
- d är dokumentet.
Det finns många varianter för att beräkna värden för tf och idf. Här är ett vanligt alternativ för vardera:
Termfrekvens (TF)
Anger hur ofta en term förekommer i ett dokument och fångar dess relativa betydelse inom det dokumentet. Liknande bag of words-modellen används ofta en enkel räkning:
tf(t,d)=count(t,d)Omvänd dokumentfrekvens (IDF)
Mäter hur ovanlig en term är i hela korpuset. Det kan beräknas som den naturliga logaritmen av kvoten mellan det totala antalet dokument och antalet dokument som innehåller termen:
idf(t)=log(1+df(t)1+Ndocuments)+1Denna formel använder utjämning (adderar 1) för att undvika division med noll och säkerställer att även vanliga termer får ett IDF-värde större än noll. I praktiken nedtonar IDF frekventa termer och lyfter fram mer informativa, ovanliga termer.
Utan IDF-komponenten skulle TF-IDF reduceras till en enkel termräkning — vilket i princip motsvarar en bag of words-modell.
Beräkning av TF-IDF
Ett enkelt exempel:
I det här fallet har vi bara två dokument och använder endast unigram (enskilda ord), så beräkningarna är enkla. Vi börjar med att beräkna termfrekvenserna för varje ord i båda dokumenten, följt av IDF-värdena för termerna "a" och "is".
Eftersom det bara finns två dokument i vårt korpus kommer varje term som förekommer i båda dokumenten att ha ett IDF-värde på 1, medan andra termer kommer att ha ett IDF-värde på ~1.406465.
Slutligen kan vi beräkna TF-IDF-värdena för varje term i varje dokument genom att multiplicera TF med IDF, vilket resulterar i följande matris:
L2-normalisering
De resulterande TF-IDF-vektorerna kan variera avsevärt i storlek, särskilt i stora korpusar, på grund av skillnader i dokumentlängd. Därför tillämpas ofta L2-normalisering — för att skala alla vektorer till en enhetlig längd, vilket möjliggör rättvisa och opartiska jämförelser av dokument med olika längd.
L2-normalisering, även kallad euklidisk normalisering, är en process som tillämpas på individuella vektorer och justerar deras värden så att vektorns längd blir 1.
L2-normalisering utförs genom att varje term i vektorn divideras med vektorns euklidiska norm.
Om dokumentvektorn ser ut så här:
d=(w1,w2,w3,...,wN)där wi är vikten för term i,
så ser den euklidiska normen ut så här:
∥d∥2=w12+w22+w32+...+wN2och den normaliserade vektorn ser ut så här:
dnorm=(∥d∥2w1,∥d∥2w2,∥d∥2w3,...,∥d∥2wN)Så här fungerar L2-normalisering för en tvådimensionell vektor (ett dokument med två termer):
Oroa dig inte om formlerna verkar komplicerade. Det vi gör är att dividera varje TF-IDF-värde i ett dokument med längden (eller magnituden) av dokumentets TF-IDF-vektor. Detta skalar vektorn så att dess längd blir 1, vilket säkerställer konsekventa jämförelser av vektorer.
Vi ska nu tillämpa L2-normalisering på vår TF-IDF-matris, som vi beräknade ovan:
Den resulterande matrisen är exakt samma som vi hade som exempel i ett av de tidigare kapitlen.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Can you explain why L2 normalization is important for comparing documents?
How does TF-IDF differ from the bag of words model in practice?
Can you walk me through a step-by-step example of calculating TF-IDF for a small dataset?
Awesome!
Completion rate improved to 3.45
Tf-idf
Svep för att visa menyn
Förståelse av TF-IDF
Även om bag of words-modellen är enkel och effektiv tenderar den att överskatta vanliga termer, vilket gör det svårare att identifiera mindre frekventa men mer informativa ord. För att hantera detta används ofta TF-IDF-modellen istället.
TF-IDF (term frequency-inverse document frequency) är ett statistiskt mått som återspeglar hur viktig ett ord är för ett specifikt dokument i förhållande till en större korpus.
Till skillnad från BoW, som bygger på råa termfrekvenser, tar TF-IDF hänsyn till både en terms frekvens inom ett dokument och dess omvända frekvens över hela korpusen. Detta minskar påverkan av vanliga termer och lyfter fram mer sällsynta och informativa ord.
Hur TF-IDF fungerar
TF-IDF-poängen för ett ord i ett dokument beräknas som:
tf-idf(t,d)=tf(t,d)×idf(t)Där:
- t är termen (ett ord eller n-gram);
- d är dokumentet.
Det finns många varianter för att beräkna värden för tf och idf. Här är ett vanligt alternativ för vardera:
Termfrekvens (TF)
Anger hur ofta en term förekommer i ett dokument och fångar dess relativa betydelse inom det dokumentet. Liknande bag of words-modellen används ofta en enkel räkning:
tf(t,d)=count(t,d)Omvänd dokumentfrekvens (IDF)
Mäter hur ovanlig en term är i hela korpuset. Det kan beräknas som den naturliga logaritmen av kvoten mellan det totala antalet dokument och antalet dokument som innehåller termen:
idf(t)=log(1+df(t)1+Ndocuments)+1Denna formel använder utjämning (adderar 1) för att undvika division med noll och säkerställer att även vanliga termer får ett IDF-värde större än noll. I praktiken nedtonar IDF frekventa termer och lyfter fram mer informativa, ovanliga termer.
Utan IDF-komponenten skulle TF-IDF reduceras till en enkel termräkning — vilket i princip motsvarar en bag of words-modell.
Beräkning av TF-IDF
Ett enkelt exempel:
I det här fallet har vi bara två dokument och använder endast unigram (enskilda ord), så beräkningarna är enkla. Vi börjar med att beräkna termfrekvenserna för varje ord i båda dokumenten, följt av IDF-värdena för termerna "a" och "is".
Eftersom det bara finns två dokument i vårt korpus kommer varje term som förekommer i båda dokumenten att ha ett IDF-värde på 1, medan andra termer kommer att ha ett IDF-värde på ~1.406465.
Slutligen kan vi beräkna TF-IDF-värdena för varje term i varje dokument genom att multiplicera TF med IDF, vilket resulterar i följande matris:
L2-normalisering
De resulterande TF-IDF-vektorerna kan variera avsevärt i storlek, särskilt i stora korpusar, på grund av skillnader i dokumentlängd. Därför tillämpas ofta L2-normalisering — för att skala alla vektorer till en enhetlig längd, vilket möjliggör rättvisa och opartiska jämförelser av dokument med olika längd.
L2-normalisering, även kallad euklidisk normalisering, är en process som tillämpas på individuella vektorer och justerar deras värden så att vektorns längd blir 1.
L2-normalisering utförs genom att varje term i vektorn divideras med vektorns euklidiska norm.
Om dokumentvektorn ser ut så här:
d=(w1,w2,w3,...,wN)där wi är vikten för term i,
så ser den euklidiska normen ut så här:
∥d∥2=w12+w22+w32+...+wN2och den normaliserade vektorn ser ut så här:
dnorm=(∥d∥2w1,∥d∥2w2,∥d∥2w3,...,∥d∥2wN)Så här fungerar L2-normalisering för en tvådimensionell vektor (ett dokument med två termer):
Oroa dig inte om formlerna verkar komplicerade. Det vi gör är att dividera varje TF-IDF-värde i ett dokument med längden (eller magnituden) av dokumentets TF-IDF-vektor. Detta skalar vektorn så att dess längd blir 1, vilket säkerställer konsekventa jämförelser av vektorer.
Vi ska nu tillämpa L2-normalisering på vår TF-IDF-matris, som vi beräknade ovan:
Den resulterande matrisen är exakt samma som vi hade som exempel i ett av de tidigare kapitlen.
Tack för dina kommentarer!