5

我使用nltk3.0.4 并注意到单词的引理bossbosses不同的。

from nltk.stem.wordnet import WordNetLemmatizer

wnl = WordNetLemmatizer()

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

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

从我的角度来看,这是一种奇怪的行为,尤其boss是 WordNet 中的一个已知单词,并且有一个规则要保留ss

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

4

2 回答 2

2
  1. 在检查了为给定单词生成可能分析的代码( _morphy()) 后,我发现没有包含要保留的规则ss
  2. 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 中,则引理boss将是boss因为找不到更短的形式。

于 2015-08-21T09:25:36.770 回答
0

这是一个错误。如果以“s”结尾的单词是名词的单数形式,则在进行名词词形还原时,该单词应始终作为答案之一返回。boss、loss、moss、lens 等就是这种情况。如果“len”是单数名词,也应该返回。但是还有一个额外的问题。当删除“s”显示现有的词干时,在这种情况下为“bos”,该词干不应以“s”结尾。适用于以“s”、“z”、“x”、“ch”和“sh”结尾的单词的“e”插入拼写规则将使“bos”的复数形式为“boses”。当然,这个离群值的复数似乎比“老板”更好。需要实施的约束是词干,除非它被标记为不规则,否则在运行复数拼写规则时应该产生输入形式。由于“bos”在应用拼写规则时没有给出“boss”,因此不应将其分析为“boss”的单数形式。

于 2018-02-21T19:45:11.903 回答