Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Implementando TF-IDF | Seção
/
Processamento de Linguagem Natural

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

Exceto pelo 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, de forma semelhante ao CountVectorizer, podemos especificar os parâmetros min_df e max_df para incluir apenas os termos que ocorrem em pelo menos min_df documentos e no máximo max_df documentos. Estes podem ser definidos como números absolutos de documentos ou como uma proporção do número total de documentos.

Aqui está um exemplo em que incluímos apenas os termos que aparecem exatamente em 2 documentos, definindo tanto min_df quanto max_df como 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 usar 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 utilizados; no entanto, caso deseje explorar outros, 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 1. Capítulo 24

Pergunte à IA

expand

Pergunte à IA

ChatGPT

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

Seção 1. Capítulo 24
some-alt