OSError:在 Python IDE 中运行脚本时无法在 spaCy 中找到模型“en_core_web_sm”

问题描述 投票:0回答:1

我正在尝试在使用 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 的特定配置所致。

python nlp spacy
1个回答
0
投票

您可以在运行时下载模型以确保它存在。为此,您可以将模型的创建包装在如下函数中:


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)
© www.soinside.com 2019 - 2024. All rights reserved.