Addestrare un modello spaCy da zero
spaCy offre un approccio molto pulito ed efficiente per addestrare i tuoi modelli. In questo esercizio, addestrerai da zero un modello NER su un corpus reale (dati CORD-19).
I dati di training sono già disponibili nel formato corretto come training_data. In questo esercizio, userai un elenco di etichette fornito ("Pathogen", "MedicalCondition", "Medicine") salvato in labels, utilizzando un modello inglese vuoto (nlp) con un componente NER. Le labels mediche previste verranno aggiunte alla pipeline NER e poi potrai addestrare il modello per un’epoca. Puoi usare la classe Example (già importata) per convertire i dati di training nel formato richiesto. Per monitorare l’addestramento del modello, puoi passare una lista losses al metodo .update() e verificare la loss di training.
Questo esercizio fa parte del corso
Natural Language Processing con spaCy
Istruzioni dell'esercizio
- Crea un modello spaCy vuoto e aggiungi un componente NER al modello.
- Disabilita gli altri componenti della pipeline, usa l’oggetto
optimizercreato e aggiorna i pesi del modello usando i dati convertiti nel formatoExample.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Load a blank English model, add NER component, add given labels to the ner pipeline
nlp = spacy.____("____")
ner = nlp.____("ner")
for ent in labels:
ner.add_label(ent)
# Disable other pipeline components, complete training loop and run training loop
other_pipes = [____ for pipe in nlp.____ if ____ != "____"]
nlp.disable_pipes(*____)
losses = {}
optimizer = nlp.begin_training()
for text, annotation in training_data:
doc = nlp.____(text)
example = Example.____(doc, annotation)
nlp.____([example], sgd=____, losses=losses)
print(losses)