Как разделить план тренировок на тренировку и тестирование? (Python) - PullRequest
0 голосов
/ 11 июля 2020

Я использую обученный алгоритм Spacy для идентификации названных объектов в тексте. В python у меня есть набор данных, как в примере:

TRAIN_DATA = [
('Estado de Mato Grosso do Sul', {
    'entities': [(0, 28, 'LOC')]
    }),
('Poder Judiciario', {
    'entities': [(0, 16, 'ORG')]
    }), 
('Campo Grande', {
    'entities': [(0, 12, 'LOC')]
    }),
('Exequente: Fundo de Investimento em Direitos Creditérios Multsegmentos NPL', {
    'entities': [(11, 74, 'MISC')]
    }),
('Ipanema VI - Nao Padronizado', {
    'entities': [(0, 10, 'LOC')]
    }),
...

Продолжение набора данных ... После того, как я запустил обучение следующим образом:

# add labels
    for _, annotations in TRAIN_DATA:
        for ent in annotations.get('entities'):
            ner.add_label(ent[2])

# get names of other pipes to disable them during training
    other_pipes = [pipe for pipe in nlp.pipe_names if pipe != 'ner']
    with nlp.disable_pipes(*other_pipes):  # only train NER
        optimizer = nlp.begin_training()
        for itn in range(n_iter):
            random.shuffle(TRAIN_DATA)
            losses = {}
            for text, annotations in tqdm(TRAIN_DATA):
                nlp.update(
                    [text],  # batch of texts
                    [annotations],  # batch of annotations
                    drop=0.5,  # dropout - make it harder to memorise data
                    sgd=optimizer,  # callable to update weights
                    losses=losses)
            print(losses)

# test the trained model
    for text, _ in TRAIN_DATA:
        doc = nlp(text)
        print('Entities', [(ent.text, ent.label_) for ent in doc.ents])

жирный itali c

Я предполагаю, что обучение и тестирование выполняются в одном наборе данных. Это было бы не идеально, я хотел бы поделиться обучением и тестированием моего набора данных. Или создать набор данных только для тестирования, но как я могу использовать тот же алгоритм, обученный ранее? Как я могу сделать один из двух способов?

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