Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 加载带有spacy的自定义模型时出错_Python_Spacy_Msgpack - Fatal编程技术网

Python 加载带有spacy的自定义模型时出错

Python 加载带有spacy的自定义模型时出错,python,spacy,msgpack,Python,Spacy,Msgpack,我正在尝试将一个名为“ru2”的自定义模型加载到spacy(用于不良贷款处理) 可以在那里找到: 问题是当我调用函数时 nlp=spacy.load('ru2') doc=nlp(文本) 我看到了错误 C:\ProgramData\Anaconda3\lib\importlib\_bootstrap.py:205: RuntimeWarning: spacy.tokens.span.Span size changed, may indicate binary incompatibility.

我正在尝试将一个名为“ru2”的自定义模型加载到spacy(用于不良贷款处理)

可以在那里找到:

问题是当我调用函数时

nlp=spacy.load('ru2')
doc=nlp(文本)
我看到了错误

C:\ProgramData\Anaconda3\lib\importlib\_bootstrap.py:205: RuntimeWarning: spacy.tokens.span.Span size changed, may indicate binary incompatibility. Expected 72 from C header, got 80 from PyObject
  return f(*args, **kwds)
Traceback (most recent call last):
  File "C://.../nlp/src/ie/main.py", line 125, in <module>
    main(examp_dict['Poroshenko'])
  File "C://.../nlp/src/ie/main.py", line 92, in main
    nlp = spacy.load('ru2')
  File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\__init__.py", line 27, in load
    return util.load_model(name, **overrides)
  File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\util.py", line 133, in load_model
    return load_model_from_path(Path(name), **overrides)
  File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\util.py", line 173, in load_model_from_path
    return nlp.from_disk(model_path)
  File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\language.py", line 791, in from_disk
    util.from_disk(path, deserializers, exclude)
  File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\util.py", line 630, in from_disk
    reader(path / key)
  File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\language.py", line 781, in <lambda>
    deserializers["tokenizer"] = lambda p: self.tokenizer.from_disk(p, exclude=["vocab"])
  File "tokenizer.pyx", line 391, in spacy.tokenizer.Tokenizer.from_disk
  File "tokenizer.pyx", line 432, in spacy.tokenizer.Tokenizer.from_bytes
  File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\util.py", line 606, in from_bytes
    msg = srsly.msgpack_loads(bytes_data)
  File "C:\ProgramData\Anaconda3\lib\site-packages\srsly\_msgpack_api.py", line 29, in msgpack_loads
    msg = msgpack.loads(data, raw=False, use_list=use_list)
  File "C:\ProgramData\Anaconda3\lib\site-packages\srsly\msgpack\__init__.py", line 60, in unpackb
    return _unpackb(packed, **kwargs)
  File "_unpacker.pyx", line 191, in srsly.msgpack._unpacker.unpackb
TypeError: unhashable type: 'list'
C:\ProgramData\Anaconda3\lib\importlib\\u bootstrap.py:205:RuntimeWarning:spacy.tokens.span.span大小已更改,可能表示二进制不兼容。C头预期为72,PyObject预期为80
返回f(*args,**kwds)
回溯(最近一次呼叫最后一次):
文件“C://…/nlp/src/ie/main.py”,第125行,在
主要(例如“Poroshenko”)
文件“C://…/nlp/src/ie/main.py”,第92行,在main中
nlp=spacy.load('ru2')
文件“C:\ProgramData\Anaconda3\lib\site packages\spacy\\uuuuu init\uuuuuu.py”,第27行,已加载
返回util.load\u模型(名称,**覆盖)
文件“C:\ProgramData\Anaconda3\lib\site packages\spacy\util.py”,第133行,在load\U模型中
从路径(路径(名称),**覆盖)返回加载模型
文件“C:\ProgramData\Anaconda3\lib\site packages\spacy\util.py”,第173行,从\u路径加载\u模型\u
从磁盘返回nlp(模型路径)
文件“C:\ProgramData\Anaconda3\lib\site packages\spacy\language.py”,第791行,从磁盘
util.from_disk(路径、反序列化程序、排除)
文件“C:\ProgramData\Anaconda3\lib\site packages\spacy\util.py”,第630行,从磁盘
读卡器(路径/键)
文件“C:\ProgramData\Anaconda3\lib\site packages\spacy\language.py”,第781行,在
反序列化器[“标记器”]=lambda p:self.tokenizer.from_disk(p,exclude=[“vocab”])
磁盘spacy.tokenizer.tokenizer.from中第391行的文件“tokenizer.pyx”
spacy.tokenizer.tokenizer.from_字节中的文件“tokenizer.pyx”,第432行
文件“C:\ProgramData\Anaconda3\lib\site packages\spacy\util.py”,第606行,以from\U字节表示
msg=srsly.msgpack\u加载(字节\u数据)
文件“C:\ProgramData\Anaconda3\lib\site packages\srsly\\u msgpack\u api.py”,第29行,在msgpack\u加载中
msg=msgpack.load(数据,raw=False,use\u list=use\u list)
文件“C:\ProgramData\Anaconda3\lib\site packages\srsly\msgpack\\uuuu init\uuuuu.py”,第60行,解包
退换货(打包,**kwargs)
文件“_unpacker.pyx”,第191行,在srsly.msgpack._unpacker.unpackb中
TypeError:不可损坏的类型:“列表”
我在互联网上搜索类似的问题:

但这些解决方案中没有一个对我有效

我用

  • msgpack==0.5.6(甚至按照上面链接中的建议降级)
  • 空间==2.1.4

    • 这可能是因为用于生成模型的SpaCy版本号与您安装的SpaCy版本号不同。(我当然不知道,只是为了以防万一才提一下。)

      这里是

      如果您正在培训模型,将其写入磁盘,并使用git对其进行版本控制,那么在Windows环境中加载模型时可能会遇到此错误。之所以会发生这种情况,是因为默认安装的Git for Windows配置为在文件签出期间(提交时相反)自动将Unix样式的行尾字符(LF)转换为Windows样式的行尾字符(CRLF)。虽然这对于文本文件来说基本上是好的,但是写入磁盘的经过训练的模型有一些二进制文件不应该经过这种转换。当他们这样做时,你会得到上面的错误。您可以通过将core.autocrlf设置更改为“false”,或将.gittributes文件]提交到存储库,告诉git哪些文件或文件夹不应进行LF到CRLF转换,并使用类似path/to/spacy/model/**-text的条目来修复此问题。完成上述任一操作后,再次克隆存储库