Skip to content

Nettoyage de texte en Python : tutoriel efficace de nettoyage de données

Updated on

Les données textuelles sont une mine d'informations, mais elles sont souvent enfouies sous une montagne de bruit. Que vous traitiez des publications sur les réseaux sociaux, des avis de clients ou des articles scientifiques, les données textuelles brutes sont généralement désordonnées et non structurées. C'est là que le nettoyage de texte intervient, une étape cruciale dans le pipeline de prétraitement des données.

Dans le domaine du traitement du langage naturel (NLP) et de l'apprentissage automatique, le nettoyage de texte transforme le texte brut en un format plus facile à comprendre par les algorithmes. C'est comme ranger votre chambre, ce qui facilite la recherche de ce dont vous avez besoin. Mais au lieu de vêtements et de livres, il s'agit de mots et de phrases.

Vous voulez créer rapidement une visualisation de données à partir d'un dataframe Python Pandas sans code ?

PyGWalker est une bibliothèque Python pour l'analyse exploratoire de données avec visualisation. PyGWalker (opens in a new tab) peut simplifier votre workflow d'analyse de données et de visualisation de données dans un notebook Jupyter, en transformant votre dataframe pandas (et votre dataframe polars) en une interface utilisateur de type Tableau pour l'exploration visuelle.

PyGWalker pour la visualisation de données (opens in a new tab)

Qu'est-ce que le nettoyage de texte en Python ?

Le nettoyage de texte, également connu sous le nom de nettoyage de données, est le processus de préparation des données textuelles brutes pour un traitement et une analyse ultérieurs. C'est une étape cruciale dans les projets de NLP et d'apprentissage automatique car elle a un impact direct sur les performances du modèle. Plus vos données sont propres et structurées, mieux votre modèle peut en apprendre.

Python, un langage de programmation puissant et flexible, offre différentes bibliothèques et outils pour un nettoyage de texte efficace. Il s'agit notamment de la Natural Language Toolkit (NLTK), des expressions régulières (regex), et bien d'autres encore. Ces outils peuvent vous aider à effectuer une large gamme de tâches de nettoyage de texte, de la suppression de la ponctuation et des caractères spéciaux à la normalisation des formes des mots.

Pourquoi le nettoyage de texte est-il important en apprentissage automatique ?

Les modèles d'apprentissage automatique apprennent à partir des données. La qualité des données que vous fournissez à votre modèle aura un impact direct sur ses performances. Dans le contexte des données textuelles, "qualité" signifie souvent structuré, cohérent et dépourvu d'informations non pertinentes.

Imaginez essayer d'apprendre un nouveau concept à partir d'un livre rempli de fautes de frappe, de terminologie incohérente et d'informations non pertinentes. Ce serait confus, n'est-ce pas ? Il en va de même pour les modèles d'apprentissage automatique. Ils ont du mal à apprendre efficacement à partir de données désordonnées, incohérentes et bruyantes.

Le nettoyage de texte contribue à améliorer la qualité de vos données textuelles en :

  • Supprimant les informations non pertinentes : cela inclut des choses comme les balises HTML, les URL, les noms d'utilisateurs sur les réseaux sociaux et d'autres données qui ne contribuent pas à la compréhension du sens du texte.
  • Normalisant le texte : cela implique des tâches telles que la conversion de tout le texte en minuscules, la correction des fautes de frappe et la normalisation des formats de date. Cela garantit que les mêmes informations sont représentées de manière cohérente dans les données.
  • Réduisant la dimensionnalité : des techniques telles que l'étroitesse et la lemmatisation réduisent les mots à leur forme racine, ce qui réduit le nombre de mots uniques que le modèle doit apprendre.

Techniques courantes de nettoyage de texte en Python

Python offre une large gamme d'outils et de bibliothèques pour le nettoyage de texte. Explorons certaines des techniques les plus courantes :

Suppression des caractères spéciaux et de la ponctuation

Les caractères spéciaux et la ponctuation ajoutent souvent du bruit aux données textuelles sans fournir beaucoup de signification sémantique. Ils peuvent être facilement supprimés en utilisant les méthodes de chaîne intégrées de Python ou la bibliothèque regex. Voici un exemple :

import re
texte = "Bonjour, Monde ! @Python #NLP"
texte_propre = re.sub(r'[^\w\s]', '', texte)
print(texte_propre)  ## Sortie : "Bonjour Monde Python NLP"

Conversion du texte en minuscules

La conversion de tout le texte en minuscules garantit que votre modèle traite les mots comme "Python", "python", etc.

## comme le même mot. Voici comment vous pouvez convertir du texte en minuscules en Python :
 
texte = "Bonjour, Monde ! @Python #NLP"
texte_minuscule = texte.lower()
print(texte_minuscule)  ## Sortie : "bonjour, monde ! @python #nlp"

Tokenisation

La tokenisation est le processus de découpage du texte en mots ou en jetons individuels. Il s'agit souvent l'une des premières étapes du nettoyage de texte et du NLP. La bibliothèque NLTK de Python offre un moyen simple de tokeniser le texte :

from nltk.tokenize import word_tokenize
 
texte = "Bonjour, Monde ! @Python #NLP"
jetons = word_tokenize(texte)
print(jetons)  ## Sortie : ['Bonjour', ',', 'Monde', '!', '@Python', '#NLP']

Suppression des mots vides

Les mots vides sont des mots courants comme "est", "le" et "et" qui n'ont souvent pas beaucoup de signification sémantique. Les supprimer peut aider à réduire la dimensionnalité de vos données. NLTK fournit une liste de mots vides courants en anglais que vous pouvez utiliser :

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
 
mots_vides = set(stopwords.words('english'))
 
texte = "Ceci est une phrase exemple."
jetons = word_tokenize(texte)
jetons_filtres = [jeton for jeton in jetons if jeton not in mots_vides]
 
print(jetons_filtres)  ## Sortie : ['Ceci', 'phrase', 'exemple', '.']

Racinisation et lemmatisation

La racinisation et la lemmatisation sont des techniques permettant de réduire les mots à leur forme racine. Cela peut aider à réduire la dimensionnalité de vos données et à regrouper différentes formes du même mot. Voici comment vous pouvez effectuer une racinisation et une lemmatisation à l'aide de NLTK :

from nltk.stem import PorterStemmer, WordNetLemmatizer
```python
from nltk.tokenize import word_tokenize
from nltk.stem import PorterStemmer
from nltk.stem import WordNetLemmatizer
 
stemmer = PorterStemmer()
lemmatizer = WordNetLemmatizer()
 
text = "Les chats courent."
tokens = word_tokenize(text)
 
stemmed_tokens = [stemmer.stem(token) for token in tokens]
lemmatized_tokens = [lemmatizer.lemmatize(token) for token in tokens]
 
print(stemmed_tokens)  ## Résultat : ['Les', 'chat', 'cour', '.']
print(lemmatized_tokens)  ## Résultat : ['Les', 'chat', 'courent', '.']

Python Libraries for Text Cleaning (Bibliothèques Python pour le nettoyage de texte)

Python propose plusieurs bibliothèques puissantes pour le nettoyage de texte. Examinons de plus près deux des plus couramment utilisées : NLTK et regex.

Natural Language Toolkit (NLTK)

NLTK est une plateforme de premier plan pour la création de programmes Python traitant des données de langage humain. Il fournit des interfaces faciles à utiliser pour plus de 50 corpus et ressources lexicales tels que WordNet, ainsi qu'une suite de bibliothèques de traitement de texte pour la classification, la tokenisation, la racinisation, l'étiquetage, l'analyse syntaxique et le raisonnement sémantique.

Voici un exemple de la façon dont vous pouvez utiliser NLTK pour le nettoyage de texte:

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
from nltk.stem import PorterStemmer
 
## Initialisez le stemmer
stemmer = PorterStemmer()
 
## Définissez les mots vides (stop words)
stop_words = set(stopwords.words('english'))
 
## Définissez le texte
text = "Ceci est une phrase d'exemple, montrant la filtration des mots vides."
 
## Faites la tokenisation du texte
tokens = word_tokenize(text)
 
## Supprimez les mots vides et racinisez les mots
filtered_tokens = [stemmer.stem(token) for token in tokens if token not in stop_words]
 
print(filtered_tokens)

Expressions régulières (regex)

Les expressions régulières sont un outil puissant pour diverses manipulations de chaînes de caractères. Elles sont un langage spécifique à un domaine (DSL) et sont présentes sous forme de bibliothèque dans la plupart des langages de programmation modernes, pas seulement Python. Elles sont utiles pour deux tâches principales :

  • Vérifier si des chaînes correspondent à un motif (par exemple, si une chaîne a le format d'une adresse e-mail).
  • Effectuer des substitutions dans une chaîne (comme changer toutes les orthographes américaines en orthographes britanniques).

Voici un exemple de la façon dont vous pouvez utiliser regex pour le nettoyage de texte :

import re
 
## Définissez le texte
text = "Ceci est une phrase d'exemple. Elle contient les chiffres 1, 2 et 3."
 
## Enlevez tous les chiffres
clean_text = re.sub(r'\d', '', text)
 
print(clean_text)  ## Résultat : "Ceci est une phrase d'exemple. Elle contient , et  chiffres."

Ce ne sont que quelques exemples de la façon dont vous pouvez utiliser les bibliothèques puissantes de Python pour le nettoyage de texte. En maîtrisant ces techniques, vous pouvez vous assurer que vos données textuelles sont propres et prêtes pour une analyse ou une modélisation ultérieure.

Techniques avancées de nettoyage de texte

En approfondissant vos connaissances sur le nettoyage de texte, vous découvrirez des techniques plus avancées qui peuvent vous aider à affiner encore davantage vos données. Ces techniques nécessitent souvent une meilleure compréhension de la langue avec laquelle vous travaillez et peuvent améliorer de manière significative la qualité de vos données.

Reconnaissance des entités nommées

La reconnaissance des entités nommées (NER) est un processus permettant d'extraire des éléments qui fournissent des informations sur une phrase. Par exemple, si vous avez une phrase : "John Doe est un ingénieur logiciel chez Google.", la reconnaissance des entités nommées vous permettra de comprendre que "John Doe" est une personne et "Google" est une organisation.

La bibliothèque NLTK de Python fournit une manière simple d'effectuer la reconnaissance des entités nommées :

import nltk
from nltk import word_tokenize, pos_tag, ne_chunk
 
phrase = "John Doe est un ingénieur logiciel chez Google."
 
print(ne_chunk(pos_tag(word_tokenize(phrase))))

Étiquetage des parties du discours

L'étiquetage des parties du discours consiste à marquer un mot dans un texte en fonction de sa partie du discours, en se basant à la fois sur sa définition et sur son contexte. Voici comment vous pouvez effectuer l'étiquetage des parties du discours à l'aide de NLTK :

import nltk
from nltk import word_tokenize, pos_tag
 
phrase = "John Doe est un ingénieur logiciel chez Google."
 
print(pos_tag(word_tokenize(phrase)))

Classification de texte et analyse des sentiments

La classification de texte est le processus d'attribution de balises ou de catégories à un texte en fonction de son contenu. C'est l'une des tâches fondamentales du traitement du langage naturel. L'analyse des sentiments, quant à elle, consiste à interpréter et classer les émotions dans des données textuelles en utilisant des techniques d'analyse de texte.

La bibliothèque NLTK de Python offre des fonctionnalités pour la classification de texte et l'analyse des sentiments.

Conclusion

Le nettoyage de texte est une étape cruciale dans tout projet de TALN et d'apprentissage automatique. Il permet de transformer des données textuelles brutes et non structurées en un format plus facile à comprendre pour les algorithmes. En maîtrisant les techniques de nettoyage de texte et les bibliothèques Python présentées dans cet article, vous serez bien parti pour devenir un expert du nettoyage de texte.

Vous souhaitez créer rapidement une visualisation des données à partir d'un dataframe Python Pandas sans écrire de code ?

PyGWalker est une bibliothèque Python pour l'analyse exploratoire de données avec visualisation. PyGWalker (opens in a new tab) peut simplifier votre flux de travail d'analyse et de visualisation de données dans Jupyter Notebook, en transformant votre dataframe pandas (et votre dataframe polars) en une interface utilisateur de type Tableau pour l'exploration visuelle.

PyGWalker pour la visualisation des données (opens in a new tab)

Questions fréquemment posées

Qu'est-ce que le nettoyage de texte en Python ?

Le nettoyage de texte en Python est le processus de préparation des données textuelles brutes en vue d'un traitement et d'une analyse ultérieurs. Il implique différentes techniques telles que la suppression des caractères spéciaux et de la ponctuation, la conversion du texte en minuscules, la tokenisation, la suppression des mots vides, la racinisation et la lemmatisation.

Comment nettoyer les données textuelles pour le NLP en Python ?

Pour nettoyer les données textuelles pour le TAL en Python, vous pouvez utiliser différentes bibliothèques telles que NLTK et regex. Ces bibliothèques fournissent des fonctionnalités pour les tâches courantes de nettoyage de texte, telles que la suppression des caractères spéciaux et de la ponctuation, la conversion du texte en minuscules, la tokenisation, la suppression des mots vides, la racinisation et la lemmatisation.

Qu'est-ce que le nettoyage de texte ?

Le nettoyage de texte est le processus de préparation des données textuelles brutes pour un traitement et une analyse ultérieurs. C'est une étape cruciale dans les projets de TAL et d'apprentissage automatique, car cela a un impact direct sur les performances du modèle. Plus vos données sont propres et structurées, mieux votre modèle peut en apprendre.

Comment nettoyer les données textuelles ?

Pour nettoyer les données textuelles, vous pouvez utiliser différentes techniques de nettoyage de texte telles que la suppression des caractères spéciaux et de la ponctuation, la conversion du texte en minuscules, la tokenisation, la suppression des mots vides, la racinisation et la lemmatisation. Python propose différentes bibliothèques telles que NLTK et regex qui peuvent vous aider à effectuer ces tâches de manière efficace.