Entrenar un modelo de spaCy desde cero
spaCy ofrece una forma muy clara y eficiente de entrenar tus propios modelos. En este ejercicio, entrenarás un modelo de NER desde cero con un corpus real (datos CORD-19).
Los datos de entrenamiento están disponibles en el formato adecuado como training_data. En este ejercicio, usarás una lista dada de etiquetas ("Pathogen", "MedicalCondition", "Medicine") almacenada en labels usando un modelo en blanco de inglés (nlp) con un componente de NER. Las labels médicas previstas se añadirán a la canalización de NER y después podrás entrenar el modelo durante una época. Puedes usar la clase Example (ya importada) para convertir los datos de entrenamiento al formato requerido. Para seguir el entrenamiento del modelo, puedes añadir una lista losses al método .update() y revisar la pérdida de entrenamiento.
Este ejercicio forma parte del curso
Procesamiento del Lenguaje Natural con spaCy
Instrucciones del ejercicio
- Crea un modelo en blanco de spaCy y añade un componente de NER al modelo.
- Desactiva otros componentes de la canalización, usa el objeto
optimizercreado y actualiza los pesos del modelo usando los datos convertidos al formatoExample.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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)