Использование spaCy для обучения аннотаций вундеркиндов, потери = 10012.024369196157.Но прогноз хороший.Это нормально?Если нет, ЧТО НЕПРАВИЛЬНО? - PullRequest
0 голосов
/ 19 сентября 2019

Я использую spaCy для обучения 10000 аннотаций вундеркиндов.Ниже приведены значения, которые я установил в nlp.update ()

drop=0.2

sgd=optimizer

losses=losses

def train_spacy(data, iterations):
    TRAIN_DATA = data
    nlp = spacy.blank('en')
    if 'ner' not in nlp.pipe_names:
        ner = nlp.create_pipe('ner')
        nlp.add_pipe(ner, last=True)

    # 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(iterations):
            random.shuffle(TRAIN_DATA)
            losses = {}
            for text, annotations in tqdm.tqdm(TRAIN_DATA):
                nlp.update(
                    [text],
                    [annotations],
                    drop=0.2,
                    sgd=optimizer,
                    losses=losses)
            print("\n", itn, losses)
    return nlp

В последней итерации я получаю losses=10012.024369196157.

Но когда я использую модель для прогнозирования, просто отлично работает .

Если я увеличу количество итераций, модель переопределится и выдаст ложные негативы.

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

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