Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Implémentation de TF-IDF | Modèles de Texte de Base
Introduction au TALN

bookImplé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().

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

À 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 :

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

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 :

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

Ce sont les paramètres les plus couramment utilisés. Cependant, si vous souhaitez en explorer davantage, vous pouvez consulter la documentation.

question mark

Quelle classe de scikit-learn peut être utilisée pour obtenir les vecteurs TF-IDF à partir du corpus de texte ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 7

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

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

bookImplé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().

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

À 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 :

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

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 :

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

Ce sont les paramètres les plus couramment utilisés. Cependant, si vous souhaitez en explorer davantage, vous pouvez consulter la documentation.

question mark

Quelle classe de scikit-learn peut être utilisée pour obtenir les vecteurs TF-IDF à partir du corpus de texte ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 7
some-alt