Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Tf-idf | Grundläggande Textmodeller
Introduktion till NLP

bookTf-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.

Note
Definition

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)\def\tfidf{\operatorname{tf-idf}} \def\tf{\operatorname{tf}} \def\idf{\operatorname{idf}} \tfidf(t, d) = \tf(t, d) \times \idf(t)

Där:

  • tt är termen (ett ord eller n-gram);
  • dd är dokumentet.

Det finns många varianter för att beräkna värden för tf\operatorname{tf} och idf\operatorname{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)\def\tf{\operatorname{tf}} \def\count{\operatorname{count}} \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+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

Denna 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".

Note
Notera

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.

Note
Läs mer

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 = (w_1, w_2, w_3, ..., w_N)

där wiw_i är vikten för term ii,

så ser den euklidiska normen ut så här:

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

och den normaliserade vektorn ser ut så här:

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

Så här fungerar L2-normalisering för en tvådimensionell vektor (ett dokument med två termer):

Note
Notering

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.

question mark

Vad är den viktigaste fördelen med TF-IDF-modellen jämfört med BoW-modellen?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 6

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

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

bookTf-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.

Note
Definition

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)\def\tfidf{\operatorname{tf-idf}} \def\tf{\operatorname{tf}} \def\idf{\operatorname{idf}} \tfidf(t, d) = \tf(t, d) \times \idf(t)

Där:

  • tt är termen (ett ord eller n-gram);
  • dd är dokumentet.

Det finns många varianter för att beräkna värden för tf\operatorname{tf} och idf\operatorname{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)\def\tf{\operatorname{tf}} \def\count{\operatorname{count}} \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+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

Denna 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".

Note
Notera

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.

Note
Läs mer

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 = (w_1, w_2, w_3, ..., w_N)

där wiw_i är vikten för term ii,

så ser den euklidiska normen ut så här:

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

och den normaliserade vektorn ser ut så här:

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

Så här fungerar L2-normalisering för en tvådimensionell vektor (ett dokument med två termer):

Note
Notering

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.

question mark

Vad är den viktigaste fördelen med TF-IDF-modellen jämfört med BoW-modellen?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 6
some-alt