Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Tf-Idf | Modelos Básicos de Texto
Introdução ao PLN

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

Note
Definição

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

onde:

  • tt é o termo (uma palavra ou n-grama);
  • dd é o documento.

Existem várias variantes para calcular os valores de tf\operatorname{tf} e idf\operatorname{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)\def\tf{\operatorname{tf}} \def\count{\operatorname{count}} \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+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

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

Note
Nota

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.

Note
Estude Mais

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

onde wiw_i é o peso do termo ii,

então a norma Euclidiana é assim:

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

e o vetor normalizado é assim:

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

Veja como a normalização L2 funciona para um vetor bidimensional (um documento com 2 termos):

Note
Nota

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.

question mark

Qual é a principal vantagem do modelo TF-IDF em comparação ao modelo BoW?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 6

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 3.45

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

Note
Definição

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

onde:

  • tt é o termo (uma palavra ou n-grama);
  • dd é o documento.

Existem várias variantes para calcular os valores de tf\operatorname{tf} e idf\operatorname{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)\def\tf{\operatorname{tf}} \def\count{\operatorname{count}} \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+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

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

Note
Nota

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.

Note
Estude Mais

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

onde wiw_i é o peso do termo ii,

então a norma Euclidiana é assim:

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

e o vetor normalizado é assim:

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

Veja como a normalização L2 funciona para um vetor bidimensional (um documento com 2 termos):

Note
Nota

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.

question mark

Qual é a principal vantagem do modelo TF-IDF em comparação ao modelo BoW?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 6
some-alt