Очищення тексту

Інженерія ознак для NLP у Python

Rounak Banik

Data Scientist

Прийоми очищення тексту

  • Зайві пробіли та escape-послідовності
  • Розділові знаки
  • Спецсимволи (числа, емодзі тощо)
  • Стоп-слова
Інженерія ознак для NLP у Python

isalpha()

"Dog".isalpha()
True
"3dogs".isalpha()
False
"12347".isalpha()
False
"!".isalpha()
False
"❤".isalpha()
False
Інженерія ознак для NLP у Python

Застереження

  • Скорочення: U.S.A, U.K тощо
  • Власні назви: word2vec і xto10x.
  • Для тонших випадків напишіть власну функцію (з regex).
Інженерія ознак для NLP у Python

Вилучення неалфавітних символів

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]
Інженерія ознак для NLP у Python

Вилучення неалфавітних символів

...
...
# 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'
Інженерія ознак для NLP у Python

Стоп-слова

  • Слова, що трапляються дуже часто
  • Напр., артиклі, форми дієслова be, займенники тощо
Інженерія ознак для NLP у Python

Вилучення стоп-слів у 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. ❤ """
Інженерія ознак для NLP у Python

Вилучення стоп-слів у 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'
Інженерія ознак для NLP у Python

Інші методи попередньої обробки тексту

  • Вилучення HTML/XML-теґів
  • Заміна літер з діакритиками (наприклад, é)
  • Виправлення орфографічних помилок
Інженерія ознак для NLP у Python

Застереження

Застосовуйте лише ті методи попередньої обробки, що доречні для вашого застосунку.

Інженерія ознак для NLP у Python

Давайте потренуємось!

Інженерія ознак для NLP у Python

Preparing Video For Download...