NLTK中的WordNet引理器:" boss"是什么是正确的引理?

时间:2015-08-20 16:08:17

标签: python nltk wordnet lemmatization

我使用nltk 3.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中是known word,并且rule可以保留ss

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

2 个答案:

答案 0 :(得分:2)

  1. 在检查了为给定字词生成可能分析的code_morphy())后,我发现没有包含规则来保留ss
  2. Bos也是wordnet中的基本形式。
  3. 替代规则:

    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,因为找不到更短的形式。

答案 1 :(得分:0)

这是一个错误。如果一个单词以" s"结尾是名词的单数形式,在进行名词词形还原时,该词应始终作为答案之一返回。老板,损失,苔藓,镜头等都属于这种情况。如果" len"是一个单数名词,也应该返回。但还有一个问题。删除" s"揭示现有的干," bos"在这种情况下,该词干不应该以" s"结尾。 " e"插入拼写规则适用于以" s'," z"," x"," ch"和&#34结尾的单词; sh&#34 ;,会成功 多个" bos" be" boses"。对于这个离群值的复数而言,这似乎更好地猜测了#34; boss"。需要实现的约束是,除非标记为不规则,否则在运行复数拼写规则时,应生成输入表单。因为" bos"没有给老板"当应用拼写规则时,不应将其分析为"老板的单数。