Tf-Idf
Compreendendo o TF-IDF
Embora o modelo de bag of words seja simples e eficaz, ele tende a supervalorizar termos comuns, dificultando a identificação de palavras menos frequentes, porém mais informativas. Para resolver esse problema, o modelo TF-IDF é frequentemente utilizado.
TF-IDF (term frequency-inverse document frequency) é uma medida estatística que reflete a importância de uma palavra em um documento específico em relação a um corpus maior.
Ao contrário do BoW, que se baseia na contagem bruta de termos, o TF-IDF considera tanto a frequência do termo dentro de um documento quanto sua frequência inversa em todo o corpus. Isso reduz a influência de termos comuns e destaca aqueles mais raros e informativos.
Como o TF-IDF Funciona
O score TF-IDF para um termo em um documento é calculado como:
tf-idf(t,d)=tf(t,d)×idf(t)onde:
- t é o termo (uma palavra ou n-grama);
- d é o documento.
Existem várias variantes para calcular os valores de tf e idf. Veja uma opção comum para cada um:
Frequência do termo (TF)
Indica com que frequência um termo aparece em um documento, capturando sua importância relativa dentro desse documento. Semelhante ao modelo bag of words, geralmente é usada uma contagem simples:
tf(t,d)=count(t,d)Frequência inversa de documentos (IDF)
Mede quão raro é um termo em todo o corpus. Pode ser calculado como o logaritmo natural da razão entre o número total de documentos e o número de documentos que contêm o termo:
idf(t)=log(1+df(t)1+Ndocuments)+1Esta fórmula utiliza suavização (adicionando 1) para evitar divisão por zero e garante que até mesmo termos comuns recebam um score IDF diferente de zero. Na prática, o IDF reduz o peso de termos frequentes e enfatiza termos mais informativos e raros.
Sem o componente IDF, o TF-IDF se reduziria a uma simples contagem de termos — essencialmente retornando ao modelo bag of words.
Calculando o TF-IDF
Veja um exemplo simples:
Neste caso, temos apenas dois documentos e estamos utilizando apenas unigramas (palavras individuais), portanto, os cálculos são diretos. Começamos calculando as frequências de termos para cada palavra em ambos os documentos, seguidos pelos valores de IDF para os termos "a" e "is".
Como há apenas dois documentos em nosso corpus, todo termo que aparece em ambos os documentos terá um valor de IDF igual a 1, enquanto outros termos terão um valor de IDF igual a ~1.406465.
Por fim, podemos calcular os valores de TF-IDF para cada termo em cada documento multiplicando TF por IDF, resultando na seguinte matriz:
Normalização L2
Os vetores TF-IDF resultantes podem variar significativamente em magnitude, especialmente em grandes corpora, devido às diferenças no comprimento dos documentos. Por isso, a normalização L2 é comumente aplicada — para ajustar todos os vetores a um comprimento uniforme, permitindo comparações justas e imparciais entre documentos de diferentes tamanhos.
A normalização L2, também conhecida como normalização Euclidiana, é um processo aplicado a vetores individuais que ajusta seus valores para garantir que o comprimento do vetor seja 1.
A normalização L2 é realizada dividindo cada termo do vetor pela norma Euclidiana do vetor.
Se o vetor do documento for assim:
d=(w1,w2,w3,...,wN)onde wi é o peso do termo i,
então a norma Euclidiana é assim:
∥d∥2=w12+w22+w32+...+wN2e o vetor normalizado é assim:
dnorm=(∥d∥2w1,∥d∥2w2,∥d∥2w3,...,∥d∥2wN)Veja como a normalização L2 funciona para um vetor bidimensional (um documento com 2 termos):
Não se preocupe se as fórmulas parecerem complexas. Tudo o que estamos fazendo é dividir cada valor de TF-IDF em um documento pelo comprimento (ou magnitude) do vetor TF-IDF desse documento. Isso ajusta o vetor para que seu comprimento se torne 1, garantindo comparações consistentes entre vetores.
Agora vamos aplicar a normalização L2 à nossa matriz TF-IDF, que calculamos acima:
A matriz resultante é exatamente a que tivemos como exemplo em um dos capítulos anteriores.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 3.45
Tf-Idf
Deslize para mostrar o menu
Compreendendo o TF-IDF
Embora o modelo de bag of words seja simples e eficaz, ele tende a supervalorizar termos comuns, dificultando a identificação de palavras menos frequentes, porém mais informativas. Para resolver esse problema, o modelo TF-IDF é frequentemente utilizado.
TF-IDF (term frequency-inverse document frequency) é uma medida estatística que reflete a importância de uma palavra em um documento específico em relação a um corpus maior.
Ao contrário do BoW, que se baseia na contagem bruta de termos, o TF-IDF considera tanto a frequência do termo dentro de um documento quanto sua frequência inversa em todo o corpus. Isso reduz a influência de termos comuns e destaca aqueles mais raros e informativos.
Como o TF-IDF Funciona
O score TF-IDF para um termo em um documento é calculado como:
tf-idf(t,d)=tf(t,d)×idf(t)onde:
- t é o termo (uma palavra ou n-grama);
- d é o documento.
Existem várias variantes para calcular os valores de tf e idf. Veja uma opção comum para cada um:
Frequência do termo (TF)
Indica com que frequência um termo aparece em um documento, capturando sua importância relativa dentro desse documento. Semelhante ao modelo bag of words, geralmente é usada uma contagem simples:
tf(t,d)=count(t,d)Frequência inversa de documentos (IDF)
Mede quão raro é um termo em todo o corpus. Pode ser calculado como o logaritmo natural da razão entre o número total de documentos e o número de documentos que contêm o termo:
idf(t)=log(1+df(t)1+Ndocuments)+1Esta fórmula utiliza suavização (adicionando 1) para evitar divisão por zero e garante que até mesmo termos comuns recebam um score IDF diferente de zero. Na prática, o IDF reduz o peso de termos frequentes e enfatiza termos mais informativos e raros.
Sem o componente IDF, o TF-IDF se reduziria a uma simples contagem de termos — essencialmente retornando ao modelo bag of words.
Calculando o TF-IDF
Veja um exemplo simples:
Neste caso, temos apenas dois documentos e estamos utilizando apenas unigramas (palavras individuais), portanto, os cálculos são diretos. Começamos calculando as frequências de termos para cada palavra em ambos os documentos, seguidos pelos valores de IDF para os termos "a" e "is".
Como há apenas dois documentos em nosso corpus, todo termo que aparece em ambos os documentos terá um valor de IDF igual a 1, enquanto outros termos terão um valor de IDF igual a ~1.406465.
Por fim, podemos calcular os valores de TF-IDF para cada termo em cada documento multiplicando TF por IDF, resultando na seguinte matriz:
Normalização L2
Os vetores TF-IDF resultantes podem variar significativamente em magnitude, especialmente em grandes corpora, devido às diferenças no comprimento dos documentos. Por isso, a normalização L2 é comumente aplicada — para ajustar todos os vetores a um comprimento uniforme, permitindo comparações justas e imparciais entre documentos de diferentes tamanhos.
A normalização L2, também conhecida como normalização Euclidiana, é um processo aplicado a vetores individuais que ajusta seus valores para garantir que o comprimento do vetor seja 1.
A normalização L2 é realizada dividindo cada termo do vetor pela norma Euclidiana do vetor.
Se o vetor do documento for assim:
d=(w1,w2,w3,...,wN)onde wi é o peso do termo i,
então a norma Euclidiana é assim:
∥d∥2=w12+w22+w32+...+wN2e o vetor normalizado é assim:
dnorm=(∥d∥2w1,∥d∥2w2,∥d∥2w3,...,∥d∥2wN)Veja como a normalização L2 funciona para um vetor bidimensional (um documento com 2 termos):
Não se preocupe se as fórmulas parecerem complexas. Tudo o que estamos fazendo é dividir cada valor de TF-IDF em um documento pelo comprimento (ou magnitude) do vetor TF-IDF desse documento. Isso ajusta o vetor para que seu comprimento se torne 1, garantindo comparações consistentes entre vetores.
Agora vamos aplicar a normalização L2 à nossa matriz TF-IDF, que calculamos acima:
A matriz resultante é exatamente a que tivemos como exemplo em um dos capítulos anteriores.
Obrigado pelo seu feedback!