NLTK WordNetLemmatizer运行报LookupError的解决求助
修复NLTK WordNet词形还原的LookupError问题
问题描述
我编写了一段Python代码用于字符串词形还原:
from nltk.stem.wordnet import WordNetLemmatizer lemmatizer = WordNetLemmatizer() print("better :", lemmatizer.lemmatize("better", pos ="a"))
运行时抛出LookupError,提示找不到wordnet资源,错误信息如下:
Traceback (most recent call last): File "C:\Users\user1\AppData\Local\Programs\Python\Python310\lib\site-packages\nltk\corpus\util.py", line 80, in __load try: root = nltk.data.find('{}/{}\'.format(self.subdir, zip_name)) File "C:\Users\user1\AppData\Local\Programs\Python\Python310\lib\site-packages\nltk\data.py", line 675, in find raise LookupError(resource_not_found) LookupError: ********************************************************************** Resource ←[93mwordnet←[0m not found. Please use the NLTK Downloader to obtain the resource: ←[31m>>> import nltk >>> nltk.download('wordnet') ←[0m Searched in: - 'C:\\Users\\user1/nltk_data' - 'C:\\nltk_data' - 'D:\\nltk_data' - 'E:\\nltk_data' - 'C:\\Users\\user1\\AppData\\Local\\Programs\\Python\\Python310\\nltk_data' - 'C:\\Users\\user1\\AppData\\Local\\Programs\\Python\\Python310\\share\\nltk_data' - 'C:\\Users\\user1\\AppData\\Local\\Programs\\Python\\Python310\\lib\\nltk_data' - 'C:\\Users\\user1\\AppData\\Roaming\\nltk_data' ********************************************************************** During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\user1\Desktop\Tor Browser\sort.py", line 3, in <module> print("better :", lemmatizer.lemmatize("better", pos ="a")) File "C:\Users\user1\AppData\Local\Programs\Python\Python310\lib\site-packages\nltk\stem\wordnet.py", line 40, in lemmatize lemmas = wordnet._morphy(word, pos) File "C:\Users\user1\AppData\Local\Programs\Python\Python310\lib\site-packages\nltk\corpus\util.py", line 116, in __getattr__ self.__load() File "C:\Users\user1\AppData\Local\Programs\Python\Python310\lib\site-packages\nltk\corpus\util.py", line 81, in __load except LookupError: raise e File "C:\Users\user1\AppData\Local\Programs\Python\Python310\lib\site-packages\nltk\corpus\util.py", line 78, in __load root = nltk.data.find('{}/{}\'.format(self.subdir, self.__name)) File "C:\Users\user1\AppData\Local\Programs\Python\Python310\lib\site-packages\nltk\data.py", line 675, in find raise LookupError(resource_not_found) LookupError: ********************************************************************** Resource ←[93mwordnet←[0m not found. Please use the NLTK Downloader to obtain the resource: ←[31m>>> import nltk >>> nltk.download('wordnet') ←[0m Searched in: - 'C:\\Users\\user1/nltk_data' - 'C:\\nltk_data' - 'D:\\nltk_data' - 'E:\\nltk_data' - 'C:\\Users\\user1\\AppData\\Local\\Programs\\Python\\Python310\\nltk_data' - 'C:\\Users\\user1\\AppData\\Local\\Programs\\Python\\Python310\\share\\nltk_data' - 'C:\\Users\\user1\\AppData\\Local\\Programs\\Python\\Python310\\lib\\nltk_data' - 'C:\\Users\\user1\\AppData\\Roaming\\nltk_data' **********************************************************************
我已经执行过import nltk; nltk.download()安装NLTK包,但问题依然存在,如何修复才能让代码正常运行?
解决方案
1. 单独下载WordNet资源
执行以下代码直接指定下载wordnet:
import nltk nltk.download('wordnet')
或者在终端使用命令行下载:
python -m nltk.downloader wordnet
这会确保WordNet语料库被正确安装到NLTK的默认数据路径中。
2. 验证资源路径(可选)
如果仍报错,检查NLTK的默认数据存储路径,确认WordNet是否存在:
import nltk print(nltk.data.path)
查看输出的路径列表,确保wordnet文件夹存在于其中某一个路径下。
3. 替代方案:使用Spacy进行词形还原
如果不想依赖NLTK的WordNet,可以使用Spacy库,它自带词形还原功能:
首先安装依赖:
pip install spacy python -m spacy download en_core_web_sm
然后使用以下代码:
import spacy nlp = spacy.load("en_core_web_sm") doc = nlp("better") print("better :", doc[0].lemma_)
内容的提问来源于stack exchange,提问作者Mostafa Heydar
相关产品推荐
相关产品推荐

