237 60K 25

Legal Bert NER

Legal Bert NER é uma poderosa ferramenta de IA que identifica e categoriza entidades em textos legais em português, otimizando a pesquisa e classificação de documentos jurídicos.

Reconhecimento de Entidades Nomeadas (NER) no Domínio Jurídico em Português

O projeto ner-legal-bert-base-cased-ptbr é um modelo de Reconhecimento de Entidades Nomeadas (NER) no domínio jurídico em Português. Ajustado a partir do modelo dominguesm/legal-bert-base-cased-ptbr, este projeto tem o objetivo de auxiliar a pesquisa em Processamento de Linguagem Natural (NLP) no campo jurídico, direito da computação e aplicações de tecnologia legal.

O modelo identifica as seguintes entidades em textos jurídicos em português:

  • PESSOA
  • ORGANIZACAO
  • LOCAL
  • TEMPO
  • LEGISLACAO
  • JURISPRUDENCIA

Os rótulos foram inspirados pelo conjunto de dados LeNER_br.

Conjunto de Dados de Treinamento

O conjunto de dados do projeto inclui:

  • 971.932 exemplos de diversos documentos jurídicos (conjunto de treinamento)
  • 53.996 exemplos de diversos documentos jurídicos (conjunto de validação)
  • 53.997 exemplos de diversos documentos jurídicos (conjunto de teste)

Os dados foram fornecidos pelo SUPREMO TRIBUNAL FEDERAL BRASILEIRO, de acordo com os termos de uso: LREC 2020.

Utilizando o Modelo

O modelo pode ser utilizado para inferência em produção utilizando a biblioteca transformers do HuggingFace. A seguir está um exemplo de como utilizar o modelo para classificar as entidades em um texto jurídico:

from transformers import AutoModelForTokenClassification, AutoTokenizer
import torch
 
model_name = "dominguesm/ner-legal-bert-base-cased-ptbr"
model = AutoModelForTokenClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
 
input_text = "Acrescento que não há de se falar em violação do artigo 114, § 3º, da Constituição Federal, posto que referido dispositivo revela-se impertinente, tratando da possibilidade de ajuizamento de dissídio coletivo pelo Ministério Público do Trabalho nos casos de greve em atividade essencial."
 
inputs = tokenizer(input_text, max_length=512, truncation=True, return_tensors="pt")
tokens = inputs.tokens()
 
outputs = model(**inputs).logits
predictions = torch.argmax(outputs, dim=2)
 
for token, prediction in zip(tokens, predictions[0].numpy()):
    print((token, model.config.id2label[prediction]))

Procedimento de Treinamento

O modelo foi treinado durante 3 épocas com um tamanho de batch por dispositivo de 64 e uma taxa de aprendizado de 2e-5. Foi utilizado o otimizador AdamW com uma taxa de decaimento de peso de 0.01.

Os resultados do treinamento mostraram que o modelo alcançou uma precisão de 94,39%, um recall de 96,14%, um F1-score de 95,26% e uma acurácia de 98,94%.

Para mais detalhes sobre o procedimento de treinamento e os resultados, consulte o README do projeto aqui.