Training con spaCy

Natural Language Processing con spaCy

Azadeh Mobasher

Principal Data Scientist

Fasi di training

 

  1. Annota e prepara i dati di input
  2. Disabilita gli altri componenti della pipeline
  3. Allena un modello per alcune epoch
  4. Valuta le prestazioni del modello
Natural Language Processing con spaCy

Disabilitare gli altri componenti della pipeline

 

  • Disabilita tutti i componenti della pipeline tranne NER:

 

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

nlp.disable_pipes(*other_pipes)
Natural Language Processing con spaCy

Procedura di training del modello

  • Passa più volte sul training set; una iterazione è detta epoch.
  • In ogni epoch, aggiorna di poco i pesi del modello.
  • Gli optimizer aggiornano i pesi del modello.
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)
Natural Language Processing con spaCy

Salvare e caricare un modello addestrato

 

  • Salva un modello NER addestrato:
ner = nlp.get_pipe("ner")
ner.to_disk("<ner model name>")
  • Carica il modello salvato:
    ner = nlp.create_pipe("ner")
    ner.from_disk("<ner model name>")
    nlp.add_pipe(ner, "<ner model name>")
    
Natural Language Processing con spaCy

Modello per l'inferenza

 

  • Usa un modello salvato in inferenza.

 

  • Applica il modello NER e salva le coppie (entity text, entity label):
doc = nlp(text)
entities = [(ent.text, ent.label_) for ent in doc.ents]
Natural Language Processing con spaCy

Esercitiamoci!

Natural Language Processing con spaCy

Preparing Video For Download...