Лучшие пакеты Python (в произвольном порядке) для лемматизации: spacy
, nltk
, gensim
, pattern
, CoreNLP
и TextBlob
. Я предпочитаю реализацию spaCy и gensim (на основе шаблона), потому что они идентифицируют POS-тег слова и автоматически назначают соответствующую лемму. Это дает более уместные леммы, сохраняя значение в неизменном виде.
Если вы планируете использовать nltk или TextBlob, вам нужно позаботиться о том, чтобы вручную найти правильный POS-тег и найти нужную лемму.
Пример лемматизации с spaCy:
# Run below statements in terminal once.
pip install spacy
spacy download en
import spacy
# Initialize spacy 'en' model
nlp = spacy.load('en', disable=['parser', 'ner'])
sentence = "The striped bats are hanging on their feet for best"
# Parse
doc = nlp(sentence)
# Extract the lemma
" ".join([token.lemma_ for token in doc])
#> 'the strip bat be hang on -PRON- foot for good'
Пример лемматизации с Gensim:
from gensim.utils import lemmatize
sentence = "The striped bats were hanging on their feet and ate best fishes"
lemmatized_out = [wd.decode('utf-8').split('/')[0] for wd in lemmatize(sentence)]
#> ['striped', 'bat', 'be', 'hang', 'foot', 'eat', 'best', 'fish']
Приведенные выше примеры были заимствованы из этой лемматизации страницы.