Vectorisation avec TfidfVectorizer (TF-IDF)
La vectorisation avec TfidfVectorizer (TF-IDF) est une méthode de traitement du langage naturel qui convertit le texte en une représentation numérique. Contrairement à CountVectorizer, qui ne prend en compte que la fréquence des mots, TF-IDF évalue également leur importance relative dans l’ensemble du corpus.
TF-IDF signifie Term Frequency–Inverse Document Frequency :
-
TF (Term Frequency) : mesure la fréquence d’un mot dans un document.
-
IDF (Inverse Document Frequency) : mesure l’importance d’un mot dans tout le corpus.
Ainsi, un mot qui apparaît souvent dans un document mais rarement dans l’ensemble du corpus aura un poids plus élevé. Cette méthode permet de pondérer les mots selon leur pertinence, en réduisant l’influence des mots trop fréquents et en valorisant les mots rares mais significatifs.
Le TfidfVectorizer de scikit-learn génère une matrice de caractéristiques TF-IDF, qui peut ensuite être utilisée pour entraîner des modèles d’apprentissage automatique.
Fonctions :
-
TfidfVectorizer()
TfidfVectorizer()est une fonction de la bibliothèque scikit-learn qui transforme du texte en vecteurs numériques pondérés par TF-IDF. Elle convertit une collection de documents textuels en une matrice de caractéristiques, où chaque ligne représente un document et chaque colonne un mot du corpus.Les valeurs de la matrice correspondent au poids TF-IDF des mots, c’est-à-dire une combinaison de leur fréquence dans le document (TF) et de leur importance dans l’ensemble du corpus (IDF). Cette représentation permet aux modèles d’apprentissage automatique de traiter le texte de manière efficace, en donnant plus de poids aux mots rares mais significatifs et moins aux mots fréquents mais peu informatifs.
Options principales :
-
max_features: limite le nombre de mots à utiliser. -
stop_words: liste de mots à ignorer (ex. mots très fréquents comme “et”, “le”). -
ngram_range: permet de considérer des séquences de mots (unigrammes, bigrammes…).
Importation :
from sklearn.feature_extraction.text import TfidfVectorizerAttributs :
Attribut Type Description Valeur par défaut vocabulary_dict Dictionnaire associant chaque mot du corpus à un index dans la matrice TF-IDF. Appris après fitoufit_transformidf_array Vecteur des scores IDF pour chaque mot du vocabulaire. Appris après fitoufit_transformstop_words_list Liste des mots ignorés par le modèle après traitement du paramètre stop_words.None fixed_vocabulary_bool Indique si le vocabulaire a été défini manuellement (True) ou appris du corpus (False). False feature_names_list Liste des mots présents dans le vocabulaire, dans l’ordre des colonnes de la matrice TF-IDF. Appris après fitoufit_transformExemple de code :
from sklearn.feature_extraction.text import TfidfVectorizer # Exemple de corpus corpus = [ "I love programming in Python", "Python is great for data science", "I love data science" ] # Initialisation du TfidfVectorizer vectorizer = TfidfVectorizer() # Transformation du corpus en matrice TF-IDF X = vectorizer.fit_transform(corpus) # Affichage de la matrice sous forme dense print(X.toarray()) # Affichage du vocabulaire print(vectorizer.vocabulary_) # Affichage des scores IDF print(vectorizer.idf_)
Explication du code :
- Initialisation du
TfidfVectorizer: Comme pourCountVectorizer, on crée un objetTfidfVectorizerpour traiter le corpus. Cette méthode prend en compte à la fois la fréquence des termes et leur importance dans le corpus global. - Transformation du corpus :
fit_transform(corpus)apprend les poids des termes dans le corpus et génère une matrice sparse où chaque ligne représente un document et chaque colonne un mot, avec les valeurs représentant les scores TF-IDF des mots dans chaque document. - Affichage de la matrice : Comme avec
CountVectorizer, la matrice générée est sparse. On peut la convertir en format dense avectoarray()pour l'affichage. - Affichage du vocabulaire et des scores IDF : Le dictionnaire
vocabulary_contient les mots du corpus associés à leurs indices, tandis queidf_contient les scores IDF pour chaque mot, indiquant leur importance dans l'ensemble du corpus.
🔎 Remarques
- TF-IDF vs Bag of Words : La différence clé avec le modèle Bag of Words est que
TfidfVectorizerdonne plus de poids aux mots rares et moins de poids aux mots fréquents dans tout le corpus. Cela permet de mieux capturer les mots qui apportent plus d'information pour chaque document individuel. - Applications courantes : TF-IDF est largement utilisé dans des applications telles que la classification de texte, la recherche d'information, et la détection de similarité entre documents.
- Personnalisation : Comme
CountVectorizer,TfidfVectorizerpermet de personnaliser les paramètres, par exemple, en excluant certains mots avecstop_words='english'ou en ajustant la manière dont les n-grams sont traités avec le paramètrengram_range.
-