Textrensning

Funktionsutveckling för NLP i Python

Rounak Banik

Data Scientist

Tekniker för textrensning

  • Onödiga blanksteg och escape-sekvenser
  • Interpunktion
  • Specialtecken (siffror, emojis m.m.)
  • Stoppord
Funktionsutveckling för NLP i Python

isalpha()

"Dog".isalpha()
True
"3dogs".isalpha()
False
"12347".isalpha()
False
"!".isalpha()
False
"❤".isalpha()
False
Funktionsutveckling för NLP i Python

En varning

  • Förkortningar: U.S.A, U.K m.fl.
  • Egennamn: word2vec och xto10x.
  • Skriv egna anpassade funktioner (med regex) för mer komplexa fall.
Funktionsutveckling för NLP i Python

Ta bort icke-alfabetiska tecken

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]
Funktionsutveckling för NLP i Python

Ta bort icke-alfabetiska tecken

...
...
# 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'
Funktionsutveckling för NLP i Python

Stoppord

  • Ord som förekommer mycket ofta
  • T.ex. artiklar, hjälpverb, pronomen m.m.
Funktionsutveckling för NLP i Python

Ta bort stoppord med 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. ❤ """
Funktionsutveckling för NLP i Python

Ta bort stoppord med 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'
Funktionsutveckling för NLP i Python

Andra förbehandlingstekniker för text

  • Ta bort HTML/XML-taggar
  • Ersätt accenttecken (t.ex. é)
  • Rätta stavfel
Funktionsutveckling för NLP i Python

En varning

Använd bara de förbehandlingstekniker som är relevanta för din tillämpning.

Funktionsutveckling för NLP i Python

Nu kör vi en övning!

Funktionsutveckling för NLP i Python

Preparing Video For Download...