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
Istruzioni dell'esercizio
- Usa l’oggetto
optimizere, per ogni epoca, mescola il dataset usando il pacchettorandome crea un oggettoExample. - Aggiorna il modello
nlpusando l’attributo.updatee imposta l’argomentosgdper 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])