Lematyzacja (lemmatization) polega na wydobyciu podstawy słowa na podstawie nie tylko samego słowa, ale też jego kontekstu (słów będących obok). Jest to technika dużo bardziej zaawansowana niż stemming.
Przykład na podstawie biblioteki spaCy
import spacy
nlp = spacy.load('pl_core_news_sm')
dokument = nlp(u"Jan zawsze chiał być kominiarzem. Lecz jego rodzice zawsze mieli do tego obiekcje")
def show_lemmas(text):
for token in text:
print(f'{token.text:{12}} {token.lemma_}')
show_lemmas(dokument)Jan Jan
zawsze zawsze
chiał chieć
być być
kominiarzem kominiarz
. .
Lecz lecz
jego on
rodzice rodzic
zawsze zawsze
mieli mieć
do do
tego to
obiekcje obiekcja
Jak widać, lematyzacja radzi sobie bardzo dobrze z sprowadzaniem słów do ich podstawowej formy.
