Python 2.7 NLTK柠檬化错误结果

Python 2.7 NLTK柠檬化错误结果,python-2.7,nltk,lemmatization,Python 2.7,Nltk,Lemmatization,我使用了NLTK,得到了如下错误结果: >>> print lmtzr.lemmatize('coding', 'v') cod 我认为答案是“代码”而不是鱼。 有没有办法解决这个问题,或者其他python库可以做得更好?解决这个问题的一种方法是在wordnet中添加单词'coding'。\u exception\u map: import nltk.stem as stem import nltk.corpus as corpus wordnet = corpus.word

我使用了NLTK,得到了如下错误结果:

>>> print lmtzr.lemmatize('coding', 'v')
cod
我认为答案是“代码”而不是鱼。
有没有办法解决这个问题,或者其他python库可以做得更好?

解决这个问题的一种方法是在
wordnet中添加单词
'coding'
。\u exception\u map

import nltk.stem as stem
import nltk.corpus as corpus
wordnet = corpus.wordnet
wordnet._exception_map['v']['coding'] = ['code']
wnl = stem.WordNetLemmatizer()   

print(wnl.lemmatize('coding', 'v'))
# code
注意,以一个下划线开头的属性被认为是私有的——即它们不是公共接口的一部分。因此,如上所述修改wordnet.\u exception\u map不能保证在nltk的未来版本中起作用。(以上内容适用于NLTK版本3.0.0。通过查看和的源代码可以找到。)

解决此问题的另一种方法是修改
nltk\u data/corpora/wordnet/verb.exc
。该文件的内容如下所示:

cockneyfied cockneyfy
codded cod
codding cod
codified codify
cogged cog
cogging cog
如果你加上

coding code
然后,此异常会自动添加到
wordnet.\u exception\u map


第三个选项,比前两个选项更简单,是说服Wordnet的开发人员将
编码代码
添加到
nltk_data/copora/Wordnet/verb.exc

或者其他python库可以做得更好NTLK是该领域最好的图书馆,至少对于Python来说,你有单词出现的上下文句子吗?看看这个:。可能你需要WSD在柠檬化之前。我认为是
Wordnet
开发人员维护了资源,NLTK正在包装和读取Wordnet文件。除非我们说服普林斯顿Wordnet的人修改他们的文件,否则我们做不了什么=(