НЛП: Как обучить пространственную модель NER с использованием объектов GoldParse

#pandas #nlp #spacy #named-entity-recognition

Вопрос:

Я пытаюсь обучить пространственную модель NER, используя объекты GoldParse. Вот что я сделал:

Добавление дополнительных меток в модель NER

 add_ents = ['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1'] # sample labels

# Create a pipe if it does not exist
if "ner" not in nlp.pipe_names:
    ner = nlp.create_pipe("ner") 
    nlp.add_pipe(ner)
else:
    ner = nlp.get_pipe("ner")

for e in add_ents:
    ner.add_label(e)
 

Обучение модели NER

 other_pipes = [pipe for pipe in nlp.pipe_names if pipe != "ner"]
model = None # Since we training a fresh model not a saved model
with nlp.disable_pipes(*other_pipes):  # only train ner
    if model is None:
        optimizer = nlp.begin_training()
    else:
        optimizer = nlp.resume_training()
    for i in range(20):
        loss = {}
        nlp.update(X, y,  sgd=optimizer, drop=0.0, losses=loss)
        print("Loss: ", loss)
 

Здесь X-список объектов Doc, а y-список соответствующих объектов GoldParse. Во время выполнения я сталкиваюсь со следующей ошибкой:

 nn_parser.pyx in spacy.syntax.nn_parser.Parser.update()

nn_parser.pyx in spacy.syntax.nn_parser.Parser._init_gold_batch()

ner.pyx in spacy.syntax.ner.BiluoPushDown.preprocess_gold()

ner.pyx in spacy.syntax.ner.BiluoPushDown.lookup_transition()

ValueError: 'A1' is not in list
 

Я попытался найти решение, но не смог найти ничего подходящего. Есть ли способ решить эту проблему?