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 pendant quelques epochs
  4. Évaluer les performances du modèle
Traitement du langage naturel avec spaCy

Désactiver les autres composants du pipeline

 

  • Désactiver 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 un epoch.
  • À chaque epoch, mettre à jour légèrement les poids du modèle.
  • Les optimiseurs mettent à jour les poids.
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é à l'inférence.

 

  • Appliquer le modèle NER et stocker les tuples (entité text, étiquette label) :
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...