Techniques de normalisation du texte

Natural Language Processing (NLP) en Python

Fouad Trad

Machine Learning Engineer

Normalisation du texte

  • La normalisation met les mots dans un format standard
  • Utile pour la classification, la recherche, l'analyse de sentiment
  • Techniques à voir :
    • Mise en minuscules
    • Stemming
    • Lemmatisation

Image montrant trois personnes exprimant qu'elles aiment regarder des films bien réalisés, de trois façons : « I enjoy watching movies with great direction! », « I enjoyed watching movies that are well-directed. », « Movies with excellent direction are something I enjoy. »

Natural Language Processing (NLP) en Python

Mise en minuscules

  • Sans normalisation, ces mots seront traités comme des jetons distincts
  • Cela induit les modèles en erreur et gonfle le vocabulaire
text  = """Data scientists and data 
engineers need DATA"""
lower_text = text.lower()

print(lower_text)
data scientists and data 
engineers need data

Image montrant une personne confuse entre « data », « Data » et « DATA. »

Natural Language Processing (NLP) en Python

Applicabilité de la mise en minuscules

Utile pour

Tâches fondées sur l'analyse de mots-clés

Image montrant une personne qui cherche des mots-clés dans un texte.

Natural Language Processing (NLP) en Python

Applicabilité de la mise en minuscules

Utile pour

Tâches fondées sur l'analyse de mots-clés

Image montrant une personne qui cherche des mots-clés dans un texte.

Peu utile pour

Tâches nécessitant de distinguer des mots dont le sens dépend de la casse

Image montrant un groupe de personnes représentant « us » et le drapeau américain représentant « US ».

Natural Language Processing (NLP) en Python

Stemming

  • Réduit les mots à leur racine en coupant les suffixes
    • running → run
    • reading → read
  • Utile pour regrouper des variantes proches d'un mot
  • Peut produire des mots non valides
    • organization → organizat

Stem_logo.png

Natural Language Processing (NLP) en Python

Stemming en code

from nltk.stem import PorterStemmer

stemmer = PorterStemmer()
tokens = ['running', 'bats', 'organizations', 'reading']
stemmed = [stemmer.stem(word) for word in tokens]
print(stemmed)
['run', 'bat', 'organizat', 'read']
Natural Language Processing (NLP) en Python

Lemmatisation

  • Réduit les mots à leur forme de base
  • Garantit un mot valide en sortie
    • organizations → organization
  • Utile quand l'exactitude grammaticale est essentielle
  • Plus lent que le stemming, mais plus précis

lemmalogo.png

Natural Language Processing (NLP) en Python

Lemmatisation en code

from nltk.stem import WordNetLemmatizer

nltk.download('wordnet')
lemmatizer = WordNetLemmatizer()
tokens = ['running', 'bats', 'organizations', 'reading']
lemmatized = [lemmatizer.lemmatize(word) for word in tokens]
print(lemmatized)
['running', 'bat', 'organization', 'reading']
Natural Language Processing (NLP) en Python

Stemming

  • Plus rapide
  • Produit des mots hors dictionnaire
  • À privilégier si la vitesse est prioritaire

Image montrant une personne qui abat un arbre avec une scie à chaîne.

Lemmatisation

  • Plus lente
  • Plus exacte
  • À privilégier si l'exactitude grammaticale est requise

Image montrant une personne qui taille soigneusement un arbre pour préserver sa structure.

Natural Language Processing (NLP) en Python

Passons à la pratique !

Natural Language Processing (NLP) en Python

Preparing Video For Download...