什么样的人会阅读本文:在线安装模块失败,不知如何离线安装,或者离线安装之后依然无法加载
官方在线安装
conda install -c conda-forge spacy
python -m spacy download en //自动安装最合适的英文语料模块
python -m spacy download zh //自动安装最合适的中文语料模块
python -m spacy download [语言缩写] //自动安装最合适的语料模块
python -m spacy download en_core_web_sm //安装指定模块,版本号自动匹配
模块命名
例子:en_core_web_md-2.3.1.tar.gz
例子部位 | 字段 | 含义 |
---|---|---|
en | 语言 | 语言缩写,目前支持da,de,en,es,fr,ja,lt,nb,nl,pl,pt,ro,zh |
core | 模型能力级别(type) | core支持vocabulary、syntax、entities、word vectors,depent仅支持only vocab、syntax、entities,core范围较大,通常用core |
web | 内容方向(genre) | 这个模型是基于什么样的文本训练的 (e.g. web基于web text, news基于 news text) |
md | 大小(size) | 模型大小 (sm, md , lg or trf(3.x.x有)) |
2 | spacy的主版本 | |
3 | 模块的主版本 | |
1 | 模块的次版本 |
离线安装
//其他途径下载好包本地安装
(da38) C:\WINDOWS\system32> pip install D:\ProgramData\bag\zh_core_web_md-2.3.1.tar.gz
//组装好下载地址在线安装也可以,github不翻墙可能有点慢,大多几十到几百M
(da38) C:\WINDOWS\system32> pip install https://github.com/explosion/spacy-models/releases/download/zh_core_web_md-2.3.1/zh_core_web_md-2.3.1.tar.gz
下载地址组装: 加粗部分参考模块命令自行替换
https://github.com/explosion/spacy-models/releases/download/zh_core_web_md-2.3.1/zh_core_web_md-2.3.1.tar.gz
//最新spacy两个版本对应的模块及版本
{
"spacy": {
"3.0.0": {
"zh_core_web_sm": ["3.0.0a0"],
"zh_core_web_md": ["3.0.0a0"],
"zh_core_web_lg": ["3.0.0a0"],
"zh_core_web_trf": ["3.0.0a0"],
"en_core_web_sm": ["3.0.0a0"],
"en_core_web_md": ["3.0.0a0"],
"en_core_web_lg": ["3.0.0a0"],
"en_core_web_trf": ["3.0.0a0"],
"en_vectors_web_lg": ["3.0.0a0"]
},
"2.3.5": {
"zh_core_web_sm": ["2.3.1", "2.3.0"],
"zh_core_web_md": ["2.3.1", "2.3.0"],
"zh_core_web_lg": ["2.3.1", "2.3.0"],
"en_core_web_sm": ["2.3.1", "2.3.0"],
"en_core_web_md": ["2.3.1", "2.3.0"],
"en_core_web_lg": ["2.3.1", "2.3.0"],
"en_trf_bertbaseuncased_lg": ["2.3.0"],
"en_trf_xlnetbasecased_lg": ["2.3.0"],
"en_trf_robertabase_lg": ["2.3.0"],
"en_trf_distilbertbaseuncased_lg": ["2.3.0"],
}
}
测试
import spacy
nlp = spacy.load('zh') //没有叫zh的快捷连接,包名,data目录
doc = nlp('作为语言而言,为世界使用人数最多的语言,目前世界有五分之一人口做为母语。')
print([e for e in doc])
OSError: [E050] Can't find model 'zh'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory.
import spacy
import zh_core_web_md
//可以加载,旧的加载方式,不建议这样用,我遇到zh_core_web_ms用这种方法就加载不了,建立zh软连接却可以
nlp = zh_core_web_md.load()
doc = nlp('作为语言而言,为世界使用人数最多的语言,目前世界有五分之一人口做为母语。')
print([e for e in doc])
out[1]: [作为, 语言, 而言, ,, 为, 世界, 使用, 人数, 最多, 的, 语言, ,, 目前, 世界, 有, 五分之一, 人口, 做为, 母语, 。]
配置软连接
安装之后,目录
D:\ProgramData\Anaconda3\envs\da38\Lib\site-packages\spacy\data
: ls
_init.py_
_pycache_
D:\ProgramData\Anaconda3\envs\da38\Lib\site-packages
: ls core_web
en_core_web_sm
en_core_web_sm-2.3.1.dist-info
zh_core_web_md
zh_core_web_md-2.3.1.dist-info
zh_core_web_sm
zh_core_web_sm-2.3.1.dist-info
.....
建立一个zh_core_web_md的软连接到 xxx\spacy\data 下并命名为zh,后面 spacy.load('zh'),这只是个别名,可以任意
管理员身份运行:
mklink /d D:\Anaconda3\envs\da38\Lib\site-packages\spacy\data\zh D:\Anaconda3\envs\da38\Lib\site-packages\zh_core_web_md
删除软连接
rmdir D:\ProgramData\Anaconda3\envs\da38\Lib\site-packages\spacy\data\zh
spacy\data目录
D:\ProgramData\Anaconda3\envs\da38\Lib\site-packages\spacy\data
λ ls *
_init.py_
_pycache_
en (软连接,如果python -m spacy download en在线安装成功,这个软连接会自动生成)
zh (软连接)
再次测试
import spacy
nlp = spacy.load('zh')
doc = nlp('作为语言而言,为世界使用人数最多的语言,目前世界有五分之一人口做为母语。')
print([e for e in doc])
out[1]: [作为, 语言, 而言, ,, 为, 世界, 使用, 人数, 最多, 的, 语言, ,, 目前, 世界, 有, 五分之一, 人口, 做为, 母语, 。]
在线安装失败原因:不用VPN直接无法建立连接,用VPN有时候远程强制关闭连接,有时候可以下载很慢
- SEO:
ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None))
Max retries exceeded with url: /explosion/spacy-models/master/shortcuts-v2.json
AttributeError: module 'zh_core_web_ms' has no attribute 'load'
ModuleNotFoundError: No module named 'en_core_web_ms'
ModuleNotFoundError: No module named 'zh_core_web_ms'
OSError: [E050] Can't find model 'en'.
OSError: [E050] Can't find model 'zh'.