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 à partir de zéro un modèle de NER 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 de libellés fournie (« 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 à la chaîne NER, puis vous pourrez entraîner le modèle pour 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 examiner la perte d'entraînement.
Cette activité fait partie du cours
Traitement du langage naturel avec spaCy
Instructions de l’exercice
- Créez un modèle spaCy vierge et ajoutez-y un composant NER.
- Désactivez les autres composants de la chaîne, 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 ce code d’exemple.
# 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)