Tf-Idf
Comprendere TF-IDF
Sebbene il modello bag of words sia semplice ed efficace, tende a sovrastimare i termini comuni, rendendo più difficile identificare parole meno frequenti ma più informative. Per ovviare a questo problema, si utilizza spesso il modello TF-IDF.
TF-IDF (term frequency-inverse document frequency) è una misura statistica che riflette l'importanza di una parola in un documento specifico rispetto a un corpus più ampio.
A differenza di BoW, che si basa sul conteggio grezzo dei termini, TF-IDF tiene conto sia della frequenza di un termine all'interno di un documento sia della sua frequenza inversa nell'intero corpus. Questo riduce l'influenza dei termini comuni e mette in evidenza quelli più rari e informativi.
Come funziona TF-IDF
Il punteggio TF-IDF per un termine in un documento viene calcolato come:
tf-idf(t,d)=tf(t,d)×idf(t)dove:
- t è il termine (una parola o un n-gramma);
- d è il documento.
Esistono molte varianti per il calcolo dei valori di tf e idf. Vediamo un'opzione comune per ciascuno:
Frequenza del termine (TF)
Indica quanto spesso un termine appare in un documento, rappresentando la sua importanza relativa all'interno di quel documento. Simile al modello bag of words, spesso si utilizza un semplice conteggio:
tf(t,d)=count(t,d)Frequenza inversa del documento (IDF)
Misura quanto è raro un termine nell'intero corpus. Può essere calcolato come il logaritmo naturale del rapporto tra il numero totale di documenti e il numero di documenti che contengono il termine:
idf(t)=log(1+df(t)1+Ndocuments)+1Questa formula utilizza lo smoothing (aggiungendo 1) per evitare la divisione per zero e garantisce che anche i termini comuni ricevano un punteggio IDF diverso da zero. In pratica, l'IDF riduce il peso dei termini frequenti e valorizza quelli più informativi e rari.
Senza la componente IDF, TF-IDF si ridurrebbe a un semplice conteggio dei termini — tornando essenzialmente al modello bag of words.
Calcolo del TF-IDF
Esempio pratico:
In questo caso, abbiamo solo due documenti e utilizziamo solo unigrammi (singole parole), quindi i calcoli sono semplici. Iniziamo calcolando le frequenze dei termini per ogni parola in entrambi i documenti, seguite dai valori IDF per i termini "a" e "is".
Poiché ci sono solo due documenti nel nostro corpus, ogni termine che appare in entrambi i documenti avrà un valore IDF pari a 1, mentre gli altri termini avranno un valore IDF pari a ~1.406465.
Infine, possiamo calcolare i valori TF-IDF per ogni termine in ciascun documento moltiplicando TF per IDF, ottenendo la seguente matrice:
Normalizzazione L2
I vettori TF-IDF risultanti possono variare significativamente in magnitudo, specialmente in grandi corpora, a causa delle differenze nella lunghezza dei documenti. Per questo motivo viene comunemente applicata la normalizzazione L2 — per scalare tutti i vettori a una lunghezza uniforme, consentendo confronti equi e imparziali tra documenti di lunghezze diverse.
La normalizzazione L2, nota anche come normalizzazione euclidea, è un processo applicato ai singoli vettori che ne regola i valori per garantire che la lunghezza del vettore sia pari a 1.
La normalizzazione L2 viene eseguita dividendo ciascun termine del vettore per la norma euclidea del vettore.
Se il vettore documento è così:
d=(w1,w2,w3,...,wN)dove wi è il peso del termine i,
allora la norma euclidea è così:
∥d∥2=w12+w22+w32+...+wN2e il vettore normalizzato è così:
dnorm=(∥d∥2w1,∥d∥2w2,∥d∥2w3,...,∥d∥2wN)Ecco come funziona la normalizzazione L2 per un vettore bidimensionale (un documento con 2 termini):
Non preoccuparti se le formule sembrano complesse. Tutto ciò che facciamo è dividere ogni valore TF-IDF in un documento per la lunghezza (o magnitudine) del vettore TF-IDF di quel documento. Questo ridimensiona il vettore in modo che la sua lunghezza diventi 1, garantendo confronti coerenti tra vettori.
Applichiamo ora la normalizzazione L2 alla nostra matrice TF-IDF, che abbiamo calcolato sopra:
La matrice risultante è esattamente quella che abbiamo visto come esempio in uno dei capitoli precedenti.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 3.45
Tf-Idf
Scorri per mostrare il menu
Comprendere TF-IDF
Sebbene il modello bag of words sia semplice ed efficace, tende a sovrastimare i termini comuni, rendendo più difficile identificare parole meno frequenti ma più informative. Per ovviare a questo problema, si utilizza spesso il modello TF-IDF.
TF-IDF (term frequency-inverse document frequency) è una misura statistica che riflette l'importanza di una parola in un documento specifico rispetto a un corpus più ampio.
A differenza di BoW, che si basa sul conteggio grezzo dei termini, TF-IDF tiene conto sia della frequenza di un termine all'interno di un documento sia della sua frequenza inversa nell'intero corpus. Questo riduce l'influenza dei termini comuni e mette in evidenza quelli più rari e informativi.
Come funziona TF-IDF
Il punteggio TF-IDF per un termine in un documento viene calcolato come:
tf-idf(t,d)=tf(t,d)×idf(t)dove:
- t è il termine (una parola o un n-gramma);
- d è il documento.
Esistono molte varianti per il calcolo dei valori di tf e idf. Vediamo un'opzione comune per ciascuno:
Frequenza del termine (TF)
Indica quanto spesso un termine appare in un documento, rappresentando la sua importanza relativa all'interno di quel documento. Simile al modello bag of words, spesso si utilizza un semplice conteggio:
tf(t,d)=count(t,d)Frequenza inversa del documento (IDF)
Misura quanto è raro un termine nell'intero corpus. Può essere calcolato come il logaritmo naturale del rapporto tra il numero totale di documenti e il numero di documenti che contengono il termine:
idf(t)=log(1+df(t)1+Ndocuments)+1Questa formula utilizza lo smoothing (aggiungendo 1) per evitare la divisione per zero e garantisce che anche i termini comuni ricevano un punteggio IDF diverso da zero. In pratica, l'IDF riduce il peso dei termini frequenti e valorizza quelli più informativi e rari.
Senza la componente IDF, TF-IDF si ridurrebbe a un semplice conteggio dei termini — tornando essenzialmente al modello bag of words.
Calcolo del TF-IDF
Esempio pratico:
In questo caso, abbiamo solo due documenti e utilizziamo solo unigrammi (singole parole), quindi i calcoli sono semplici. Iniziamo calcolando le frequenze dei termini per ogni parola in entrambi i documenti, seguite dai valori IDF per i termini "a" e "is".
Poiché ci sono solo due documenti nel nostro corpus, ogni termine che appare in entrambi i documenti avrà un valore IDF pari a 1, mentre gli altri termini avranno un valore IDF pari a ~1.406465.
Infine, possiamo calcolare i valori TF-IDF per ogni termine in ciascun documento moltiplicando TF per IDF, ottenendo la seguente matrice:
Normalizzazione L2
I vettori TF-IDF risultanti possono variare significativamente in magnitudo, specialmente in grandi corpora, a causa delle differenze nella lunghezza dei documenti. Per questo motivo viene comunemente applicata la normalizzazione L2 — per scalare tutti i vettori a una lunghezza uniforme, consentendo confronti equi e imparziali tra documenti di lunghezze diverse.
La normalizzazione L2, nota anche come normalizzazione euclidea, è un processo applicato ai singoli vettori che ne regola i valori per garantire che la lunghezza del vettore sia pari a 1.
La normalizzazione L2 viene eseguita dividendo ciascun termine del vettore per la norma euclidea del vettore.
Se il vettore documento è così:
d=(w1,w2,w3,...,wN)dove wi è il peso del termine i,
allora la norma euclidea è così:
∥d∥2=w12+w22+w32+...+wN2e il vettore normalizzato è così:
dnorm=(∥d∥2w1,∥d∥2w2,∥d∥2w3,...,∥d∥2wN)Ecco come funziona la normalizzazione L2 per un vettore bidimensionale (un documento con 2 termini):
Non preoccuparti se le formule sembrano complesse. Tutto ciò che facciamo è dividere ogni valore TF-IDF in un documento per la lunghezza (o magnitudine) del vettore TF-IDF di quel documento. Questo ridimensiona il vettore in modo che la sua lunghezza diventi 1, garantendo confronti coerenti tra vettori.
Applichiamo ora la normalizzazione L2 alla nostra matrice TF-IDF, che abbiamo calcolato sopra:
La matrice risultante è esattamente quella che abbiamo visto come esempio in uno dei capitoli precedenti.
Grazie per i tuoi commenti!