Trenowanie modelu spaCy od zera
spaCy oferuje przejrzyste i wydajne podejście do trenowania własnych modeli. W tym ćwiczeniu wytrenujemy model NER od zera na rzeczywistym korpusie (dane CORD-19).
Dane treningowe są dostępne w odpowiednim formacie jako training_data. Skorzystasz z podanej listy etykiet ("Pathogen", "MedicalCondition", "Medicine") zapisanej w zmiennej labels, używając pustego modelu języka angielskiego (nlp) z komponentem NER. Docelowe etykiety medyczne zostaną dodane do potoku NER, a następnie model zostanie wytrenowany przez jedną epokę. Możesz użyć wstępnie zaimportowanej klasy Example, aby przekształcić dane treningowe do wymaganego formatu. Aby śledzić postęp trenowania, dodaj listę losses do metody .update() i monitoruj stratę treningową.
To ćwiczenie jest częścią kursu
Przetwarzanie języka naturalnego z użyciem spaCy
Instrukcje do ćwiczenia
- Utwórz pusty model spaCy i dodaj do niego komponent NER.
- Wyłącz pozostałe komponenty potoku, użyj utworzonego obiektu
optimizeri zaktualizuj wagi modelu, korzystając z danych przekształconych do formatuExample.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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)