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'(动词)等词。

+0

怎么样[POS标记](http://www.nltk.org/api/nltk.tag.html#nltk.tag.pos_tag)? – lenz

你可以得到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 
+0

正如我所提到的,我不想输入'v',因为这是一个巨大的文本,我不能为每个单词做。或者可能有一种方法? – akrama81

+0

对答案进行了更新。希望这对你有用 – Sriram