Curățarea textului

Ingineria caracteristicilor pentru NLP în Python

Rounak Banik

Data Scientist

Tehnici de curățare a textului

  • Spații albe și secvențe de escape inutile
  • Semne de punctuație
  • Caractere speciale (numere, emoji etc.)
  • Cuvinte de oprire (stopwords)
Ingineria caracteristicilor pentru NLP în Python

isalpha()

"Dog".isalpha()
True
"3dogs".isalpha()
False
"12347".isalpha()
False
"!".isalpha()
False
"❤".isalpha()
False
Ingineria caracteristicilor pentru NLP în Python

O notă de precauție

  • Abrevieri: U.S.A, U.K etc.
  • Substantive proprii: word2vec și xto10x.
  • Scrieți o funcție personalizată (cu regex) pentru cazurile mai complexe.
Ingineria caracteristicilor pentru NLP în Python

Eliminarea caracterelor non-alfabetice

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]
Ingineria caracteristicilor pentru NLP în Python

Eliminarea caracterelor non-alfabetice

...
...
# 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'
Ingineria caracteristicilor pentru NLP în Python

Cuvinte de oprire (Stopwords)

  • Cuvinte foarte frecvente
  • Ex.: articole, verbe auxiliare, pronume etc.
Ingineria caracteristicilor pentru NLP în Python

Eliminarea stopwords cu 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. ❤ """
Ingineria caracteristicilor pentru NLP în Python

Eliminarea stopwords cu 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'
Ingineria caracteristicilor pentru NLP în Python

Alte tehnici de preprocesare a textului

  • Eliminarea etichetelor HTML/XML
  • Înlocuirea caracterelor accentuate (ex.: é)
  • Corectarea erorilor ortografice
Ingineria caracteristicilor pentru NLP în Python

O notă de precauție

Utilizați doar tehnicile de preprocesare relevante pentru aplicația dumneavoastră.

Ingineria caracteristicilor pentru NLP în Python

Să exersăm!

Ingineria caracteristicilor pentru NLP în Python

Preparing Video For Download...