--- 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 | | **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