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 :

    1. Initialisation du CountVectorizer : Un objet CountVectorizer est créé pour traiter le corpus. Par défaut, il ignore la casse des mots et filtre les caractères spéciaux.
    2. 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.
    3. 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.
    4. 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 ou ngram_range pour prendre en compte des séquences de mots (bigrams, trigrams, etc.).