首页 > 解决方案 > Nltk lemmatizers 不识别化学名称的复数形式

问题描述

所以,我必须承认,我完全是 nlp 的菜鸟,我对 nltk 一无所知,我只是想使用以前开发人员留下的遗留代码。我需要词形还原,主要来自化学和生物技术出版物。我通常使用 WordNetLemmatizer。大多数时候它都有效。

from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
lemmatizer.lemmatize('cats')

返回猫。

但后来我尝试

lemmatizer.lemmatize('dehydrogenases')

它返回“脱氢酶”。我希望它返回“脱氢酶”。我怎样才能做到这一点?

标签: pythonnlpnltklemmatization

解决方案


解释

如果nltk作为模块安装,然后使用以下代码初始化 WordNetLemmatizer:

from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()

你可能会得到一个LookupError说:

LookupError: 
**********************************************************************
  Resource wordnet not found.
  Please use the NLTK Downloader to obtain the resource:

  >>> import nltk
  >>> nltk.download('wordnet')

  For more information see: https://www.nltk.org/data.html

  Attempted to load corpora/wordnet.zip/wordnet/

原因

您初始化的词形还原器基于WordNet。引用 WordNet 的文档:

WordNet® 是一个大型的英语词汇数据库。名词、动词、形容词和副词被分组为一组认知同义词(同义词),每个同义词表达一个不同的概念。同义词通过概念语义和词汇关系相互联系。可以使用浏览器导航生成的有意义相关的单词和概念网络。WordNet 也可以免费公开下载。WordNet 的结构使其成为计算语言学和自然语言处理的有用工具。

基本上,它没有英语词典中的所有单词都可以进行词形还原。因此,虽然它适用于词猫,但它可能不适用于不在 WordNet 词汇数据库中的其他词。

我希望这有帮助。


推荐阅读