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 :

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 TfidfVectorizer

    Attributs :

    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 fit ou fit_transform
    idf_ array Vecteur des scores IDF pour chaque mot du vocabulaire. Appris après fit ou fit_transform
    stop_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 fit ou fit_transform

    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_)
    Résultat du code

    Explication du code :

    1. Initialisation du TfidfVectorizer : Comme pour CountVectorizer, on crée un objet TfidfVectorizer pour traiter le corpus. Cette méthode prend en compte à la fois la fréquence des termes et leur importance dans le corpus global.
    2. 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.
    3. Affichage de la matrice : Comme avec CountVectorizer, la matrice générée est sparse. On peut la convertir en format dense avec toarray() pour l'affichage.
    4. Affichage du vocabulaire et des scores IDF : Le dictionnaire vocabulary_ contient les mots du corpus associés à leurs indices, tandis que idf_ 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 avec stop_words='english' ou en ajustant la manière dont les n-grams sont traités avec le paramètre ngram_range.