我正在尝试对文本中的单词进行词素化。例如,“腌制”应该变成“腌”,“跑”变成“跑”,“葡萄干”变成“葡萄干”等。
我正在使用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