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

bookImplementando TF-IDF

Implementação Padrão

A implementação do modelo TF-IDF no sklearn é semelhante à do modelo bag of words. Para treinar este modelo em um corpus, utiliza-se a classe TfidfVectorizer, empregando o método já conhecido .fit_transform().

123456789101112131415
from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Create a default TF-IDF model vectorizer = TfidfVectorizer() # Generate a TF-IDF matrix tfidf_matrix = vectorizer.fit_transform(corpus) # Convert a sparse matrix into a DataFrame tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
copy

Além do uso de uma classe diferente, o restante da implementação é idêntico ao modelo bag of words. Por padrão, a matriz TF-IDF é calculada com normalização L2.

Personalizando o TF-IDF

Mais uma vez, assim como no CountVectorizer, é possível especificar os parâmetros min_df e max_df para incluir apenas os termos que ocorrem em pelo menos min_df documentos e em no máximo max_df documentos. Esses parâmetros podem ser definidos como números absolutos de documentos ou como uma proporção do número total de documentos.

Veja um exemplo em que incluímos apenas os termos que aparecem exatamente em 2 documentos, configurando tanto min_df quanto max_df para 2:

12345678910111213
from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Include terms which appear in exactly 2 documents vectorizer = TfidfVectorizer(min_df=2, max_df=2) tfidf_matrix = vectorizer.fit_transform(corpus) tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
copy

Para especificar os n-gramas a serem incluídos em nossa matriz, podemos utilizar o parâmetro ngram_range. Vamos incluir apenas bigramas na matriz resultante:

12345678910111213
from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Include only bigrams vectorizer = TfidfVectorizer(ngram_range=(2, 2)) tfidf_matrix = vectorizer.fit_transform(corpus) tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
copy

Estes são os parâmetros mais comumente utilizados. No entanto, caso deseje explorar outros parâmetros, consulte a documentação.

question mark

Qual classe do scikit-learn pode ser utilizada para obter os vetores TF-IDF a partir do corpus de texto?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 7

Pergunte à IA

expand

Pergunte à IA

ChatGPT

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

Suggested prompts:

Can you explain how the TF-IDF values are calculated in the matrix?

What is the difference between min_df and max_df parameters?

How does using ngram_range affect the resulting TF-IDF matrix?

Awesome!

Completion rate improved to 3.45

bookImplementando TF-IDF

Deslize para mostrar o menu

Implementação Padrão

A implementação do modelo TF-IDF no sklearn é semelhante à do modelo bag of words. Para treinar este modelo em um corpus, utiliza-se a classe TfidfVectorizer, empregando o método já conhecido .fit_transform().

123456789101112131415
from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Create a default TF-IDF model vectorizer = TfidfVectorizer() # Generate a TF-IDF matrix tfidf_matrix = vectorizer.fit_transform(corpus) # Convert a sparse matrix into a DataFrame tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
copy

Além do uso de uma classe diferente, o restante da implementação é idêntico ao modelo bag of words. Por padrão, a matriz TF-IDF é calculada com normalização L2.

Personalizando o TF-IDF

Mais uma vez, assim como no CountVectorizer, é possível especificar os parâmetros min_df e max_df para incluir apenas os termos que ocorrem em pelo menos min_df documentos e em no máximo max_df documentos. Esses parâmetros podem ser definidos como números absolutos de documentos ou como uma proporção do número total de documentos.

Veja um exemplo em que incluímos apenas os termos que aparecem exatamente em 2 documentos, configurando tanto min_df quanto max_df para 2:

12345678910111213
from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Include terms which appear in exactly 2 documents vectorizer = TfidfVectorizer(min_df=2, max_df=2) tfidf_matrix = vectorizer.fit_transform(corpus) tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
copy

Para especificar os n-gramas a serem incluídos em nossa matriz, podemos utilizar o parâmetro ngram_range. Vamos incluir apenas bigramas na matriz resultante:

12345678910111213
from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Include only bigrams vectorizer = TfidfVectorizer(ngram_range=(2, 2)) tfidf_matrix = vectorizer.fit_transform(corpus) tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
copy

Estes são os parâmetros mais comumente utilizados. No entanto, caso deseje explorar outros parâmetros, consulte a documentação.

question mark

Qual classe do scikit-learn pode ser utilizada para obter os vetores TF-IDF a partir do corpus de texto?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

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