In [1]:
import spacy
nlp = spacy.load("pl_core_news_sm")
lematyzacja polega na sprowadzeniu słowa do formy bazowej¶
In [2]:
doc = nlp("jem jemy jedzcie")
for t in doc:
print(f"{t.text:<8} => {t.lemma_:<8}")
jem => jeść jemy => jeść jedzcie => jedzcie
tagger do ustalenia znaczenia słowa wykorzystuje jego kontekst. Powyżej słowo „jedzcie” nie zostało umieszczone w kontekście i nie zostało odmienione. Poniżej słowo „jedzcie” zostało poprawnie zinterpretowane i odmienione.
In [3]:
doc = nlp("jedzcie kolację")
for t in doc:
print(f"{t.text:<10} => {t.lemma_:<10}")
jedzcie => jeść kolację => kolacja
Poniżej 2 formy słowa „damy” o odmiennej interpretacji.
In [4]:
doc = nlp("Damy zaproszenie dla młodej damy.")
for t in doc:
print(f"{t.text:<15} => {t.pos_:<8} => {t.lemma_:<8}")
Damy => VERB => dać zaproszenie => NOUN => zaproszenie dla => ADP => dla młodej => ADJ => młody damy => NOUN => dama . => PUNCT => .
Poniżej przykład, gdy wyłączymy moduły „tagger”, „parser”, „ner”. Model dla każdego słowa skopiuje formę tekstową i zamieni ją na małe litery
In [5]:
doc = nlp("Damy zaproszenie dla młodej damy.", disable=["tagger", "parser", "ner"])
for t in doc:
print(f"{t.text:<15} => {t.lemma_:<8}")
Damy => damy zaproszenie => zaproszenie dla => dla młodej => młodej damy => damy . => .
Poniżej przykład, gdy wyłączymy moduły „parser”, „ner”. Moduł tagger konieczny jest do przeprowadzenia analizy morfosyntaktycznej. Model przypisze lemat.
In [6]:
doc = nlp("Damy zaproszenie dla młodej damy.", disable=["parser", "ner"])
for t in doc:
print(f"{t.text:<15} => {t.lemma_:<8}")
Damy => dać zaproszenie => zaproszenie dla => dla młodej => młody damy => dama . => .
Czy jest możliwe dodawanie reguł do lemmatyzatora polskiego modelu spacy?