Techniky normalizace textu

Zpracování přirozeného jazyka (NLP) v Pythonu

Fouad Trad

Machine Learning Engineer

Normalizace textu

  • Normalizace převádí slova do standardního formátu
  • Užitečné při klasifikaci textu, vyhledávání, analýze sentimentu
  • Techniky k prozkoumání:
    • Převod na malá písmena
    • Stémování
    • Lematizace

Obrázek tří osob, které různými způsoby vyjadřují, že rády sledují filmy s dobrou režií: „I enjoy watching movies with great direction!", „I enjoyed watching movies that are well-directed.", „Movies with excellent direction are something I enjoy."

Zpracování přirozeného jazyka (NLP) v Pythonu

Převod na malá písmena

  • Bez normalizace jsou tato slova považována za oddělené tokeny
  • To zavádí modely a zvětšuje slovník
text  = """Data scientists and data 
engineers need DATA"""
lower_text = text.lower()

print(lower_text)
data scientists and data 
engineers need data

Obrázek zmatené osoby stojící před slovy „data", „Data" a „DATA".

Zpracování přirozeného jazyka (NLP) v Pythonu

Použitelnost převodu na malá písmena

Vhodné pro

Úlohy založené na analýze klíčových slov

Obrázek osoby vyhledávající klíčová slova v textu.

Zpracování přirozeného jazyka (NLP) v Pythonu

Použitelnost převodu na malá písmena

Vhodné pro

Úlohy založené na analýze klíčových slov

Obrázek osoby vyhledávající klíčová slova v textu.

Nevhodné pro

Úlohy vyžadující rozlišení slov závislých na velikosti písmen

Obrázek skupiny lidí znázorňující „us" a americké vlajky znázorňující „US".

Zpracování přirozeného jazyka (NLP) v Pythonu

Stémování

  • Redukuje slova na kořen odstraněním přípon
    • running → run
    • reading → read
  • Užitečné pro seskupování podobných variant slov
  • Může vracet neplatná slova
    • organization → organizat

Logo stémování

Zpracování přirozeného jazyka (NLP) v Pythonu

Stémování v kódu

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']
Zpracování přirozeného jazyka (NLP) v Pythonu

Lematizace

  • Redukuje slova na jejich základní tvar
  • Výsledek je vždy platné slovo
    • organizations → organization
  • Vhodné, když je gramatická přesnost zásadní
  • Pomalejší než stémování, ale přesnější

Logo lematizace

Zpracování přirozeného jazyka (NLP) v Pythonu

Lematizace v kódu

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']
Zpracování přirozeného jazyka (NLP) v Pythonu

Stémování

  • Rychlejší
  • Může vracet neplatná slova
  • Vhodné, pokud je prioritou rychlost

Obrázek osoby kácející strom motorovou pilou.

Lematizace

  • Pomalejší
  • Přesnější
  • Vhodné, pokud je prioritou gramatická přesnost

Obrázek osoby pečlivě zastřihující strom, aby zachovala jeho strukturu.

Zpracování přirozeného jazyka (NLP) v Pythonu

Pojďme si procvičit!

Zpracování přirozeného jazyka (NLP) v Pythonu

Preparing Video For Download...