Ошибка при запуске примера связывания объекта Spacy

Я пробовал пример связывания объектов в пространстве.

Это информация о spaCy в моей системе.

============================== Info about spaCy ==============================

spaCy version    2.2.2
Location         C:\Users\manimaran.p\AppData\Local\Continuum\anaconda3\envs\spacy\lib\site-packages\spacy
Platform         Windows-8.1-6.3.9600-SP0
Python version   3.7.3
Models

Использование этого примера для обучения компоновщика объектов и создание базы знаний для этого example< /а>.

Я могу создать базу знаний с доступным en_core_web_md, это результат того же.

# python "create kb.py" -m en_core_web_md -o pret_kb
Loaded model 'en_core_web_md'

2 kb entities: ['Q2146908', 'Q7381115']
1 kb aliases: ['Russ Cochran']

Saved KB to pret_kb\kb
Saved vocab to pret_kb\vocab

Loading vocab from pret_kb\vocab
Loading KB from pret_kb\kb
2 kb entities: ['Q2146908', 'Q7381115']
1 kb aliases: ['Russ Cochran']

Когда я пытаюсь обучить компоновщик сущностей с помощью базы знаний сверху, я получаю эту ошибку.

# python "entity linker.py" ./pret_kb/kb ./pret_kb/vocab
Created blank 'en' model with vocab from 'pret_kb\vocab'
Loaded Knowledge Base from 'pret_kb\kb'
Traceback (most recent call last):
  File "entity linker.py", line 156, in <module>
    plac.call(main)
  File "C:\Users\manimaran.p\AppData\Local\Continuum\anaconda3\envs\spacy\lib\site-packages\plac_core.py", line 328, in call
    cmd, result = parser.consume(arglist)
  File "C:\Users\manimaran.p\AppData\Local\Continuum\anaconda3\envs\spacy\lib\site-packages\plac_core.py", line 207, in consume
    return cmd, self.func(*(args + varargs + extraopts), **kwargs)
  File "entity linker.py", line 113, in main
    sgd=optimizer,
  File "C:\Users\manimaran.p\AppData\Local\Continuum\anaconda3\envs\spacy\lib\site-packages\spacy\language.py", line 515, in update
    proc.update(docs, golds, sgd=get_grads, losses=losses, **kwargs)
  File "pipes.pyx", line 1219, in spacy.pipeline.pipes.EntityLinker.update
KeyError: (0, 12)

Я следовал инструкциям, указанным здесь. Я использовал en_core_web_md для создания базы знаний, так как у меня нет предварительно обученной модели.

Я не писал никакого пользовательского кода, просто пытаясь запустить этот пример. Может ли кто-нибудь указать мне правильное направление.


person Manimaran Paneerselvam    schedule 26.11.2019    source источник


Ответы (1)


Этот вопрос был задан и дан ответ в следующем выпуске на GitHub spaCy.

Похоже, что скрипт больше не работал после рефакторинга конвейера связывания сущностей, поскольку теперь он ожидает либо статистический компонент, либо компонент NER на основе правил в конвейере.

Новый скрипт добавляет такой EntityRuler в конвейер В качестве примера. то есть,

# Add a custom component to recognize "Russ Cochran" as an entity for the example training data.
# Note that in a realistic application, an actual NER algorithm should be used instead.
ruler = EntityRuler(nlp)
patterns = [{"label": "PERSON", "pattern": [{"LOWER": "russ"}, {"LOWER": "cochran"}]}]
ruler.add_patterns(patterns)
nlp.add_pipe(ruler)

Однако его можно заменить собственной статистической моделью NER.

person John G    schedule 03.01.2020