Tf-idf
Inzicht in TF-IDF
Hoewel het bag of words-model eenvoudig en effectief is, heeft het de neiging om veelvoorkomende termen te overwaarderen, waardoor het moeilijker wordt om minder frequente maar meer informatieve woorden te identificeren. Om dit te verhelpen, wordt vaak het TF-IDF-model gebruikt.
TF-IDF (term frequency-inverse document frequency) is een statistische maatstaf die aangeeft hoe belangrijk een woord is voor een specifiek document ten opzichte van een grotere corpus.
In tegenstelling tot BoW, dat vertrouwt op ruwe termfrequenties, houdt TF-IDF rekening met zowel de frequentie van een term binnen een document als de inverse frequentie over de gehele corpus. Dit vermindert de invloed van veelvoorkomende termen en benadrukt zeldzamere, meer informatieve termen.
Hoe TF-IDF Werkt
De TF-IDF-score voor een term in een document wordt als volgt berekend:
tf-idf(t,d)=tf(t,d)×idf(t)waarbij:
- t de term is (een woord of n-gram);
- d het document is.
Er bestaan veel varianten voor het berekenen van de waarden van tf en idf. Hier volgt een veelgebruikte optie voor elk:
Termfrequentie (TF)
Geeft aan hoe vaak een term voorkomt in een document en weerspiegelt het relatieve belang binnen dat document. Vergelijkbaar met het bag of words-model wordt vaak een eenvoudige telling gebruikt:
tf(t,d)=count(t,d)Omgekeerde documentfrequentie (IDF)
Meet hoe zeldzaam een term is in de gehele corpus. Dit kan worden berekend als de natuurlijke logaritme van de verhouding tussen het totale aantal documenten en het aantal documenten waarin de term voorkomt:
idf(t)=log(1+df(t)1+Ndocuments)+1Deze formule gebruikt smoothing (optellen van 1) om deling door nul te voorkomen en zorgt ervoor dat zelfs veelvoorkomende termen een niet-nul IDF-score krijgen. In feite verlaagt IDF het gewicht van frequente termen en benadrukt het meer informatieve, zeldzame termen.
Zonder de IDF-component zou TF-IDF neerkomen op een eenvoudige termtelling — feitelijk een bag of words-model.
TF-IDF Berekenen
Hier volgt een eenvoudig voorbeeld:
In dit geval hebben we slechts twee documenten en gebruiken we alleen unigrammen (individuele woorden), waardoor de berekeningen eenvoudig zijn. We beginnen met het berekenen van de termfrequenties voor elk woord in beide documenten, gevolgd door de IDF-waarden voor de termen "a" en "is".
Aangezien er slechts twee documenten in onze corpus zijn, krijgt elke term die in beide documenten voorkomt een IDF-waarde van 1, terwijl andere termen een IDF-waarde van ~1.406465 krijgen.
Ten slotte kunnen we de TF-IDF-waarden voor elke term in elk document berekenen door TF met IDF te vermenigvuldigen, wat resulteert in de volgende matrix:
L2-normalisatie
De resulterende TF-IDF-vectoren kunnen aanzienlijk verschillen in grootte, vooral in grote corpora, door verschillen in documentlengte. Daarom wordt L2-normalisatie vaak toegepast — om alle vectoren tot een gelijke lengte te schalen, waardoor eerlijke en onbevooroordeelde vergelijkingen van documenten met verschillende lengtes mogelijk zijn.
L2-normalisatie, ook bekend als Euclidische normalisatie, is een proces dat wordt toegepast op individuele vectoren waarbij hun waarden worden aangepast zodat de lengte van de vector gelijk is aan 1.
De L2-normalisatie wordt uitgevoerd door elk element in de vector te delen door de Euclidische norm van de vector.
Als de documentvector er als volgt uitziet:
d=(w1,w2,w3,...,wN)waarbij wi het gewicht is van term i,
ziet de Euclidische norm er als volgt uit:
∥d∥2=w12+w22+w32+...+wN2en de genormaliseerde vector ziet er als volgt uit:
dnorm=(∥d∥2w1,∥d∥2w2,∥d∥2w3,...,∥d∥2wN)Hier volgt hoe L2-normalisatie werkt voor een 2-dimensionale vector (een document met 2 termen):
Maak je geen zorgen als de formules complex lijken. We delen simpelweg elke TF-IDF-waarde in een document door de lengte (of grootte) van de TF-IDF-vector van dat document. Hierdoor wordt de vector geschaald zodat de lengte 1 wordt, wat zorgt voor consistente vergelijkingen van vectoren.
Laten we nu L2-normalisatie toepassen op onze TF-IDF-matrix, die we hierboven hebben berekend:
De resulterende matrix is exact hetzelfde als het voorbeeld uit een van de vorige hoofdstukken.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 3.45
Tf-idf
Veeg om het menu te tonen
Inzicht in TF-IDF
Hoewel het bag of words-model eenvoudig en effectief is, heeft het de neiging om veelvoorkomende termen te overwaarderen, waardoor het moeilijker wordt om minder frequente maar meer informatieve woorden te identificeren. Om dit te verhelpen, wordt vaak het TF-IDF-model gebruikt.
TF-IDF (term frequency-inverse document frequency) is een statistische maatstaf die aangeeft hoe belangrijk een woord is voor een specifiek document ten opzichte van een grotere corpus.
In tegenstelling tot BoW, dat vertrouwt op ruwe termfrequenties, houdt TF-IDF rekening met zowel de frequentie van een term binnen een document als de inverse frequentie over de gehele corpus. Dit vermindert de invloed van veelvoorkomende termen en benadrukt zeldzamere, meer informatieve termen.
Hoe TF-IDF Werkt
De TF-IDF-score voor een term in een document wordt als volgt berekend:
tf-idf(t,d)=tf(t,d)×idf(t)waarbij:
- t de term is (een woord of n-gram);
- d het document is.
Er bestaan veel varianten voor het berekenen van de waarden van tf en idf. Hier volgt een veelgebruikte optie voor elk:
Termfrequentie (TF)
Geeft aan hoe vaak een term voorkomt in een document en weerspiegelt het relatieve belang binnen dat document. Vergelijkbaar met het bag of words-model wordt vaak een eenvoudige telling gebruikt:
tf(t,d)=count(t,d)Omgekeerde documentfrequentie (IDF)
Meet hoe zeldzaam een term is in de gehele corpus. Dit kan worden berekend als de natuurlijke logaritme van de verhouding tussen het totale aantal documenten en het aantal documenten waarin de term voorkomt:
idf(t)=log(1+df(t)1+Ndocuments)+1Deze formule gebruikt smoothing (optellen van 1) om deling door nul te voorkomen en zorgt ervoor dat zelfs veelvoorkomende termen een niet-nul IDF-score krijgen. In feite verlaagt IDF het gewicht van frequente termen en benadrukt het meer informatieve, zeldzame termen.
Zonder de IDF-component zou TF-IDF neerkomen op een eenvoudige termtelling — feitelijk een bag of words-model.
TF-IDF Berekenen
Hier volgt een eenvoudig voorbeeld:
In dit geval hebben we slechts twee documenten en gebruiken we alleen unigrammen (individuele woorden), waardoor de berekeningen eenvoudig zijn. We beginnen met het berekenen van de termfrequenties voor elk woord in beide documenten, gevolgd door de IDF-waarden voor de termen "a" en "is".
Aangezien er slechts twee documenten in onze corpus zijn, krijgt elke term die in beide documenten voorkomt een IDF-waarde van 1, terwijl andere termen een IDF-waarde van ~1.406465 krijgen.
Ten slotte kunnen we de TF-IDF-waarden voor elke term in elk document berekenen door TF met IDF te vermenigvuldigen, wat resulteert in de volgende matrix:
L2-normalisatie
De resulterende TF-IDF-vectoren kunnen aanzienlijk verschillen in grootte, vooral in grote corpora, door verschillen in documentlengte. Daarom wordt L2-normalisatie vaak toegepast — om alle vectoren tot een gelijke lengte te schalen, waardoor eerlijke en onbevooroordeelde vergelijkingen van documenten met verschillende lengtes mogelijk zijn.
L2-normalisatie, ook bekend als Euclidische normalisatie, is een proces dat wordt toegepast op individuele vectoren waarbij hun waarden worden aangepast zodat de lengte van de vector gelijk is aan 1.
De L2-normalisatie wordt uitgevoerd door elk element in de vector te delen door de Euclidische norm van de vector.
Als de documentvector er als volgt uitziet:
d=(w1,w2,w3,...,wN)waarbij wi het gewicht is van term i,
ziet de Euclidische norm er als volgt uit:
∥d∥2=w12+w22+w32+...+wN2en de genormaliseerde vector ziet er als volgt uit:
dnorm=(∥d∥2w1,∥d∥2w2,∥d∥2w3,...,∥d∥2wN)Hier volgt hoe L2-normalisatie werkt voor een 2-dimensionale vector (een document met 2 termen):
Maak je geen zorgen als de formules complex lijken. We delen simpelweg elke TF-IDF-waarde in een document door de lengte (of grootte) van de TF-IDF-vector van dat document. Hierdoor wordt de vector geschaald zodat de lengte 1 wordt, wat zorgt voor consistente vergelijkingen van vectoren.
Laten we nu L2-normalisatie toepassen op onze TF-IDF-matrix, die we hierboven hebben berekend:
De resulterende matrix is exact hetzelfde als het voorbeeld uit een van de vorige hoofdstukken.
Bedankt voor je feedback!