Методы нормализации текста

Обработка естественного языка (NLP) на Python

Fouad Trad

Machine Learning Engineer

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

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

Изображение трёх людей, которые по-разному выражают одну мысль — о том, что им нравится смотреть фильмы с хорошей режиссурой

Обработка естественного языка (NLP) на 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»

Обработка естественного языка (NLP) на Python

Применимость приведения к нижнему регистру

Подходит для

Задач, основанных на анализе ключевых слов

Изображение человека, ищущего ключевые слова в тексте.

Обработка естественного языка (NLP) на Python

Применимость приведения к нижнему регистру

Подходит для

Задач, основанных на анализе ключевых слов

Изображение человека, ищущего ключевые слова в тексте.

Не подходит для

Задач, где регистр влияет на смысл слова

Изображение группы людей, обозначающих «us» («мы»), и флага США, обозначающего «US» («США»).

Обработка естественного языка (NLP) на Python

Стемминг

  • Сводит слова к корневой форме путём отсечения суффиксов
    • running → run
    • reading → read
  • Полезен для объединения схожих форм одного слова
  • Может давать несуществующие слова
    • organization → organizat

Stem_logo.png

Обработка естественного языка (NLP) на 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']
Обработка естественного языка (NLP) на Python

Лемматизация

  • Сводит слова к базовой форме
  • Гарантирует, что результат является корректным словом
    • organizations → organization
  • Полезна, когда важна грамматическая точность
  • Медленнее стемминга, но точнее

lemmalogo.png

Обработка естественного языка (NLP) на 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']
Обработка естественного языка (NLP) на Python

Стемминг

  • Быстрее
  • Может давать несловарные слова
  • Использовать, когда важна скорость

Изображение человека, срезающего дерево бензопилой.

Лемматизация

  • Медленнее
  • Точнее
  • Использовать, когда важна грамматическая точность

Изображение человека, аккуратно подрезающего дерево с сохранением его структуры.

Обработка естественного языка (NLP) на Python

Давайте потренируемся!

Обработка естественного языка (NLP) на Python

Preparing Video For Download...