Implementando 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().
123456789101112131415from 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)
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:
12345678910111213from 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)
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:
12345678910111213from 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)
Estes são os parâmetros mais comumente utilizados. No entanto, caso deseje explorar outros parâmetros, consulte a documentação.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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
Implementando 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().
123456789101112131415from 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)
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:
12345678910111213from 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)
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:
12345678910111213from 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)
Estes são os parâmetros mais comumente utilizados. No entanto, caso deseje explorar outros parâmetros, consulte a documentação.
Obrigado pelo seu feedback!