CommencerCommencer gratuitement

Entraîner un modèle NER existant

Un modèle spaCy peut ne pas bien fonctionner sur un jeu de données donné. Une solution consiste à entraîner le modèle sur vos données. Dans cet exercice, vous allez vous entraîner à entraîner un modèle de NER afin d’améliorer ses performances de prédiction.

Un modèle spaCy en_core_web_sm, accessible via nlp, n’arrive pas à prédire correctement house comme entité dans une chaîne test.

Étant donné un training_data, écrivez les étapes pour mettre à jour ce modèle en itérant deux fois sur les données. Les autres pipelines sont déjà désactivés et l’optimizer est prêt à être utilisé. Le nombre d’époques est déjà fixé à 2.

Cet exercice fait partie du cours

Traitement du langage naturel avec spaCy

Afficher le cours

Instructions

  • Utilisez l’objet optimizer et, pour chaque époque, mélangez le jeu de données avec le package random et créez un objet Example.
  • Mettez à jour le modèle nlp avec l’attribut .update et définissez l’argument sgd pour utiliser l’optimizer.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

nlp = spacy.load("en_core_web_sm")
print("Before training: ", [(ent.text, ent.label_) for ent in nlp(test).ents])
other_pipes = [pipe for pipe in nlp.pipe_names if pipe != 'ner']
nlp.disable_pipes(*other_pipes)
optimizer = nlp.create_optimizer()

# Shuffle training data and the dataset using random package per epoch
for i in range(epochs):
  random.____(training_data)
  for text, ____ in training_data:
    doc = nlp.____(____)
    # Update nlp model after setting sgd argument to optimizer
    example = Example.____(____, ____)
    nlp.____([____], sgd = ____)
print("After training: ", [(ent.text, ent.label_) for ent in nlp(test).ents])
Modifier et exécuter le code