1

我使用了 NLTK 并得到了这样的错误结果:

>>> print lmtzr.lemmatize('coding', 'v')
cod

我认为答案是“代码”而不是鱼。有没有办法解决这个问题或其他 python Lib 可以做得更好?

4

1 回答 1

1

解决此问题的一种方法是将单词添加'coding'wordnet._exception_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._exception_map,不能保证在未来版本的 nltk 中进行上述修改。(以上适用于 NLTK 版本 3.0.0。它是通过查看和的源代码找到的WordNetLemmatizer.lemmatizewordnet._morphy

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

cockneyfied cockneyfy
codded cod
codding cod
codified codify
cogged cog
cogging cog

如果你添加

coding code

然后这个异常会wordnet._exception_map自动为你添加。

第三种选择,比前两种更简单,是说服 Wordnet 的开发人员添加coding codenltk_data/copora/wordnet/verb.exc.

于 2015-10-20T12:42:26.523 回答