Как вы используете собственную модель NeuralCoref в Spacy? - PullRequest
2 голосов
/ 16 февраля 2020

Я следовал рекомендациям о том, как обучить модель нейронной привязки с использованием NeuralCoref. Теперь у меня есть модель, но я не могу понять, как использовать модель coref в Spacy.

Следующее, показанное в руководстве, не описывает, как загрузить пользовательскую модель:

# 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 neuralcoref.train.learn --train ./data/train/ --eval ./data/dev/) в Папка кэша NeuralCoref и запустите код выше. Была выдана следующая ошибка:

  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.

1 Ответ

0 голосов
/ 25 февраля 2020

Ваша проблема в msgpack использовании больше, чем в SpaCy. Я предлагаю вам просмотреть Как импортировать текст из формата CoNNL с именованными сущностями в spaCy, вывести сущности с моей моделью и записать их в тот же набор данных (с Python)? , чтобы получить больше ясности о происхождении проблема.

Вполне возможно, что форматы несовместимы между кодом хранения модели и кодом загрузки в тех обстоятельствах, которые у вас есть, но без точной версии SpaCy и кода NeuralCoref, используемого для обучения / хранения модели трудно сказать точно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...