IniziaInizia gratis

Allena un modello NER esistente

Un modello spaCy può non funzionare bene su determinati dati. Una soluzione è allenare il modello sui nostri dati. In questo esercizio, metterai in pratica l’addestramento di un modello NER per migliorarne le prestazioni di previsione.

È fornito un modello spaCy en_core_web_sm accessibile come nlp, che non riesce a prevedere correttamente house come entità in una stringa di test.

Dato un training_data, scrivi i passaggi per aggiornare questo modello iterando sui dati due volte. Le altre pipeline sono già disabilitate e optimizer è pronto per essere utilizzato. Il numero di epoche è già impostato a 2.

Questo esercizio fa parte del corso

Natural Language Processing con spaCy

Visualizza il corso

Istruzioni dell'esercizio

  • Usa l’oggetto optimizer e, per ogni epoca, mescola il dataset usando il pacchetto random e crea un oggetto Example.
  • Aggiorna il modello nlp usando l’attributo .update e imposta l’argomento sgd per utilizzare l’optimizer.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

nlp = spacy.load("en_core_web_sm")
print("Before training: ", [(ent.text, ent.label_) for ent in nlp(test).ents])
other_pipes = [pipe for pipe in nlp.pipe_names if pipe != 'ner']
nlp.disable_pipes(*other_pipes)
optimizer = nlp.create_optimizer()

# Shuffle training data and the dataset using random package per epoch
for i in range(epochs):
  random.____(training_data)
  for text, ____ in training_data:
    doc = nlp.____(____)
    # Update nlp model after setting sgd argument to optimizer
    example = Example.____(____, ____)
    nlp.____([____], sgd = ____)
print("After training: ", [(ent.text, ent.label_) for ent in nlp(test).ents])
Modifica ed esegui il codice