|
--- |
|
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](https://huggingface.co/belisards/congretimbau), que por sua vez é uma versão do [BERTimbau](https://huggingface.co/neuralmind/bert-base-portuguese-cased) adaptada (com técnicas de pré-treino continuado via modelagem de linguagem mascarada) para ementas de projetos de lei. |
|
|
|
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 |
|
|
|
## 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](https://huggingface.co/datasets/azmina/ementas_congresso). |
|
|
|
| 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 | |
|
| **Accuracy** | | | 0.82 | 168 | |
|
| **Macro Average** | 0.81 | 0.79 | 0.79 | 168 | |
|
| **Weighted Average** | 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](https://huggingface.co/datasets/azmina/ementas_congresso) |
|
|
|
## 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 |