Lemmatization avec nltk.WordNetLemmatizer

La lemmatisation avec nltk.WordNetLemmatizer consiste à réduire les mots à leur forme de base ou « lemme », en tenant compte du contexte grammatical (comme le temps ou le genre) pour obtenir une racine correcte et significative. Contrairement au stemming, qui coupe simplement les suffixes, la lemmatisation renvoie des mots ayant du sens, comme par exemple convertir « better » en « good » ou « running » en « run ». Le WordNetLemmatizer utilise le dictionnaire WordNet pour identifier les lemmes, et il peut être utilisé avec des informations sur la partie du discours (comme les noms, verbes, etc.) pour des résultats plus précis.

Fonctions :

  • nltk.WordNetLemmatizer()

    La lemmatisation est un processus linguistique plus avancé que le stemming. Contrairement au stemming qui coupe les mots à la racine, la lemmatisation réduit les mots à leur forme de base (le lemme) en utilisant des informations contextuelles. Par exemple, lemmatiser le mot "manges" renverra "manger" plutôt que "mang". WordNetLemmatizer est une classe de la bibliothèque nltk qui utilise le lexique WordNet pour effectuer cette tâche. Elle prend en compte le contexte grammatical du mot (comme son étiquette grammaticale) pour déterminer sa forme canonique.

    Importation :

    from nltk.stem import WordNetLemmatizer

    Attributs :

    Paramètre Description
    lemmatize(word, pos) Prend un mot et son type de partie du discours (pos), et renvoie le lemme du mot.
    pos Un paramètre optionnel indiquant le type de la partie du discours (par exemple 'v' pour verbe, 'n' pour nom).

    Exemple de code :

    from nltk.stem import WordNetLemmatizer
    
    # Création du Lemmatizer
    lemmatizer = WordNetLemmatizer()
    
    # Exemple de mots
    mots = ["manges", "manger", "mangé", "chats", "chasser"]
    
    # Application de la lemmatisation
    mots_lemmatises = [lemmatizer.lemmatize(mot, pos='v') for mot in mots]  # 'v' pour verbe
    print(mots_lemmatises)
    
    # Exemple pour un nom
    mots_lemmatises_nom = [lemmatizer.lemmatize(mot, pos='n') for mot in mots]
    print(mots_lemmatises_nom)

    Explication du code :

    1. Création du WordNetLemmatizer : Un objet WordNetLemmatizer est créé pour effectuer la lemmatisation.
    2. Application de la lemmatisation avec la partie du discours (pos) :
      • Ici, on passe la partie du discours pour spécifier si le mot est un verbe ('v') ou un nom ('n').
      • Par exemple, "manges" devient "manger" si le type de parole est un verbe. "chats" devient "chat" si le type est un nom.
    3. Résultat :
      • "manges" est lemmatisé en "manger", "chats" est réduit à "chat".

    🔎 Remarques

    • La lemmatisation avec WordNetLemmatizer est plus précise que le stemming, car elle prend en compte le contexte grammatical du mot.
    • Si le type de parole (pos) n'est pas fourni, le lemmatizer suppose généralement que le mot est un nom ('n').
    • Cette approche est idéale lorsqu'on veut réduire des mots à leur forme canonique, mais elle peut être plus lente que le stemming.