【问题标题】:python spacy TypeError: unpackb() got an unexpected keyword argument 'raw'python spacy TypeError:unpackb()得到了一个意外的关键字参数'raw'
【发布时间】:2018-09-19 04:05:10
【问题描述】:

我正在使用 spacy 进行自然语言处理,并在 jupyter notebook 中使用以下代码。

# Import spacy
import spacy

# Instantiate the English model: nlp
nlp = spacy.load('en')

出现以下错误

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-32-3370ec3212e0> in <module>()
      3 
      4 # Instantiate the English model: nlp
----> 5 nlp = spacy.load('en')
      6 

~\Anaconda3\lib\site-packages\spacy\__init__.py in load(name, **overrides)
     13     if depr_path not in (True, False, None):
     14         deprecation_warning(Warnings.W001.format(path=depr_path))
---> 15     return util.load_model(name, **overrides)
     16 
     17 

~\Anaconda3\lib\site-packages\spacy\util.py in load_model(name, **overrides)
    110     if isinstance(name, basestring_):  # in data dir / shortcut
    111         if name in set([d.name for d in data_path.iterdir()]):
--> 112             return load_model_from_link(name, **overrides)
    113         if is_package(name):  # installed as package
    114             return load_model_from_package(name, **overrides)

~\Anaconda3\lib\site-packages\spacy\util.py in load_model_from_link(name, **overrides)
    127     except AttributeError:
    128         raise IOError(Errors.E051.format(name=name))
--> 129     return cls.load(**overrides)
    130 
    131 

~\Anaconda3\lib\site-packages\spacy\data\en\__init__.py in load(**overrides)
     10 
     11 def load(**overrides):
---> 12     return load_model_from_init_py(__file__, **overrides)

~\Anaconda3\lib\site-packages\spacy\util.py in load_model_from_init_py(init_file, **overrides)
    171     if not model_path.exists():
    172         raise IOError(Errors.E052.format(path=path2str(data_path)))
--> 173     return load_model_from_path(data_path, meta, **overrides)
    174 
    175 

~\Anaconda3\lib\site-packages\spacy\util.py in load_model_from_path(model_path, meta, **overrides)
    154             component = nlp.create_pipe(name, config=config)
    155             nlp.add_pipe(component, name=name)
--> 156     return nlp.from_disk(model_path)
    157 
    158 

~\Anaconda3\lib\site-packages\spacy\language.py in from_disk(self, path, disable)
    651         if not (path / 'vocab').exists():
    652             exclude['vocab'] = True
--> 653         util.from_disk(path, deserializers, exclude)
    654         self._path = path
    655         return self

~\Anaconda3\lib\site-packages\spacy\util.py in from_disk(path, readers, exclude)
    509     for key, reader in readers.items():
    510         if key not in exclude:
--> 511             reader(path / key)
    512     return path
    513 

~\Anaconda3\lib\site-packages\spacy\language.py in <lambda>(p)
    640             ('vocab', lambda p: (
    641                 self.vocab.from_disk(p) and _fix_pretrained_vectors_name(self))),
--> 642             ('tokenizer', lambda p: self.tokenizer.from_disk(p, vocab=False)),
    643         ))
    644         for name, proc in self.pipeline:

tokenizer.pyx in spacy.tokenizer.Tokenizer.from_disk()

tokenizer.pyx in spacy.tokenizer.Tokenizer.from_bytes()

~\Anaconda3\lib\site-packages\spacy\util.py in from_bytes(bytes_data, setters, exclude)
    488 
    489 def from_bytes(bytes_data, setters, exclude):
--> 490     msg = msgpack.loads(bytes_data, raw=False)
    491     for key, setter in setters.items():
    492         if key not in exclude and key in msg:

~\Anaconda3\lib\site-packages\msgpack_numpy.py in unpackb(packed, **kwargs)
    182     object_hook = kwargs.get('object_hook')
    183     kwargs['object_hook'] = functools.partial(decode, chain=object_hook)
--> 184     return _unpackb(packed, **kwargs)
    185 
    186 load = unpack

msgpack/_unpacker.pyx in msgpack._unpacker.unpackb()

TypeError: unpackb() got an unexpected keyword argument 'raw'

总结就是

TypeError: unpackb() got an unexpected keyword argument 'raw'

请注意: 我已经以管理员python -m spacy download en 的身份在anaconda 提示符下正确安装和链接spacy.load('en')。 这是 anaconda 提示符中的结果

(base) C:\WINDOWS\system32>python -m spacy download en
Requirement already satisfied: en_core_web_sm==2.0.0 from https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.0.0/en_core_web_sm-2.0.0.tar.gz#egg=en_core_web_sm==2.0.0 in c:\users\winsu\anaconda3\lib\site-packages (2.0.0)

    Linking successful
    C:\Users\winsu\Anaconda3\lib\site-packages\en_core_web_sm -->
    C:\Users\winsu\Anaconda3\lib\site-packages\spacy\data\en

    You can now load the model via spacy.load('en')

【问题讨论】:

  • 这看起来像是msgpack库的版本冲突,这也是spaCy的一个依赖。尝试运行conda listpip list,看看你是否有msgpack(0.5.6 或更高版本)或msgpack-python(如果存在,请尝试卸载它——这可能是冲突的根源)。
  • 谢谢,效果惊人!

标签: python spacy


【解决方案1】:
pip uninstall msgpack-python
pip install msgpack

请注意:我的提示恰好强调了“regex version(2018.7.11) is incompatible with spacy which want regex==2017.4.5”但是我的 spacy 现在仍然可以正常工作!

顺便说一句,非常感谢@Ines Montani

【讨论】:

    【解决方案2】:

    我在 Windows Box 上使用 Conda Python 3。安装 spacy 安装了 msgpack:

    Local\Continuum\anaconda3>conda list
    # packages in environment at C:\Users\akmm94\AppData\Local\Continuum\anaconda3:
    #
    # Name                    Version                   Build  Channel
    msgpack-python            0.5.1            py36he980bc4_0
    

    我也遇到了同样的错误:

    import spacy
    nlp = spacy.load('en')
    

    错误:

    TypeError: unpackb() got an unexpected keyword argument 'raw'
    

    修复:重新安装 msgpack-python 使用:

    conda install -c anaconda msgpack-python
    

    这个更新的 msgpack-python:

    msgpack-python:  0.5.1-py36he980bc4_0             --> 0.5.6-py36he980bc4_1 anaconda
    

    错误得到了修复!

    【讨论】:

      猜你喜欢
      • 2020-10-13
      • 2016-09-17
      • 2015-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      • 2019-02-04
      • 1970-01-01
      相关资源
      最近更新 更多