Nltk的词网lemmatizer不会引起所有单词
问题描述:
我试图在文本中词汇单词化。例如像“酸菜”应该转向“泡菜”,“跑”到“运行”,“葡萄干”到“葡萄干”等Nltk的词网lemmatizer不会引起所有单词
我使用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
怎么样[POS标记](http://www.nltk.org/api/nltk.tag.html#nltk.tag.pos_tag)? – lenz