belisards's picture
Update README.md
72a302d verified
metadata
library_name: transformers
license: mit
base_model:
  - neuralmind/bert-large-portuguese-cased
  - belisards/congretimbau
tags:
  - congresso
  - direito
  - politica
metrics:
  - accuracy
  - f1
  - recall
  - precision
model-index:
  - name: modelos
    results: []
language:
  - pt
pipeline_tag: text-classification
datasets:
  - azmina/ementas_congresso

IA Feminista

Este modelo faz classificação temática de projetos de lei relacionados a gênero a partir da ementa disponibilizada pela Câmara e o Senado brasileiro.

Ele foi desenvolvido a partir do ajuste fino (fine-tuning para classificação) do Congretimbau, que por sua vez é uma versão do BERTimbau adaptada (com técnicas de pré-treino continuado via modelagem de linguagem mascarada) para ementas de projetos de lei. O modelo deve ser usado em conjunto com o tokenizador do BERTimbau, conforme o exemplo abaixo.

O modelo atinge as seguintes métricas no conjunto de dados de teste:

  • Perda(loss): 0.5892
  • Acurácia: 0.8155
  • F1: 0.7939
  • Recall: 0.7935
  • Precisão: 0.8063

Mais informações sobre o modelo e o código utilizado podem ser encontrados no repositório do Github.

Descrição do modelo

O modelo tem como objetivo fazer uma classificação multirrótulo a partir da ementa dos projetos de lei.

As ementas são atribuídas a uma das seguintes categorias:

{0: 'economia',
 1: 'genero',
 2: 'dignidade sexual',
 3: 'violencia contra a mulher',
 4: 'politica',
 5: 'direitos sexuais e reprodutivos',
 6: 'direitos sociais',
 7: 'maternidade',
 8: 'feminicidio'}

A definição de cada categoria está descrita na seção "Categorias" abaixo.

Resultados

As métricas reportadas abaixo foram obtidas a partir do conjunto de teste dos dados anotados.

Categoria Precisão Recall F1-Score Suporte
dignidade sexual 0.94 0.88 0.91 17
direitos sexuais e reprodutivos 0.89 0.84 0.86 19
direitos sociais 0.61 0.58 0.59 19
economia 0.78 0.50 0.61 14
feminicidio 0.67 0.80 0.73 5
genero 0.81 1.00 0.90 13
maternidade 0.70 0.74 0.72 19
politica 1.00 0.88 0.93 8
violencia contra a mulher 0.86 0.93 0.89 54
Acurácia 0.82 168
Média (macro) 0.81 0.79 0.79 168
Média ponderada 0.82 0.82 0.81 168

Casos de uso e limitações

O modelo deve ser usado para prover uma classificação temática inicial dos projetos de lei. Os temas atribuídos pelo modelo devem ser validado posteriormente por um profissional responsável. Recomenda-se também considerar a utilização de múltiplas classes, uma vez que a acurácia top-k (para k = 2) do modelo é de 95%.

O código abaixo demonstra um exemplo de utilização do modelo para inferência no conjunto de dados de teste:

from datasets import Dataset, load_dataset
dataset = load_dataset("azmina/ementas_anotadas")

cols = ["text","label"]
fix_columns = {"label_tema":"label"}

test = dataset["test"].to_pandas().rename(columns=fix_columns)[cols]

from transformers import AutoModelForSequenceClassification, AutoConfig, AutoTokenizer
from torch import cuda
import torch

device = 'cuda' if cuda.is_available() else 'cpu'

model_name = "azmina/ia_feminista_tema"
tokenizer = 'neuralmind/bert-base-portuguese-cased'

tokenizer = AutoTokenizer.from_pretrained(tokenizer)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
model.to(device)

config = AutoConfig.from_pretrained(model_name)

class_mapping = config.id2label

def inference(string):
    tokens = tokenizer(string, truncation=True, max_length=512, return_tensors="pt")

    tokens = {key: value.to(device) for key, value in tokens.items()}

    with torch.no_grad():
        outputs = model(**tokens)

    predicted_index = outputs.logits.argmax(dim=-1).item()
    # Retorna a principal classe predita
    predicted_class = class_mapping[predicted_index]
    # Lista as probabilidades de todas as classes
    all_proba = outputs.logits.softmax(dim=-1).tolist()[0]
    # Retorna a probabilidade da classe 
    pred_proba = all_proba[predicted_index]

    return predicted_class, all_proba, pred_proba


test["pred_label"], test["all_proba"], test["pred_proba"] = zip(*test["text"].apply(lambda x: inference(x)))

Entre as limitações do modelo, destaca-se a taxa de acerto variável de acordo com a classe (consulte a tabela acima para mais detalhes). Recomenda-se cautela com casos de uso envolvendo decisões de risco, em especial nas classes com baixa taxa de acerto.

Dados de treinamento e avaliação

Para treinar o modelo, foi utilizado um conjunto de dados anotado pelo Instituto AzMina.

Mais informações e o acesso aos dados podem ser obtidos no seguinte link: https://huggingface.co/azmina/ementas_anotadas

Treinamento

O treinamento (fine-tuning) foi feita em duas etapas.

Na primeira, foi usado o dataset de validação para monitorar o treinamento do modelo, utilizando técnicas de EarlyStopping. A avaliação comparativa com outros modelos foi feita com base no dataset de teste.

Para o treinamento do modelo final, este disponibilizado aqui, o dataset de validação foi incorporado aos dados de treinamento, mantendo o dataset de teste separado para fins de avaliação. Neste caso, não foi utilizado técnicas de EarlyStopping e o ajuste dos hiperparâmetros foi feito manualmente a partir de experimentos monitorados.

Categorias

  • dignidade sexual: refere-se ao reconhecimento do valor de cada indivíduo em relação à sua sexualidade. Isso implica que todas as pessoas têm o direito de viver sua sexualidade de maneira plena e respeitosa, sem discriminação ou violência. A dignidade sexual garante as relações interpessoais sejam baseadas no respeito mútuo e no consentimento. Neste conjunto de projetos de lei, estão incluídos nessa categoria todos os textos que envolvem crimes contra a dignidade sexual, incluindo estupro e atos relacionados, violação sexual mediante fraude, assédio sexual, divulgação de cena de sexo ou de pornografia, tráfico de pessoas e ato obsceno.
  • direitos sexuais e reprodutivos: conjunto de direitos humanos que garantem a todos os indivíduos liberdade e capacidade para decidir sobre sua vida sexual e reprodutiva. Isso inclui o direito à informação, à educação, ao acesso a serviços de saúde reprodutiva, ao aborto, ao planejamento familiar, assistência médica durante a gravidez, parto e pós-parto e ao livre exercício da sexualidade.
  • direitos sociais: aqueles que garantem condições mínimas de vida digna a todos os indivíduos, incluindo acesso à educação, saúde, trabalho, moradia e seguridade social. Esses direitos visam promover a igualdade e a justiça social, assegurando que todos tenham oportunidades iguais para desenvolver seu potencial humano.
  • economia: todos os projetos de lei que envolver questões de produção, distribuição, acumulação e consumo de bens materiais com recorte de gênero. A categoria inclui, por exemplo, a concessão de benefícios financeiros exclusivos para mulheres e pessoas LGBT, participação econômica de mulheres e outros grupos, abordando temas como igualdade salarial, empreendedorismo feminino, inclusão no mercado de trabalho, acesso a crédito e medidas para combater a precarização do trabalho feminino.
  • feminicidio: assassinato de mulheres motivado por questões de gênero, ou seja, por ela ser do sexo feminino. Inclui projetos para prevenir, combater e punir o feminicídio, como políticas para a prevenção, investigação e julgamento de crimes de feminicídio, bem como medidas de apoio e proteção às vítimas de violência de gênero.
  • genero: construções sociais e culturais atribuídas aos papéis masculinos e femininos na sociedade, que influenciam comportamentos, oportunidades e relações entre os sexos. O conceito de gênero é fundamental para entender desigualdades sociais e promover políticas que visem à equidade. Eeste conjunto de projetos de lei, inclui propostas sobre ideologia de gênero, igualdade de gênero, lgbtfobia, orientação sexual e identidade de gênero, propostas para promover a igualdade e eliminar discriminações e preconceitos baseados no gênero, medidas para garantir direitos e oportunidades iguais para mulheres, homens, pessoas trans e não-binárias em áreas como trabalho, educação, saúde, segurança e participação política.
  • maternidade: é a qualidade ou estado de ser mãe, envolvendo não apenas o ato biológico da gestação e do parto, mas também o cuidado, educação e proteção oferecidos à criança. Inclui iniciativas sobre licença-maternidade, saláario maternidade e adoção, proteção no ambiente de trabalho, acesso a creches, políticas de apoio à amamentação e assistência a mães em situação de vulnerabilidade.
  • politica: atividade relacionada à governança do Estado nos níveis minucipal, estadual e federal, e às relações de poder entre indivíduos ou grupos. Envolve projetos de lei voltados à participação política das mulheres e à promoção da equidade de gênero na esfera política. Incluem propostas para aumentar a representatividade feminina em cargos eletivos e de liderança, além de garantir a participação em processos de tomada de decisão e elaboração de políticas públicas.
  • violencia contra a mulher: qualquer ato de violência baseado no gênero que resulte em danos para mulheres. Inclui projetos para prevenir, punir e erradicar a violência contra mulheres em todas as suas formas, incluindo violência física, psicológica, sexual, patrimonial e moral. Envolvem políticas de proteção, atendimento e apoio às vítimas, bem como campanhas educativas e ações para responsabilizar os agressores. Essa categoria inclui todos os tipos de violência contra mulheres, com exceção dos crimes contra a dignidade sexual, que estão agrupados em categoria homônima.

Hiperparâmetros de treinamento

  • learning_rate: 1e-05
  • train_batch_size: 32
  • eval_batch_size: 32
  • seed: 5151
  • optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
  • lr_scheduler_type: linear
  • lr_scheduler_warmup_steps: 50
  • num_epochs: 8

Versões

  • Transformers 4.45.1
  • Pytorch 2.4.1+cu121
  • Datasets 3.0.1
  • Tokenizers 0.20.0