Entraîner avec spaCy

Traitement du langage naturel avec spaCy

Azadeh Mobasher

Principal Data Scientist

Étapes d'entraînement

 

  1. Annoter et préparer les données d'entrée
  2. Désactiver les autres composants du pipeline
  3. Entraîner un modèle sur quelques epochs
  4. Évaluer les performances du modèle
Traitement du langage naturel avec spaCy

Désactiver les autres composants du pipeline

 

  • Désactivez tous les composants du pipeline sauf NER :

 

other_pipes = [pipe for pipe in nlp.pipe_names if pipe != 'ner']

nlp.disable_pipes(*other_pipes)
Traitement du langage naturel avec spaCy

Procédure d'entraînement du modèle

  • Parcourir l'ensemble d'entraînement plusieurs fois ; une itération s'appelle une epoch.
  • À chaque epoch, mettre à jour les poids du modèle d'une petite valeur.
  • Les optimizers mettent à jour les poids du modèle.
optimizer = nlp.create_optimizer()
losses = {}
for i in range(epochs):
  random.shuffle(training_data)

for text, annotation in training_data: doc = nlp.make_doc(text) example = Example.from_dict(doc, annotation)
nlp.update([example], sgd = optimizer, losses=losses)
Traitement du langage naturel avec spaCy

Enregistrer et charger un modèle entraîné

 

  • Enregistrer un modèle NER entraîné :
ner = nlp.get_pipe("ner")
ner.to_disk("<ner model name>")
  • Charger le modèle enregistré :
    ner = nlp.create_pipe("ner")
    ner.from_disk("<ner model name>")
    nlp.add_pipe(ner, "<ner model name>")
    
Traitement du langage naturel avec spaCy

Modèle pour l'inférence

 

  • Utiliser un modèle enregistré pour l'inférence.

 

  • Appliquer le modèle NER et stocker des tuples (texte de l'entité, label de l'entité) :
doc = nlp(text)
entities = [(ent.text, ent.label_) for ent in doc.ents]
Traitement du langage naturel avec spaCy

Passons à la pratique !

Traitement du langage naturel avec spaCy

Preparing Video For Download...