неправильная лемматизация с использованием nltk "python 3.7.4" - PullRequest
1 голос
/ 12 октября 2019

Я использую лемматизатор nltk и каждый раз получаю неправильный результат !!

>>> import nltk
>>> from nltk.stem import WordNetLemmatizer
>>> print(WordNetLemmatizer().lemmatize('loved'))
loved
>>> print(WordNetLemmatizer().lemmatize('creating'))
creating

результат «любимый» / «создающий» .. и это должно быть «любовь» / «создать»

1 Ответ

0 голосов
/ 12 октября 2019

Я думаю, что лемматизатор Wordnet по умолчанию использует часть речи для существительного, поэтому вам нужно сказать, что вы лемматизируете глагол.

print(WordNetLemmatizer().lemmatize('loved', pos='v'))
love
print(WordNetLemmatizer().lemmatize('creating', pos='v'))
create

Любой используемый вами лемматизатор должен знать часть-речи, чтобы он знал, какие правила применять. В то время как два ваших слова всегда являются глаголами, многие слова могут быть обоими. Например, слово «живопись» может быть существительным или глаголом. Лемма глагола «рисовать» (т. Е. Я рисую) - «рисовать». Если вы используете «рисование» в качестве существительного (т. Е. Рисование), «рисование» - это лемма, поскольку это единственная форма существительного.

В целом, NLTK / Wordnet не очень точен, особеннодля слов, не входящих в его список слов. Я был недоволен производительностью доступных лемматизаторов, поэтому я создал свой собственный. См. Lemminflect . На главной странице Readme также есть сравнение нескольких распространенных лемматизаторов, если вы не хотите его использовать.

...