Использование Spacy для обучения NER для извлечения навыков из резюме.Что такое U-entity_name в переходе означает - PullRequest
2 голосов
/ 17 апреля 2019

Я использую обучающую программу NER для извлечения информации о навыках из резюме. Но ошибка

Не удалось найти переход с именем 'U-SKILL' в модели NER

ДАННЫЕ ОБУЧЕНИЯ:

[(u "У меня 2 года опыта работы с Python", {"entity": [(30, 35, "SKILL")]})]

КОД:

other_pipes = [pipe for pipe in nlp.pipe_names if pipe != "ner"]
with nlp.disable_pipes(*other_pipes):
    optimizer = nlp.begin_training()
    for i in range(10):
         random.shuffle(train_data)
         for text, annotations in train_data:
             nlp.update([text], [annotations], sgd=optimizer)```

Error Traceback:
```Traceback (most recent call last):

  File "<ipython-input-1-b5f869eaaf43>", line 1, in <module>
    runfile('/home/abhishek/Desktop/Monster/Resume_Parser/MI_Resume/skills_ner.py', wdir='/home/abhishek/Desktop/Monster/Resume_Parser/MI_Resume')

  File "/usr/lib/python3/dist-packages/spyder/utils/site/sitecustomize.py", line 705, in runfile
    execfile(filename, namespace)

  File "/usr/lib/python3/dist-packages/spyder/utils/site/sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "/home/abhishek/Desktop/Monster/Resume_Parser/MI_Resume/skills_ner.py", line 234, in <module>
    nlp.update([text], [annotations], sgd=optimizer)

  File "/home/abhishek/.local/lib/python3.6/site-packages/spacy/language.py", line 452, in update
    proc.update(docs, golds, sgd=get_grads, losses=losses, **kwargs)

  File "nn_parser.pyx", line 413, in spacy.syntax.nn_parser.Parser.update

  File "nn_parser.pyx", line 516, in spacy.syntax.nn_parser.Parser._init_gold_batch

  File "ner.pyx", line 106, in spacy.syntax.ner.BiluoPushDown.preprocess_gold

  File "ner.pyx", line 165, in spacy.syntax.ner.BiluoPushDown.lookup_transition

KeyError: "[E022] Could not find a transition with the name 'U-SKILL' in the NER model."```

1 Ответ

2 голосов
/ 17 июля 2019

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

for label in entity_types:
    ner.add_label(label.upper())

Ошибка исчезла после того, как я убедился, что все добавленные мои новые метки были написаны в верхнем регистре (то есть «SKILL» вместо «skill»), используя str.upper().

Возможно, вам следует обратиться к https://spacy.io/usage/training#ner, а также к примеру, приведенному при добавлении новых типов сущностей.

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