Python 3.7.6 (default, Jan 8 2020, 19:59:22)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import spacy
>>> nlp = spacy.load('en_core_web_lg')
Traceback (most recent call last):
File "" , line 1, in <module>
File "/home/share/liuyibing/Anaconda3/envs/py3_torch_v1.4/lib/python3.7/site-packages/spacy/__init__.py", line 21, in load
return util.load_model(name, **overrides)
File "/home/share/liuyibing/Anaconda3/envs/py3_torch_v1.4/lib/python3.7/site-packages/spacy/util.py", line 114, in load_model
return load_model_from_package(name, **overrides)
File "/home/share/liuyibing/Anaconda3/envs/py3_torch_v1.4/lib/python3.7/site-packages/spacy/util.py", line 135, in load_model_from_package
return cls.load(**overrides)
File "/home/share/liuyibing/Anaconda3/envs/py3_torch_v1.4/lib/python3.7/site-packages/en_core_web_lg/__init__.py", line 12, in load
return load_model_from_init_py(__file__, **overrides)
File "/home/share/liuyibing/Anaconda3/envs/py3_torch_v1.4/lib/python3.7/site-packages/spacy/util.py", line 173, in load_model_from_init_py
return load_model_from_path(data_path, meta, **overrides)
File "/home/share/liuyibing/Anaconda3/envs/py3_torch_v1.4/lib/python3.7/site-packages/spacy/util.py", line 156, in load_model_from_path
return nlp.from_disk(model_path)
File "/home/share/liuyibing/Anaconda3/envs/py3_torch_v1.4/lib/python3.7/site-packages/spacy/language.py", line 647, in from_disk
util.from_disk(path, deserializers, exclude)
File "/home/share/liuyibing/Anaconda3/envs/py3_torch_v1.4/lib/python3.7/site-packages/spacy/util.py", line 511, in from_disk
reader(path / key)
File "/home/share/liuyibing/Anaconda3/envs/py3_torch_v1.4/lib/python3.7/site-packages/spacy/language.py", line 643, in <lambda>
deserializers[name] = lambda p, proc=proc: proc.from_disk(p, vocab=False)
File "pipeline.pyx", line 643, in spacy.pipeline.Tagger.from_disk
File "/home/share/liuyibing/Anaconda3/envs/py3_torch_v1.4/lib/python3.7/site-packages/spacy/util.py", line 511, in from_disk
reader(path / key)
File "pipeline.pyx", line 632, in spacy.pipeline.Tagger.from_disk.load_tag_map
File "morphology.pyx", line 56, in spacy.morphology.Morphology.__init__
File "attrs.pyx", line 147, in spacy.attrs.intify_attrs
KeyError: 'PUNCTSIDE_FIN'
出现的原因是由于spacy版本与加载的模型(这里是en_core_web_lg)版本不兼容:具体可以check一下二者的版本,我这里spacy是2.0左右,en_core_web_lg是2.2左右
spacy 2.0.12 py37h8300f20_0
spacy-model-en_core_web_lg 2.2.5 py_0 conda-forge
spacy-model-en_core_web_sm 2.2.5 py_0 conda-forge
上面引用自别人发布的版本情况,来着anaconda。其中spacy安装时没有指定channel为conda-forge,而我的en_core_web_lg都是通过anaconda在conda-forge下载,所以不一致。
解决方法也很简单,先把装好的spacy删了,再用conda指定在conda-forge下进行下载即可确保版本问题:
conda remove spacy
conda install -c conda-forge spacy