Очистка текста

Конструирование признаков для NLP на Python

Rounak Banik

Data Scientist

Методы очистки текста

  • Лишние пробелы и управляющие символы
  • Знаки пунктуации
  • Специальные символы (числа, эмодзи и др.)
  • Стоп-слова
Конструирование признаков для 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

Стоп-слова

  • Слова, встречающиеся очень часто
  • Например: артикли, глаголы-связки, местоимения и др.
Конструирование признаков для 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...