Treinar um modelo de NER existente
Um modelo do spaCy pode não funcionar bem em determinados dados. Uma solução é treinar o modelo com o seu conjunto de dados. Neste exercício, você vai praticar o treinamento de um modelo de NER para melhorar seu desempenho de predição.
Um modelo spaCy en_core_web_sm, acessível como nlp, não consegue prever corretamente house como uma entidade em uma string test.
Dado um training_data, escreva as etapas para atualizar esse modelo enquanto itera pelos dados duas vezes. Os outros pipelines já estão desativados e o optimizer também está pronto para uso. O número de épocas já está definido como 2.
Este exercício faz parte do curso
Processamento de Linguagem Natural com spaCy
Instruções do exercício
- Use o objeto
optimizere, a cada época, embaralhe o conjunto de dados usando o pacoterandome crie um objetoExample. - Atualize o modelo
nlpusando o atributo.updatee defina o argumentosgdpara usar o otimizador.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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])