Прийоми нормалізації тексту

Natural Language Processing (NLP) in Python

Fouad Trad

Machine Learning Engineer

Нормалізація тексту

  • Нормалізація приводить слова до стандартного формату
  • Корисна для класифікації текстів, пошуку, аналізу тональності
  • Розглянемо методи:
    • Переведення в нижній регістр
    • Стемінг
    • Лематизація

Зображення трьох людей, які по-різному кажуть, що їм подобається дивитися фільми з чудовою режисурою: "I enjoy watching movies with great direction!", "I enjoyed watching movies that are well-directed.", "Movies with excellent direction are something I enjoy."

Natural Language Processing (NLP) in Python

Переведення в нижній регістр

  • Без нормалізації ці слова вважатимуться різними токенами
  • Це вводитиме моделі в оману й роздує словник
text  = """Data scientists and data 
engineers need DATA"""
lower_text = text.lower()

print(lower_text)
data scientists and data 
engineers need data

Зображення людини, яка плутає 'data', 'Data' і 'DATA.'

Natural Language Processing (NLP) in Python

Де застосовувати нижній регістр

Корисно для

Завдань, що спираються на аналіз ключових слів

Зображення людини, яка шукає ключові слова в тексті.

Natural Language Processing (NLP) in Python

Де застосовувати нижній регістр

Корисно для

Завдань, що спираються на аналіз ключових слів

Зображення людини, яка шукає ключові слова в тексті.

Не корисно для

Завдань, де для значення важлива різниця регістру

Зображення групи людей як "us" та прапора США як "US."

Natural Language Processing (NLP) in Python

Стемінг

  • Зводить слова до кореня, відрізаючи суфікси
    • running → run
    • reading → read
  • Допомагає групувати подібні форми слова
  • Може давати неіснуючі слова
    • organization → organizat

Stem_logo.png

Natural Language Processing (NLP) in Python

Стемінг у коді

from nltk.stem import PorterStemmer

stemmer = PorterStemmer()
tokens = ['running', 'bats', 'organizations', 'reading']
stemmed = [stemmer.stem(word) for word in tokens]
print(stemmed)
['run', 'bat', 'organizat', 'read']
Natural Language Processing (NLP) in Python

Лематизація

  • Зводить слова до базової форми
  • Гарантує, що результат — чинне слово
    • organizations → organization
  • Корисна, коли важлива граматична коректність
  • Повільніша за стемінг, але точніша

lemmalogo.png

Natural Language Processing (NLP) in Python

Лематизація у коді

from nltk.stem import WordNetLemmatizer

nltk.download('wordnet')
lemmatizer = WordNetLemmatizer()
tokens = ['running', 'bats', 'organizations', 'reading']
lemmatized = [lemmatizer.lemmatize(word) for word in tokens]
print(lemmatized)
['running', 'bat', 'organization', 'reading']
Natural Language Processing (NLP) in Python

Стемінг

  • Швидше
  • Дає слова поза словником
  • Використовуйте, коли важлива швидкість

Зображення людини, яка пиляє дерево бензопилою.

Лематизація

  • Повільніше
  • Точніше
  • Використовуйте, коли потрібна граматична точність

Зображення людини, яка акуратно підрізає дерево, зберігаючи його форму.

Natural Language Processing (NLP) in Python

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

Natural Language Processing (NLP) in Python

Preparing Video For Download...