使用 nltk 的词形还原错误 "python 3.7.4"

wrong lemmatizing using nltk "python 3.7.4"

我正在使用 nltk 词形还原器,但每次都得到错误的结果!!

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

输出是'loved'/'creating'..应该是'love'/'create'

我认为 Wordnet 的词形还原器将词性默认为名词,因此您需要告诉它您正在对动词进行词形还原。

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

您使用的任何词形还原器都需要知道词性,以便它知道要应用什么规则。虽然您拥有的两个词始终是动词,但很多词都可以是动词。例如,单词 "painting" 可以是名词或动词。动词"painting"(即.. I am painting)的引理是"paint"。 如果您使用 "painting" 作为名词(即.. A painting),"painting" 是引理,因为它是名词的单数形式。

一般来说,NLTK/Wordnet 不是很准确,尤其是对于不在其单词列表中的单词。我对可用词形还原器的性能不满意,所以我创建了自己的词形还原器。参见 Lemminflect。如果您不想使用那些常用的词形还原器,自述文件主页面也有一些比较。