Vectorisation avec TfidfVectorizer (TF-IDF)
La vectorisation avec TfidfVectorizer (TF-IDF) est une technique de traitement du langage naturel qui transforme le texte en une représentation numérique, mais cette fois en prenant en compte non seulement la fréquence d’apparition des mots (comme avec CountVectorizer), mais aussi leur importance relative dans un corpus. TF-IDF signifie Term Frequency-Inverse Document Frequency, où : TF (Term Frequency) mesure la fréquence d’un mot dans un document. IDF (Inverse Document Frequency) mesure l’importance d’un mot dans l’ensemble du corpus. Un mot fréquent dans un document mais rare dans l’ensemble du corpus aura un poids plus élevé. Cela permet de pondérer les mots en fonction de leur pertinence dans un contexte donné, en donnant moins de poids aux mots trop fréquents et plus de poids aux mots rares mais significatifs. TfidfVectorizer de scikit-learn est utilisé pour générer une matrice de caractéristiques TF-IDF, qui peut être utilisée pour des modèles d’apprentissage automatique.
Fonctions :
-
TfidfVectorizer()
Le TfidfVectorizer transforme le texte en une représentation numérique en utilisant la méthode TF-IDF (Term Frequency-Inverse Document Frequency). Cette méthode prend en compte la fréquence d'un terme dans un document tout en ajustant l'importance du terme selon sa fréquence dans l'ensemble du corpus. L'objectif est de réduire l'impact des mots très fréquents (par exemple, "le", "et", etc.) et d'augmenter l'importance des mots rares mais significatifs pour chaque document. TF (Term Frequency) : La fréquence d'un terme dans un document donné. IDF (Inverse Document Frequency) : Mesure de l'importance d'un terme dans le corpus en général, qui diminue lorsque le terme est très fréquent dans de nombreux documents.
Importation :
from sklearn.feature_extraction.text import TfidfVectorizer
Attributs :
Paramètre Description fit_transform(corpus)
Applique l'ajustement du vocabulaire et transforme le corpus en une matrice de scores TF-IDF. vocabulary_
Un dictionnaire qui associe chaque mot à un index dans la matrice TF-IDF. idf_
Le vecteur des scores IDF pour chaque mot dans le vocabulaire. Exemple 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 objetTfidfVectorizer
pour 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
TfidfVectorizer
donne 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
,TfidfVectorizer
permet 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
.
- Initialisation du