Я использую 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
.
Но когда я использую модель для прогнозирования, просто отлично работает .
Если я увеличу количество итераций, модель переопределится и выдаст ложные негативы.
Я уверен, что делаю что-то не так, не уверен, что это такое.Мне может понадобиться изменить вес.Можете ли вы предложить мне, что здесь не так?