所以,我必须承认,我对nlp完全不了解,对nltk也不知道,我只是在尝试使用以前开发人员留下的遗留代码。我需要对词进行词素化,主要是化学和生物技术出版物中的词。我通常使用WordNetLemmatizer。大部分时间都可以。
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
lemmatizer.lemmatize('cats')
归还猫。
但是我尝试
lemmatizer.lemmatize('dehydrogenases')
它返回“脱氢酶”。我希望它返回“脱氢酶”。我该怎么办?
答案 0 :(得分:2)
说明
如果您将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的结构使其成为计算的有用工具 语言学和自然语言处理。
基本上,它并没有将英语词典中的所有单词都定形。因此,虽然它适用于cats一词,但不适用于WordNet词汇数据库中的其他单词。
我希望这会有所帮助。