Entraîner un modèle spaCy à partir de zéro
spaCy propose une approche très simple et efficace pour entraîner vos propres modèles. Dans cet exercice, vous allez entraîner un modèle de NER à partir de zéro sur un corpus réel (données CORD-19).
Les données d’entraînement sont déjà au bon format dans training_data. Vous utiliserez une liste donnée de labels ("Pathogen", "MedicalCondition", "Medicine") stockée dans labels avec un modèle anglais vierge (nlp) contenant un composant NER. Les labels médicaux prévus seront ajoutés au pipeline NER, puis vous pourrez entraîner le modèle pendant une époque. Vous pouvez utiliser la classe Example pré-importée pour convertir les données d’entraînement au format requis. Pour suivre l’entraînement du modèle, vous pouvez ajouter une liste losses à la méthode .update() et consulter la fonction de perte d’entraînement.
Cet exercice fait partie du cours
Traitement du langage naturel avec spaCy
Instructions
- Créez un modèle spaCy vierge et ajoutez un composant NER au modèle.
- Désactivez les autres composants du pipeline, utilisez l’objet
optimizercréé et mettez à jour les poids du modèle en convertissant les données au formatExample.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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)