我有一个简单的命令:
python -m spacy download en_core_web
而且我一生都无法弄清楚它的下载位置。我搜索“ en_core_web”,但在任何地方都找不到任何东西。而且我一生都无法弄清楚该搜索什么才能理解该命令的语法。
您甚至叫这条线是什么? python命令行参数?我找不到要搜索的内容以指定下载位置。
请帮助!
答案 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-path
或 model.path
(--model.path
? ) 参数在尝试将模型下载到特定位置时起作用。对我来说,这是一个问题,因为我试图将模型保留在 Docker 映像之外,以便它们可以在不重建映像的情况下持久保存或轻松更新。
我最终找到了以下使用预训练模型的解决方案:
python -m spacy.download en_core_web_lg
)import spacy
和 nlp = spacy.load('en_core_web_lg')
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))