我正在尝试在使用 spaCy 库的 Python 内置 IDE (IDLE) 中运行 Python 脚本,但遇到了一个问题,它似乎找不到“en_core_web_sm”模型。
这是我看到的错误:
Traceback (most recent call last):
File "C:\Users\Brandon\Desktop\Diss\Latent Dirichlet Allocation - Topic Modelling.py", line 11, in <module>
nlp = spacy.load('en_core_web_sm', disable=['parser', 'ner'])
File "C:\Users\Brandon\AppData\Local\Programs\Python\Python311\Lib\site-packages\spacy\__init__.py", line 51, in load
return util.load_model(
File "C:\Users\Brandon\AppData\Local\Programs\Python\Python311\Lib\site-packages\spacy\util.py", line 472, in load_model
raise IOError(Errors.E050.format(name=name))
OSError: [E050] Can't find model 'en_core_web_sm'. It doesn't seem to be a Python package or a valid path to a data directory.
我已经使用命令 python -m spacy download en_core_web_sm 下载了模型,当我在 Python shell 中使用它时它工作正常,但是当我尝试在 Python IDE 中运行脚本时出现此错误。
我正在使用 Python 3.11.4 和 spaCy 3.6.0。
关于如何解决这个问题有什么想法吗?预先感谢您的帮助!
使用 python -m spacy validate 验证 en_core_web_sm 模型的安装。该模型已成功验证。
检查 PYTHONPATH 和 sys.path 以确保 Python 环境可以访问必要的库。
尝试使用全名“en_core_web_sm”而不是快捷方式“en”加载模型。
尝试在命令行中运行脚本,确保使用安装模型的相同 Python 解释器运行脚本。
推荐使用Anaconda来管理Python环境和包。
建议使用不同的 IDE,例如 PyCharm,并确保使用正确的 Python 解释器。
检查了正在使用的Python和spaCy的版本。
然而,尽管采取了所有这些步骤,问题仍然存在。在 IDLE 或其他 IDE 中运行时,Python 脚本似乎无法找到“en_core_web_sm”模型,即使该模型已安装并且可以在 Python shell 中加载。此问题可能是由于您计算机上的 Python 环境或 IDE 的特定配置所致。
您可以在运行时下载模型以确保它存在。为此,您可以将模型的创建包装在如下函数中:
import spacy
def create_spacy_model() -> spacy.Language:
spacy_model_name = 'en_core_web_sm'
try:
return spacy.load(spacy_model_name)
except OSError:
print(
"Downloading spaCy model for (don't worry, this will only happen once)",
file=sys.stderr
)
from spacy.cli import download
download(spacy_model_name)
return spacy.load(spacy_model_name)