Nettoyage de texte

Ingénierie des caractéristiques pour le NLP en Python

Rounak Banik

Data Scientist

Techniques de nettoyage de texte

  • Espaces superflus et séquences d'échappement
  • Ponctuation
  • Caractères spéciaux (chiffres, émojis, etc.)
  • Mots vides
Ingénierie des caractéristiques pour le NLP en Python

isalpha()

"Dog".isalpha()
True
"3dogs".isalpha()
False
"12347".isalpha()
False
"!".isalpha()
False
"❤".isalpha()
False
Ingénierie des caractéristiques pour le NLP en Python

Mise en garde

  • Abréviations : U.S.A, U.K, etc.
  • Noms propres : word2vec et xto10x.
  • Écrire votre propre fonction (avec des regex) pour les cas plus nuancés.
Ingénierie des caractéristiques pour le NLP en Python

Suppression des caractères non alphabétiques

string = """
OMG!!!! This is like    the best thing ever \t\n. 
Wow, such an amazing song! I'm hooked. Top 5 definitely. ❤
"""

import spacy # Generate list of tokens nlp = spacy.load('en_core_web_sm') doc = nlp(string) lemmas = [token.lemma_ for token in doc]
Ingénierie des caractéristiques pour le NLP en Python

Suppression des caractères non alphabétiques

...
...
# Remove tokens that are not alphabetic
a_lemmas = [lemma for lemma in lemmas 
            if lemma.isalpha() or lemma == '-PRON-']

# Print string after text cleaning print(' '.join(a_lemmas))
'omg this be like the good thing ever wow such an amazing song -PRON- be hooked top definitely'
Ingénierie des caractéristiques pour le NLP en Python

Mots vides

  • Mots très fréquents
  • Ex. : articles, verbes d'état, pronoms, etc.
Ingénierie des caractéristiques pour le NLP en Python

Retirer les mots vides avec spaCy

# Get list of stopwords
stopwords = spacy.lang.en.stop_words.STOP_WORDS

string = """ OMG!!!! This is like the best thing ever \t\n. Wow, such an amazing song! I'm hooked. Top 5 definitely. ❤ """
Ingénierie des caractéristiques pour le NLP en Python

Retirer les mots vides avec spaCy

...
...
# Remove stopwords and non-alphabetic tokens
a_lemmas = [lemma for lemma in lemmas 
            if lemma.isalpha() and lemma not in stopwords]
# Print string after text cleaning
print(' '.join(a_lemmas))
'omg like good thing wow amazing song hooked definitely'
Ingénierie des caractéristiques pour le NLP en Python

Autres techniques de prétraitement de texte

  • Retirer les balises HTML/XML
  • Remplacer les caractères accentués (comme é)
  • Corriger les fautes d'orthographe
Ingénierie des caractéristiques pour le NLP en Python

Mise en garde

N'appliquez que les techniques de prétraitement utiles à votre cas d'usage.

Ingénierie des caractéristiques pour le NLP en Python

Passons à la pratique !

Ingénierie des caractéristiques pour le NLP en Python

Preparing Video For Download...