Spacy语言模型在哪里下载?

时间:2019-10-30 00:11:37

标签: python spacy

我有一个简单的命令:

python -m spacy download en_core_web

而且我一生都无法弄清楚它的下载位置。我搜索“ en_core_web”,但在任何地方都找不到任何东西。而且我一生都无法弄清楚该搜索什么才能理解该命令的语法。

您甚至叫这条线是什么? python命令行参数?我找不到要搜索的内容以指定下载位置。

请帮助!

4 个答案:

答案 0 :(得分:2)

我偶然发现了一个相同的问题,并且可以通过将模型类变量用于已加载的spacy模型来找到模型路径。

例如,已在命令行中按如下方式完成了模型下载:
python -m spacy download en_core_web_sm

然后在python shell中:

import spacy
model = spacy. load("en_core_web_sm")
model._path

这将向您显示模型在系统中的安装位置。

如果要下载到其他位置,我相信您可以在命令行中编写以下内容:
python -m spacy.en.download en_core_web_sm --data-path /some/dir

希望有帮助

答案 1 :(得分:2)

我似乎找不到任何证据表明 spacy 关注 $SPACY_DATA_DIR 环境变量,我也无法得到上面的 --data-pathmodel.path (--model.path? ) 参数在尝试将模型下载到特定位置时起作用。对我来说,这是一个问题,因为我试图将模型保留在 Docker 映像之外,以便它们可以在不重建映像的情况下持久保存或轻松更新。

最终找到了以下使用预训练模型的解决方案:

  1. 正常运行下载代码(即 python -m spacy.download en_core_web_lg
  2. 在 Python 中:import spacynlp = spacy.load('en_core_web_lg')
  3. 现在将其保存到您想要的位置:nlp.to_disk('path/to/dir')

您现在可以通过 nlp=spacy.load('path/to/dir') 从本地文件加载它。文档中建议您可以手动下载模型:

<块引用>

您可以将模型数据目录放置在本地文件系统的任何位置。要将它与 spaCy 一起使用,只需通过为数据目录创建快捷链接来为其指定一个名称。 但我无法理解这在实践中意味着什么(已向 spaCy 提交了一个“问题”)。

希望这能帮助其他人尝试做类似的事情。

答案 2 :(得分:0)

那会从自己的仓库中下载语言包。 https://spacy.io您可以从该站点找到更多有关该站点的信息。如果您在下载时遇到问题,请尝试

pip install nltk 

然后

python
>>import nltk
>>nltk.download('punkt')

然后重试spacy下载

答案 3 :(得分:0)

综合上面提出的所有解决方案,为了控制spacy下载位置,以下方法是可能的:

cache_dir=os.getenv("cache_dir", "../../models")
model_path="en_core_web_sm"
try:
    nlp = spacy.load(os.path.join(cache_dir,model_path))
except OSError:
    spacy.cli.download(model_path)
    nlp = spacy.load(model_path)
    nlp.to_disk(os.path.join(cache_dir,model_path))

这样,从第二次执行开始,模型就会在请求的位置下可用

nlp = spacy.load(os.path.join(cache_dir,model_path))