Implémentation de TF-IDF
Implémentation par défaut
L’implémentation du modèle TF-IDF dans sklearn est similaire à celle du modèle sac de mots. Pour entraîner ce modèle sur un corpus, la classe TfidfVectorizer est utilisée, en appliquant la méthode familière .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)
À l’exception de l’utilisation d’une classe différente, le reste de l’implémentation est identique à celle du modèle sac de mots. Par défaut, la matrice TF-IDF est calculée avec une normalisation L2.
Personnalisation du TF-IDF
De la même manière que pour CountVectorizer, il est possible de spécifier les paramètres min_df et max_df afin d’inclure uniquement les termes présents dans au moins min_df documents et au plus max_df documents. Ces paramètres peuvent être définis soit comme des nombres absolus de documents, soit comme une proportion du nombre total de documents.
Voici un exemple où seuls les termes apparaissant dans exactement 2 documents sont inclus, en fixant à la fois min_df et max_df à 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)
Pour spécifier les n-grammes à inclure dans la matrice, il est possible d’utiliser le paramètre ngram_range. Inclure uniquement les bigrams dans la matrice résultante :
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)
Ce sont les paramètres les plus couramment utilisés. Cependant, si vous souhaitez en explorer davantage, vous pouvez consulter la documentation.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 3.45
Implémentation de TF-IDF
Glissez pour afficher le menu
Implémentation par défaut
L’implémentation du modèle TF-IDF dans sklearn est similaire à celle du modèle sac de mots. Pour entraîner ce modèle sur un corpus, la classe TfidfVectorizer est utilisée, en appliquant la méthode familière .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)
À l’exception de l’utilisation d’une classe différente, le reste de l’implémentation est identique à celle du modèle sac de mots. Par défaut, la matrice TF-IDF est calculée avec une normalisation L2.
Personnalisation du TF-IDF
De la même manière que pour CountVectorizer, il est possible de spécifier les paramètres min_df et max_df afin d’inclure uniquement les termes présents dans au moins min_df documents et au plus max_df documents. Ces paramètres peuvent être définis soit comme des nombres absolus de documents, soit comme une proportion du nombre total de documents.
Voici un exemple où seuls les termes apparaissant dans exactement 2 documents sont inclus, en fixant à la fois min_df et max_df à 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)
Pour spécifier les n-grammes à inclure dans la matrice, il est possible d’utiliser le paramètre ngram_range. Inclure uniquement les bigrams dans la matrice résultante :
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)
Ce sont les paramètres les plus couramment utilisés. Cependant, si vous souhaitez en explorer davantage, vous pouvez consulter la documentation.
Merci pour vos commentaires !