Treinando com spaCy

Processamento de Linguagem Natural com spaCy

Azadeh Mobasher

Principal Data Scientist

Etapas de treino

 

  1. Anotar e preparar os dados de entrada
  2. Desativar outros componentes do pipeline
  3. Treinar um modelo por algumas épocas
  4. Avaliar o desempenho do modelo
Processamento de Linguagem Natural com spaCy

Desativando outros componentes do pipeline

 

  • Desative todos os componentes do pipeline, exceto NER:

 

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

nlp.disable_pipes(*other_pipes)
Processamento de Linguagem Natural com spaCy

Procedimento de treinamento do modelo

  • Percorra o conjunto de treino várias vezes; uma iteração é uma epoch.
  • Em cada época, atualize os pesos do modelo com um valor pequeno.
  • Otimizadores atualizam os pesos do modelo.
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)
Processamento de Linguagem Natural com spaCy

Salvar e carregar um modelo treinado

 

  • Salvar um modelo NER treinado:
ner = nlp.get_pipe("ner")
ner.to_disk("<ner model name>")
  • Carregar o modelo salvo:
    ner = nlp.create_pipe("ner")
    ner.from_disk("<ner model name>")
    nlp.add_pipe(ner, "<ner model name>")
    
Processamento de Linguagem Natural com spaCy

Modelo para inferência

 

  • Usar um modelo salvo na inferência.

 

  • Aplicar o modelo NER e guardar tuplas de (texto da entidade, rótulo da entidade):
doc = nlp(text)
entities = [(ent.text, ent.label_) for ent in doc.ents]
Processamento de Linguagem Natural com spaCy

Vamos praticar!

Processamento de Linguagem Natural com spaCy

Preparing Video For Download...