File size: 11,240 Bytes
69f640b
 
 
cc8fde9
 
e25ef03
69f640b
d4142c5
 
 
a8e4787
 
 
 
 
69f640b
 
 
cc8fde9
 
 
5dc4c1b
 
69f640b
 
5dc4c1b
e399664
 
 
6cf2f96
e399664
0dd6259
 
d4142c5
e25ef03
6872daa
 
e25ef03
69f640b
6cf2f96
 
e25ef03
69f640b
e25ef03
69f640b
d4142c5
 
 
 
 
 
 
 
 
 
 
 
 
 
d17153b
 
d4142c5
 
434fc92
d4142c5
211cb04
d4142c5
 
 
 
 
 
 
 
 
 
72a302d
 
 
d4142c5
e25ef03
69f640b
0dd6259
d4142c5
0dd6259
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d4142c5
0dd6259
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69f640b
e25ef03
69f640b
d4142c5
 
58bfe6d
d4142c5
 
 
 
 
 
69f640b
f798711
69f640b
d17153b
 
 
 
 
 
 
 
 
 
 
 
e399664
69f640b
 
 
 
 
 
 
6872daa
 
69f640b
e399664
69f640b
 
 
 
cc8fde9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
---
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 deve ser usado em conjunto com o tokenizador do [BERTimbau](https://huggingface.co/neuralmind/bert-large-portuguese-cased), 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](https://github.com/institutoazmina/ia-feminista-elas-no-congresso).

## 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      |
| **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](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