【问题标题】:WordNet lemmatizer in NLTK: what is the correct lemma for "boss"?NLTK 中的 WordNet lemmatizer:“boss”的正确引理是什么?
【发布时间】:2015-11-14 09:17:47
【问题描述】:

我使用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

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

【问题讨论】:

    标签: python nltk wordnet lemmatization


    【解决方案1】:
    1. 在检查了为给定单词生成可能分析的code (_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,因为找不到更短的形式。

    【讨论】:

    • 是的,这是我也找到了bos,如果其中一种形式:print wordnet.synsets("boss", "n")。你觉得呢,应该把ss加到MORPHOLOGICAL_SUBSTITUTIONS上?
    • 也许一开始没有添加它是有原因的,也许没有:) 根据文档,代码改编自pywordnet。也许你在那里找到了线索。最后,您可以随时在nltk github 上提出问题
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-10-06
      • 1970-01-01
      • 2016-02-10
      • 1970-01-01
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2017-01-11
      相关资源
      最近更新 更多