在NLTK中的WordNet引理器:“老板”的正确引理是什么?

我使用nltk 3.0.4并注意到单词boss和老板的词条是不同的.

from nltk.stem.wordnet import WordNetLemmatizer

wnl = WordNetLemmatizer()

print wnl.lemmatize("boss", "n")
# returns "bos"

print wnl.lemmatize("bosses", "n")
# returns "boss"

从我的观点来看,这是一种奇怪的行为,特别是老板在WordNet中是known word并且有一个rule来保持ss.

有没有人有解释或这只是一个错误?我应该如何处理它?

最佳答案 >在检查生成给定单词的可能分析的
code(_morphy())之后,我发现没有包含规则来保持ss.

> Bos也是wordnet的基本形式.

替代规则:

MORPHOLOGICAL_SUBSTITUTIONS = {
    NOUN: [('s', ''), ('ses', 's'), ('ves', 'f'), ('xes', 'x'),
           ('zes', 'z'), ('ches', 'ch'), ('shes', 'sh'),
           ('men', 'man'), ('ies', 'y')],
    VERB: [('s', ''), ('ies', 'y'), ('es', 'e'), ('es', ''),
           ('ed', 'e'), ('ed', ''), ('ing', 'e'), ('ing', '')],
    ADJ: [('er', ''), ('est', ''), ('er', 'e'), ('est', 'e')],
    ADV: []}

调用print wnl.lemmatize(“boss”,“n”):

由于在应用替换规则时可以找到合适的基本形式(Bos),因此返回它.如果这个没有包含在wordnet中,那么老板的引理就是老板,因为找不到更短的形式.

点赞