我正在尝试对文本中的单词进行词素化。例如,“腌制”应该变成“腌”,“跑”变成“跑”,“葡萄干”变成“葡萄干”等。

我正在使用nltk的WordNet Lemmatizer,如下所示:

from nltk.stem import WordNetLemmatizer
>>>
>>> lem = WordNetLemmatizer()
>>> print(lem.lemmatize("cats"))
cat
>>> print(lem.lemmatize("pickled"))
pickled
>>> print(lem.lemmatize("ran"))
ran


因此,正如您在'pickled''ran'中看到的那样,输出未达到预期的效果。如何获得这些词的'pickle''run'而不需要为单词指定'v'(动词)等。

最佳答案

通过获取函数中传递lemmatize()'v'而不传递任何内容中最常见的结果,可以获取名词或动词的'n'函数的基本形式。

这不是直接的方法,但是您可以尝试以下代码来获取名词或动词的基本形式:

def most_common(lst):
    return max(set(lst), key=lst.count)
words = ['ran','pickled','cats',"crying","died","raisins","had"]
for word in words:
    checkList=[WordNetLemmatizer().lemmatize(word,'v'),WordNetLemmatizer().lemmatize(word,'n'),WordNetLemmatizer().lemmatize(word,'n')]
    print most_common(checkList)


您得到基本形式:

ran
pickled
cat
cry
died
raisin
had

08-25 00:58