我使用nltk
3.0.4并注意到词boss
和bosses
的词条不同。
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
。
有没有人有解释或者这只是一个错误?我应该怎么处理呢?
答案 0 :(得分:2)
_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中,则boss
的引理将是boss
,因为找不到更短的形式。
答案 1 :(得分:0)
这是一个错误。如果一个单词以" s"结尾是名词的单数形式,在进行名词词形还原时,该词应始终作为答案之一返回。老板,损失,苔藓,镜头等都属于这种情况。如果" len"是一个单数名词,也应该返回。但还有一个问题。删除" s"揭示现有的干," bos"在这种情况下,该词干不应该以" s"结尾。 " e"插入拼写规则适用于以" s'," z"," x"," ch"和&#34结尾的单词; sh&#34 ;,会成功 多个" bos" be" boses"。对于这个离群值的复数而言,这似乎更好地猜测了#34; boss"。需要实现的约束是,除非标记为不规则,否则在运行复数拼写规则时,应生成输入表单。因为" bos"没有给老板"当应用拼写规则时,不应将其分析为"老板的单数。