Лемматизация полностью зависит от той части речевого тега, которую вы используете при получении леммы конкретного слова.
# Define the sentence to be lemmatized
sentence = "The striped bats are hanging on their feet for best"
# Tokenize: Split the sentence into words
word_list = nltk.word_tokenize(sentence)
print(word_list)
#> ['The', 'striped', 'bats', 'are', 'hanging', 'on', 'their', 'feet', 'for', 'best']
# Lemmatize list of words and join
lemmatized_output = ' '.join([lemmatizer.lemmatize(w) for w in word_list])
print(lemmatized_output)
#> The striped bat are hanging on their foot for best
Приведенный выше код представляет собой простой пример того, как использовать лемматизатор wordnet для слов и предложений.
Обратите внимание, что он не сработал.Потому что «are» не преобразуется в «be», а «hang» не преобразуется в «hang», как ожидалось.Это можно исправить, если в качестве второго аргумента lemmatize () указать правильный тег «часть речи» (POS-тег).
Иногда одно и то же слово может иметь несколько лемм в зависимости от значения/ context.
print(lemmatizer.lemmatize("stripes", 'v'))
#> strip
print(lemmatizer.lemmatize("stripes", 'n'))
#> stripe
Для приведенного выше примера () укажите соответствующий тег pos:
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
words = ['Funnier','Funniest','mightiest','tighter','biggify']
for token in words:
print(token + ' --> ' + lemmatizer.lemmatize(token, wordnet.ADJ_SAT))