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 :

    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.