Vectorisation avec CountVectorizer (Bag of Words)
La vectorisation avec CountVectorizer (Bag of Words) est une technique de traitement du langage naturel qui consiste à convertir un texte en une représentation numérique basée sur la fréquence des mots. CountVectorizer de la bibliothèque scikit-learn construit un « sac de mots » où chaque texte est représenté par un vecteur indiquant la fréquence d’apparition des mots dans ce texte. Cette méthode ignore l’ordre des mots et se concentre uniquement sur leur fréquence d’apparition. Elle est souvent utilisée pour transformer un corpus de texte en une matrice de caractéristiques, prête à être utilisée dans des modèles d’apprentissage automatique.
Fonctions :
-
CountVectorizer()
La méthode CountVectorizer est utilisée pour transformer un ensemble de textes (appelé corpus) en une représentation matricielle de type Bag of Words (BoW). Cette approche convertit chaque mot du corpus en une caractéristique et compte la fréquence de chaque mot dans chaque document. Cela permet de représenter les textes sous forme de vecteurs numériques, qui peuvent ensuite être utilisés pour des modèles de machine learning. Chaque ligne de la matrice représente un document, et chaque colonne représente un mot dans le corpus.
Importation :
from sklearn.feature_extraction.text import CountVectorizer
Attributs :
Paramètre Description fit_transform(corpus)
Applique l'ajustement de l'indexation des mots et transforme le corpus en une matrice sparse. vocabulary_
Un dictionnaire qui associe chaque mot à un index dans la matrice. Exemple de code :
from sklearn.feature_extraction.text import CountVectorizer # Exemple de corpus corpus = [ "I love programming in Python", "Python is great for data science", "I love data science" ] # Initialisation du CountVectorizer vectorizer = CountVectorizer() # Transformation du corpus en matrice de fréquence de mots X = vectorizer.fit_transform(corpus) # Affichage de la matrice sous forme dense print(X.toarray()) # Affichage du vocabulaire print(vectorizer.vocabulary_)
Explication du code :
- Initialisation du
CountVectorizer
: Un objetCountVectorizer
est créé pour traiter le corpus. Par défaut, il ignore la casse des mots et filtre les caractères spéciaux. - Transformation du corpus : La méthode
fit_transform(corpus)
apprend le vocabulaire à partir du corpus (c'est-à-dire, tous les mots uniques dans l'ensemble de textes) et génère une matrice sparse où chaque ligne représente un document et chaque colonne un mot. Les valeurs dans la matrice sont les fréquences des mots dans chaque document. - Affichage de la matrice : La matrice générée est une matrice sparse, mais on peut la convertir en format dense avec
toarray()
pour l'affichage. - Affichage du vocabulaire : Le dictionnaire
vocabulary_
contient les mots du corpus avec leurs indices respectifs. Par exemple, un mot spécifique dans le corpus sera associé à un index unique dans la matrice.
🔎 Remarques
- Bag of Words : Cette méthode est simple mais ne prend pas en compte l'ordre des mots dans le texte, ce qui peut être un inconvénient pour certaines tâches de traitement du langage naturel.
- Matrice Sparse : La matrice résultante est généralement sparse (principalement composée de zéros), ce qui est efficace en termes de mémoire. Pour une plus grande efficacité, il est souvent préférable de travailler avec des matrices sparse lors de l'implémentation de modèles de machine learning.
- Paramètres supplémentaires : Il existe des options comme
stop_words
pour exclure certains mots de la vectorisation oungram_range
pour prendre en compte des séquences de mots (bigrams, trigrams, etc.).
- Initialisation du