我正在使用nltk lemmatizer,每次都会得到错误的结果!
>>> import nltk
>>> from nltk.stem import WordNetLemmatizer
>>> print(WordNetLemmatizer().lemmatize('loved'))
loved
>>> print(WordNetLemmatizer().lemmatize('creating'))
creating
输出是“喜欢” /“正在创建” ..它应该是“爱” /“创建”
答案 0 :(得分:0)
我认为Wordnet的lemmatizer会将词性默认为Noun,因此您需要告诉它您正在对动词进行lemmat。
print(WordNetLemmatizer().lemmatize('loved', pos='v'))
love
print(WordNetLemmatizer().lemmatize('creating', pos='v'))
create
您使用的任何lemmatizer都需要知道词性,以便知道要应用哪些规则。虽然您拥有的两个单词始终是动词,但很多单词都可以都是动词。例如,单词“绘画”可以是名词或动词。动词“绘画”(即我正在绘画)的引理是“绘画”。 如果将“绘画”用作名词(即绘画),则“绘画”是引理,因为它是名词的单数形式。
通常,NLTK / Wordnet并不十分准确,尤其是对于不在其单词列表中的单词。我对可用的lemmatizer的性能不满意,因此我创建了自己的。参见Lemminflect。自述主页面还比较了一些常用的词形修饰符,如果您不想使用的话。