Обучение пользовательских сущностей в SpaCy дает сбой с большим количеством ярлыков * Исправлено * - PullRequest
0 голосов
/ 19 сентября 2018

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

У меня только один канал (нерв), и я добавляю все свои типы сущностей в качестве меткик нему.

Я понял, что добавление большого количества различных меток (~ 219 меток) к нервной трубе приводит к сбою при первом nlp.update (Process finished with exit code -1073740791 (0xC0000409))

I 'm работает под управлением версии Spacy: 2.0.12 на ноутбуке с 16 ГБ ОЗУ в Windows 10 с Python 3.7.Любая идея, почему он падает при первом выполнении nlp.update, чем больше меток я добавляю, и как я могу предотвратить это?Я попытался использовать только ~ 100 ярлыков, и все работает нормально.

Вот мой код:

def __train_model(self, spacy_model, entity_types):
    nlp = spacy.blank("en")

    ner = nlp.create_pipe("ner")
    nlp.add_pipe(ner)

    for entity_type in list(entity_types):
        ner.add_label(entity_type)

    optimizer = nlp.begin_training()

    # Start training
    for i in range(20):
        losses = {}
        index = 0
        random.shuffle(spacy_model)

        for statement, entities in spacy_model:
            nlp.update([statement], [entities], sgd=optimizer, losses=losses, drop=0.5)

    return nlp

spacy_model:

[
    ('Simply put I see no other conclusion than Comcast has actively blocked our Smart TVs from accessing Netflix on purpose.', {'entities': [(42, 49, 'ORGANIZATION:SERVICE_PROVIDER:COMMUNICATIONS'), (75, 80, 'DEVICE:COMMUNICATIONS:TV:FEATURE'), (100, 107, 'ORGANIZATION:SERVICE_PROVIDER:COMMUNICATIONS')]})
    ...
]

РЕДАКТИРОВАТЬ: я пытался на виртуальной машине Ubuntu 18.04 с 24 ГБ оперативной памяти и 2 ядра и обнаружил следующую ошибку:

*** stack smashing detected ***: <unknown> terminated
Aborted (core dumped)

EDIT2: здесь исправлено: https://github.com/explosion/spaCy/issues/2800#issuecomment-425057478

...