CommencezCommencez gratuitement

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

Voir le cours

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 optimizer créé et mettez à jour les poids du modèle en convertissant les données au format Example.

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)
Modifier et exécuter le code