Вот фрагмент кода, который у меня был, который использовал лемматизатор SpaCy сам по себе. Я не где-то, я могу запустить его, поэтому он может иметь небольшую ошибку или два, если я допустил ошибку редактирования.
Обратите внимание, что в общем случае вам нужно знать upos
для слова, чтобы правильно лемматизировать. Этот код вернет все возможные леммы, но я бы посоветовал изменить его так, чтобы оно соответствовало upos
вашему слову.
class SpacyLemmatizer(object):
def __init__(self, smodel):
import spacy
self.lemmatizer = spacy.load(smodel).vocab.morphology.lemmatizer
# get the lemmas for every upos
def getLemmas(self, entry):
possible_lemmas = set()
for upos in ('NOUN', 'VERB', 'ADJ', 'ADV'):
lemmas = self.lemmatizer(entry, upos, morphology=None)
lemma = lemmas[0] # See morphology.pyx::lemmatize
possible_lemmas.add( lemma )
return possible_lemmas