Antrenarea unui model spaCy de la zero
spaCy oferă o abordare clară și eficientă pentru a-ți antrena propriile modele. În acest exercițiu, vei antrena un model NER de la zero pe un corpus real (date CORD-19).
Datele de antrenament sunt disponibile în formatul corect, sub numele training_data. Vei folosi o listă predefinită de etichete ("Pathogen", "MedicalCondition", "Medicine") stocată în labels, împreună cu un model englez gol (nlp) care include o componentă NER. Etichetele medicale din labels vor fi adăugate în pipeline-ul NER, după care poți antrena modelul timp de un epoch. Folosește clasa Example (deja importată) pentru a converti datele de antrenament în formatul necesar. Pentru a urmări procesul de antrenament, poți adăuga o listă losses la metoda .update() și analiza pierderea înregistrată.
Acest exercițiu face parte din cursul
Procesarea limbajului natural cu spaCy
Instrucțiuni pentru exercițiu
- Creează un model spaCy gol și adaugă o componentă NER în acesta.
- Dezactivează celelalte componente din pipeline, folosește obiectul
optimizercreat și actualizează ponderile modelului utilizând datele convertite în formatulExample.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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)