为何Python中NLTK词形还原器无法对所有单词生效?
WordNetLemmatizer无法还原"transforming"的原因
问题本质
WordNetLemmatizer的lemmatize()方法默认将输入单词按名词处理。"transforming"是动词的现在分词形式,默认模式下工具无法识别其动词属性,因此无法完成还原。
为何"goes"能正常工作?
"goes"作为动词"go"的第三人称单数形式,WordNet词库中不存在对应的名词条目,工具会自动尝试匹配动词词性,因此能正确还原为"go"。但这种自动适配仅针对部分常见词,不具备通用性。
解决办法
调用lemmatize()时显式指定词性参数pos='v'(表示动词):
# 修正代码中的拼写错误:ntlk → nltk import nltk nltk.download('wordnet') lemmatizer = nltk.WordNetLemmatizer() print(lemmatizer.lemmatize("goes")) # 输出go print(lemmatizer.lemmatize("transforming", pos='v')) # 输出transform
如果需要全自动处理,可以先通过nltk.pos_tag()做词性标注,再将标注结果映射为WordNetLemmatizer支持的pos参数格式,实现无需手动指定词性的词形还原。
内容的提问来源于stack exchange,提问作者TheRi
相关产品推荐
相关产品推荐

