Ce tutoriel est une précieuse contribution de notre communauté et a été relu par DataCamp pour plus de clarté et d'exactitude.
Envie de partager votre expertise ? Nous serions ravis de vous lire ! Proposez vos articles ou idées via notre formulaire de contribution communautaire.
En tant que praticien ou praticienne des données, vous savez à quel point il est essentiel de concevoir un pipeline robuste de nettoyage et de préparation des données pour tout projet d'apprentissage automatique. Avec des textes, l'enjeu est encore plus fort en raison des défis spécifiques que posent les données textuelles. Données bruitées, fautes d'orthographe, abréviations, argot, erreurs grammaticales : autant d'éléments qui peuvent dégrader les performances des modèles.
Pour garantir des données textuelles fiables, cohérentes et exemptes d'erreurs, un pipeline de nettoyage et de préparation bien pensé est indispensable. Il comprend généralement des étapes comme la normalisation du texte, la tokenisation, la suppression des stopwords, le stemming, la lemmatisation et le masquage de données.
Bien que des bibliothèques populaires comme NLTK, gensim et spaCy offrent un large éventail d'outils pour traiter et nettoyer le texte, les données textuelles présentent malgré tout des défis particuliers susceptibles d'impacter fortement les performances des modèles. Ces défis vont de la normalisation des caractères au masquage de données, entre autres. On peut les traiter avec les bibliothèques citées, mais cela demande souvent du temps et des efforts.
C'est là que Textacy excelle. Textacy est une bibliothèque Python qui propose un moyen simple et efficace de résoudre toute une série de problèmes courants rencontrés avec les textes. Si d'autres bibliothèques offrent des fonctionnalités similaires, l'orientation de Textacy sur des problèmes précis, comme la normalisation des caractères et le masquage de données, fait la différence dans ce contexte.
Normalisation des caractères avec Textacy
La normalisation des caractères consiste à convertir les textes dans un format standard, ce qui est particulièrement important lorsqu'on traite des contenus multilingues.
Text = ‘ the cafe “Saint-Raphaël” is loca-/nted on Cote d’Azur.’
Les caractères accentués sont un point sensible en normalisation de texte et peuvent fortement affecter la précision des modèles.
Le problème vient du fait que les accents ne sont pas utilisés de manière cohérente, ce qui introduit des inconsistances dans les données.
Par exemple, les jetons "Saint-Raphaël" et "Saint-Raphael" peuvent désigner la même entité, mais sans normalisation, ils ne seront pas reconnus comme identiques. De plus, les textes contiennent souvent des mots coupés par un trait d'union en fin de ligne, et les apostrophes comme dans l'exemple ci-dessus posent problème pour la tokenisation. Pour toutes ces raisons, il est pertinent de normaliser le texte et de remplacer accents et guillemets typographiques par leurs équivalents ASCII.
Nous utiliserons Textacy, qui possède un ensemble pratique de fonctions prédéfinies pour résoudre ce problème simplement et efficacement. Le tableau suivant présente une sélection de fonctions de prétraitement de Textacy pouvant s'utiliser indépendamment des autres bibliothèques.
|
Fonction |
Description |
|---|---|
|
normalize _hyphentated_words |
Reconstitue les mots séparés par un saut de ligne |
|
normalize_quotation_marks |
Remplace tous les types de guillemets typographiques par un équivalent ASCII |
|
normalize_unicode |
Unifie les différents codages de caractères accentués en Unicode |
|
remove_accents |
Remplace les caractères accentués par leur équivalent ASCII |
|
replace_emails |
Remplace les adresses e‑mail par __EMAIL__ |
|
replace_urls |
Remplace les URLs par __URL__ |
text = "The café "Saint-Raphaël" is loca-\nted on Cote dʼAzur."
import textacy
import textacy.preprocessing as tprep
def normalize(text):
text = tprep.normalize_hyphenated_words(text)
text = tprep.normalize_quotation_marks(text)
text = tprep.normalize_unicode(text)
text = tprep.remove_accents(text)
return text
En utilisant la fonction normalize ci-dessus, basée sur les fonctions de prétraitement prédéfinies de Textacy, nous résolvons le problème de normalisation avec un effort minimal.
print(normalize(text)
Sortie :
The cafe Saint-Raphael is located in Cote d' Azure
Masquage de données avec Textacy
Les données textuelles contiennent souvent, en plus des mots usuels, différents identifiants comme des URL, des adresses e‑mail ou des numéros de téléphone. Parfois, ces éléments nous intéressent précisément. Mais dans bien des cas, il est préférable de les supprimer ou de les masquer, soit parce qu'ils ne sont pas pertinents, soit pour des raisons de confidentialité.
Textacy propose des fonctions replace très pratiques pour le masquage, comme indiqué dans le tableau ci-dessus. Ces fonctions sont prédéfinies, ce qui facilite le masquage d'informations sensibles ou non pertinentes, sans avoir à écrire ses propres expressions régulières.
text = "Check out https://spacy.io/usage/spacy-101"print(replace_urls(text))
Sortie :
Check out __URL__
En résumé
Dans cet article, nous avons montré comment utiliser Textacy pour simplifier le prétraitement des données textuelles. Grâce à ses nombreuses fonctions intégrées, Textacy facilite la gestion de défis courants comme la normalisation des caractères et le masquage de données.
En rationalisant ces étapes, Textacy vous permet de vous concentrer sur les aspects plus complexes du traitement automatique du langage naturel. Que vous travailliez sur l'analyse de sentiment, la modélisation de sujets ou toute autre tâche de TALN, Textacy vous aidera à préparer rapidement et efficacement vos données pour l'analyse.
La prochaine fois que vous serez confronté à un défi de prétraitement, pensez à utiliser Textacy pour alléger votre flux de travail et gagner un temps précieux.
Si ce guide sur Textacy vous a été utile et que vous souhaitez approfondir le prétraitement des textes et le traitement du langage, envisagez de suivre le cours de DataCamp : Natural Language Processing Fundamentals in Python.