Techniki normalizacji tekstu

Przetwarzanie języka naturalnego (NLP) w Pythonie

Fouad Trad

Machine Learning Engineer

Normalizacja tekstu

  • Normalizacja sprowadza słowa do standardowej formy
  • Przydatna w klasyfikacji tekstu, wyszukiwaniu, analizie sentymentu
  • Omawiane techniki:
    • Zamiana na małe litery
    • Stemming
    • Lematyzacja

Trzy osoby wyrażające tę samą myśl o filmach na różne sposoby: "I enjoy watching movies with great direction!", "I enjoyed watching movies that are well-directed.", "Movies with excellent direction are something I enjoy."

Przetwarzanie języka naturalnego (NLP) w Pythonie

Zamiana na małe litery

  • Bez normalizacji słowa te są traktowane jako osobne tokeny
  • To wprowadza modele w błąd i zwiększa rozmiar słownika
text  = """Data scientists and data 
engineers need DATA"""
lower_text = text.lower()

print(lower_text)
data scientists and data 
engineers need data

Osoba zdezorientowana widząc słowa 'data', 'Data' i 'DATA'.

Przetwarzanie języka naturalnego (NLP) w Pythonie

Zastosowanie zamiany na małe litery

Przydatne do

Zadań opartych na analizie słów kluczowych

Osoba szukająca słów kluczowych w tekście.

Przetwarzanie języka naturalnego (NLP) w Pythonie

Zastosowanie zamiany na małe litery

Przydatne do

Zadań opartych na analizie słów kluczowych

Osoba szukająca słów kluczowych w tekście.

Nieprzydatne do

Zadań wymagających rozróżniania słów ze względu na wielkość liter

Grupa osób reprezentująca "us" i flaga USA reprezentująca "US".

Przetwarzanie języka naturalnego (NLP) w Pythonie

Stemming

  • Redukuje słowa do formy podstawowej przez usuwanie sufiksów
    • running → run
    • reading → read
  • Przydatne do grupowania podobnych form wyrazów
  • Może dawać nieistniejące słowa
    • organization → organizat

Logo stemmingu

Przetwarzanie języka naturalnego (NLP) w Pythonie

Stemming w kodzie

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']
Przetwarzanie języka naturalnego (NLP) w Pythonie

Lematyzacja

  • Redukuje słowa do formy bazowej
  • Wynik jest zawsze poprawnym słowem
    • organizations → organization
  • Przydatna, gdy ważna jest poprawność gramatyczna
  • Wolniejsza niż stemming, ale dokładniejsza

Logo lematyzacji

Przetwarzanie języka naturalnego (NLP) w Pythonie

Lematyzacja w kodzie

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']
Przetwarzanie języka naturalnego (NLP) w Pythonie

Stemming

  • Szybszy
  • Może dawać nieistniejące słowa
  • Stosować, gdy ważna jest szybkość

Osoba tnie drzewo piłą łańcuchową.

Lematyzacja

  • Wolniejsza
  • Dokładniejsza
  • Stosować, gdy ważna jest poprawność gramatyczna

Osoba starannie przycinająca drzewo, zachowując jego strukturę.

Przetwarzanie języka naturalnego (NLP) w Pythonie

Czas na ćwiczenia!

Przetwarzanie języka naturalnego (NLP) w Pythonie

Preparing Video For Download...