Python 如何在Spacy中使用自定义NeuralRef模型?

Python 如何在Spacy中使用自定义NeuralRef模型?,python,spacy,msgpack,Python,Spacy,Msgpack,我遵循了关于如何使用NeuralRef建模的指导原则。我现在有了一个模型,但不知道如何在Spacy中使用coref模型 手册中所示的以下内容未说明如何加载自定义模型: # Load your usual SpaCy model (one of SpaCy English models) import spacy nlp = spacy.load('custom-danish-spacy-model') # Add neural coref to SpaCy's pipe import neur

我遵循了关于如何使用NeuralRef建模的指导原则。我现在有了一个模型,但不知道如何在Spacy中使用coref模型

手册中所示的以下内容未说明如何加载自定义模型:

# Load your usual SpaCy model (one of SpaCy English models)
import spacy
nlp = spacy.load('custom-danish-spacy-model')

# Add neural coref to SpaCy's pipe
import neuralcoref
neuralcoref.add_to_pipe(nlp)

# You're done. You can now use NeuralCoref as you usually manipulate a SpaCy document annotations.
doc = nlp(u'A sentence in Danish. Another sentence in the same language.')
编辑:我试图将经过训练的模型(通过运行
python-m neuralRef.train.learn--train./data/train/--eval./data/dev/
)放入neuralRef缓存文件夹,并运行上面的代码。给出了以下错误:

  return f(*args, **kwds)
/home/johan/Code/spacy-neuralcoref/venv/lib/python3.6/importlib/_bootstrap.py:219: RuntimeWarning: spacy.vocab.Vocab size changed, may indicate binary incompatibility. Expected 96 from C header, got 104 from PyObject
  return f(*args, **kwds)
Traceback (most recent call last):
  File "custom_model_test.py", line 5, in <module>
    neuralcoref.add_to_pipe(nlp)
  File "/home/johan/Code/spacy-neuralcoref/neuralcoref/neuralcoref/__init__.py", line 42, in add_to_pipe
    coref = NeuralCoref(nlp.vocab, **kwargs)
  File "neuralcoref.pyx", line 554, in neuralcoref.neuralcoref.NeuralCoref.__init__
  File "neuralcoref.pyx", line 947, in neuralcoref.neuralcoref.NeuralCoref.from_disk
  File "/home/johan/Code/spacy-neuralcoref/venv/lib/python3.6/site-packages/thinc/neural/_classes/model.py", line 355, in from_bytes
    data = srsly.msgpack_loads(bytes_data)
  File "/home/johan/Code/spacy-neuralcoref/venv/lib/python3.6/site-packages/srsly/_msgpack_api.py", line 29, in msgpack_loads
    msg = msgpack.loads(data, raw=False, use_list=use_list)
  File "/home/johan/Code/spacy-neuralcoref/venv/lib/python3.6/site-packages/srsly/msgpack/__init__.py", line 60, in unpackb
    return _unpackb(packed, **kwargs)
  File "_unpacker.pyx", line 199, in srsly.msgpack._unpacker.unpackb
srsly.msgpack.exceptions.ExtraData: unpack(b) received extra data.
返回f(*args,**kwds)
/home/johan/Code/spacy-neuralcref/venv/lib/python3.6/importlib/_bootstrap.py:219:RuntimeWarning:spacy.vocab.vocab大小已更改,可能表示二进制不兼容。C头预期为96,PyObject预期为104
返回f(*args,**kwds)
回溯(最近一次呼叫最后一次):
文件“custom_model_test.py”,第5行,在
NeuralRef.向管道添加管道(nlp)
文件“/home/johan/Code/spacy-neuralcref/neuralcref/neuralcref/\uuuuuuuuu-init\uuuuuuuuuuuu.py”,第42行,添加到管道中
coref=NeuralCoref(nlp.vocab,**kwargs)
文件“neuralRef.pyx”,第554行,位于neuralRef.neuralRef.neuralRef.\uu init__
磁盘上的neuralRef.neuralRef.neuralRef.neuralRef.pyx文件第947行
文件“/home/johan/Code/spacy-neuralcref/venv/lib/python3.6/site-packages/thinc/neural/_-classes/model.py”,第355行,以from_字节为单位
data=srsly.msgpack\u加载(字节\u数据)
文件“/home/johan/Code/spacy neuralcref/venv/lib/python3.6/site packages/srsly/_msgpack_api.py”,第29行,在msgpack_加载中
msg=msgpack.load(数据,raw=False,use\u list=use\u list)
文件“/home/johan/Code/spacy-neuralcref/venv/lib/python3.6/site-packages/srsly/msgpack/_-init__.py”,第60行,在unpacb中
退换货(打包,**kwargs)
文件“\u unpacker.pyx”,第199行,在srsly.msgpack.\u unpacker.unpackb中
srsly.msgpack.exceptions.ExtraData:解包(b)收到额外数据。

您的问题更多的是
msgpack
的使用,而不是空间。我建议你重新审视一下,以便更清楚地了解问题的根源


很可能在您拥有的情况下,模型存储代码和加载代码之间的格式不兼容,但没有SpaCy的确切版本和用于训练/存储模型的
NeuralRef
代码,很难说清楚。

您可以通过将SpaCy包降级到2.0.13来重新运行,首先安装cymem==1.31.2,然后安装spacy==2.0.12,安装neural coref时必须记住顺序

!pip安装https://github.com/huggingface/neuralcoref-models/releases/download/en_coref_md-3.0.0/en_coref_md-3.0.0.tar.gz !pip安装cymem==1.31.2空间==2.0.12