NER com fastaiv2

Olá!
Alguém saberia como implementar no fastai v2 (ou v1) um modelo de NER, como por exemplo o descrito pelo artigo a seguir:

Grato!

1 Curtida

Oi Fabricio. Pesquisei no fórum fastai e os 2 tópicos seguintes falam disso (mas sem resposta direita a sua questão):

No tópico “Fastai transfer learning for NER”, Jeremy respondeu em fevereiro 2019:

It’s not trivial to do, but it’s not a big step either - you’d need to tweak the current classification model to do sequence labeling.

Seria interessante de perguntar para ele de novo… 1 ano depois e a relação do fastai v2.

Mas acho que a solução vem do uso de modelos Transformer como BERT (estado da arte no NLP) pela biblioteca Transformers do Hugging Face, que é certamente a melhor biblioteca hoje para modelos Transformer.

2 boas noticias:

  1. Hugging Face criou no final do ano passado, uma sub-biblioteca chamada Pipeline, que ajuda a usar modelos BERT para tarefas de NLP (classificação, perguntas e respostas, tradução, resumo, NER, etc.) … e há um pipeline NER :slight_smile:
  2. fastai começou a publicar sobre como usar a biblioteca Transformer do Hugging Face com fastai v2 :slight_smile:

It’s all? Não :slight_smile:

Pode baixar modelos Transformer já fine-tuned para a tarefa NER, modelos usando a biblioteca Hugging Face (e para cada modelo, há o código para copiar/colar para usá-lo na produção :slight_smile: ).

Assim, acho que tem tudo para testar fastai v2 na tarefa de NER… mas com um pouquinho de trabalho. Seria ótimo publicar uma postagem + notebooks do seu código com o fastai v2 na tarefa NER :wink:

Notas

  • NER = Named Entity Recognition
  • Criei uma categoria “NLP com o Deep Learning” e coloquei o seu tópico dentro dessa.
1 Curtida

Pessoal,

Ainda não tive contato com o fastaiv2, mas dias atrás fiz o fine tunning de um NER para detecção de entidades em notícias em Português, usando o Hugging Face e como checkpoint o modelo da Neuralmind.

As métricas obtidas até agora com a base que eu anotei foram muito boas:

eval_loss’: 0.05821782116108807, ‘eval_accuracy_score’: 0.9862344436008319, ‘eval_precision’: 0.8630508474576272, ‘eval_recall’: 0.922463768115942, ‘eval_f1’: 0.891768826619965

O código está em https://github.com/SecexSaudeTCU/CoviDATA/tree/master/covidata/noticias/ner/bert

PS: Deverei mover esse código para outro repositório nos próximos dias, e posteriormente documenta-lo maior. Como disse, trata-se de um projeto ainda em andamento e esse código foi implementado faz nem 1 semana.

PS2: Achei o Hugging Face ainda meio baixo nível - creio que o Fast.ai v2 deva ser mais fácil de usar, e recentemente geraram uma nova versão do Spacy com suporte a transformers.

2 Curtidas

Bom dia @monilouise.

Obrigado por publicar seu código para fine-tune um BERT em português para uma tarefa NER :slight_smile:

Seria possível publicar o link para o dataset (de notícias) usado neste tópico ?

Muito obrigado @monilouise :slight_smile:
Mesclei o seu post (com o link para seu dataset em português) no tópico Datasets em português.