CoolFace
Modelpublic

Veronyka/radar-legislativo-lgbtqia

sourceHugging Facemitupdated 1mo agoView on Hugging Face
0likes
Model Card

🏳️‍🌈⚖️ Radar Legislativo LGBTQIA+

Modelo de Classificação de Projetos de Lei por Ensemble Híbrido

Sistema de análise automática de Projetos de Lei relacionados a direitos LGBTQIA+ no Brasil, utilizando Ensemble Híbrido que combina múltiplos modelos e heurísticas para classificar PLs como favoráveis ou desfavoráveis aos direitos da comunidade LGBTQIA+.

📌 Estado deste repositório

  • —Este repositório funciona como referência do ensemble legislativo (metodologia, pesos, documentação e citação).
  • —O Space ativo em produção é: https://huggingface.co/spaces/Veronyka/radar-legislativo-lgbtqia
  • —O componente principal do ensemble é o modelo https://huggingface.co/Veronyka/tybyria-v2.2 (junto de AzMina + regras/heurísticas no código do app).
  • —Para uso prático da ferramenta, prefira sempre o Space v2.1.

🎯 Objetivo

Identificar automaticamente se Projetos de Lei (PLs) propostos no Congresso Nacional, Assembleias Legislativas e Câmaras Municipais são:

  • —✅ FAVORÁVEIS: Ampliam ou protegem direitos LGBTQIA+
  • —❌ DESFAVORÁVEIS: Restringem ou ameaçam direitos LGBTQIA+
  • —⚠️ REVISÃO NECESSÁRIA: Requerem análise humana detalhada

🔧 Arquitetura: Ensemble Híbrido

Componentes

O sistema combina 4 componentes independentes com pesos otimizados:

1. TybyrIA v2.2 (20% do peso)
  • —Modelo: `Veronyka/tybyria-v2.2` (TybyrIA v2.2)
  • —Função: Detecção de discurso de ódio
  • —Performance: threshold 0.30 — métricas oficiais no card do modelo
  • —Base: 1.891 comentários de redes sociais anotados manualmente
  • —Uso: Identifica linguagem ofensiva e discriminatória
2. AzMina/QuiterIA (15% do peso)
  • —Modelo: `azmina/ia-feminista-bert-posicao`
  • —Função: Análise feminista de PLs
  • —Uso: Proxy para direitos LGBTQIA+ (perspectiva interseccional)
  • —Nota: Modelo treinado para análise de PLs relacionadas a direitos de mulheres
3. Keywords LGBTQIA+ (35% do peso)
  • —40+ termos específicos relacionados a LGBTQIA+
  • —Categorias:
  • —Identidades: lgbt, trans, bissexual, não-binário, etc.
  • —Direitos: casamento igualitário, adoção homoafetiva, nome social
  • —Discriminação: homofobia, transfobia, terapia de conversão
  • —Contextuais: ideologia de gênero, sexo biológico, família tradicional
4. Padrões Legislativos (30% do peso)
  • —Heurísticas especializadas para detectar:
  • —Restrições a espaços (banheiros, vestiários)
  • —Proibições em eventos (paradas, manifestações)
  • —Definições biológicas excludentes
  • —Linguagem discriminatória em contexto legislativo
  • —Padrões de alta prioridade: PLs que explicitamente proíbem ou restringem

Pesos Otimizados

python
pesos = {
    'radar': 0.20,      # Detecção de ódio
    'azmina': 0.15,     # Análise feminista (proxy)
    'keywords': 0.35,   # Termos LGBTQIA+ (CRÍTICO em legislação)
    'padroes': 0.30     # Padrões legislativos (CRÍTICO)
}

Nota: Se o modelo AzMina falhar ao carregar, os pesos são redistribuídos automaticamente (keywords: 40%, padrões: 40%).

📊 Classificação

Thresholds

  • —Score ≥ 0.50: ❌ DESFAVORÁVEL
  • —0.30 ≤ Score < 0.50: ⚠️ REVISÃO NECESSÁRIA
  • —Score < 0.30: ✅ FAVORÁVEL

Exemplo de Output

json
{
  "classificacao": "DESFAVORÁVEL",
  "score_final": 0.67,
  "sinais": {
    "radar": 0.42,
    "azmina": 0.58,
    "keywords": 0.85,
    "padroes": 0.95
  },
  "explicacao": "Score alto em padrões legislativos restritivos"
}

🚀 Como Usar

Via Hugging Face Space (Recomendado)

python
# Acesse diretamente o Space:
# https://huggingface.co/spaces/Veronyka/radar-legislativo-lgbtqia

Via Python (Código Completo)

python
from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
import re

# 1. Carregar TybyrIA v2.2
radar = pipeline(
    "text-classification",
    model="Veronyka/tybyria-v2.2",
    device=-1  # CPU
)

# 2. Carregar AzMina (com tokenizer explícito)
tokenizer = AutoTokenizer.from_pretrained("neuralmind/bert-base-portuguese-cased")
azmina_model = AutoModelForSequenceClassification.from_pretrained("azmina/ia-feminista-bert-posicao")
azmina = pipeline(
    "text-classification",
    model=azmina_model,
    tokenizer=tokenizer,
    device=-1
)

# 3. Keywords e Padrões (simplificado)
KEYWORDS_DESFAVORAVEIS = [
    r"proíbe.*gênero", r"ideologia de gênero", r"sexo biológico",
    r"terapia.*conversão", r"família.*tradicional"
]

PADROES_RESTRITIVOS = [
    r"(proíbe|veda).*(uso|exibição).*(símbolo|símbolos).*religios.*(parada|lgbt)",
    r"(impede|proíbe).*(menor|criança).*(evento|parada).*(lgbt|comunidade)"
]

def classificar(ementa: str):
    # TybyrIA v2.1
    radar_result = radar(ementa, truncation=True, max_length=256)
    # TybyrIA retorna labels 'hate' / 'not hate' (minúsculas — ver id2label no config.json)
    score_radar = radar_result[0]['score'] if radar_result[0]['label'] == 'hate' else 1 - radar_result[0]['score']

    # AzMina
    azmina_result = azmina(ementa, truncation=True, max_length=256)
    # Confira o id2label do modelo AzMina: os labels retornados são '0'/'1'
    score_azmina = 1 - azmina_result[0]['score'] if azmina_result[0]['label'] == '1' else azmina_result[0]['score']
    
    # Keywords
    kw_desfav = sum(1 for kw in KEYWORDS_DESFAVORAVEIS if re.search(kw, ementa.lower(), re.IGNORECASE))
    score_keywords = min(kw_desfav / 5, 1.0)  # Normalizado
    
    # Padrões
    matches = sum(1 for padrao in PADROES_RESTRITIVOS if re.search(padrao, ementa.lower(), re.IGNORECASE))
    score_padroes = 0.99 if matches > 0 else 0.0
    
    # Ensemble
    score_final = (
        0.20 * score_radar +
        0.15 * score_azmina +
        0.35 * score_keywords +
        0.30 * score_padroes
    )
    
    # Classificação
    if score_final >= 0.5:
        return "DESFAVORÁVEL", score_final
    elif score_final >= 0.3:
        return "REVISÃO", score_final
    else:
        return "FAVORÁVEL", score_final

# Exemplo de uso
ementa = "Proíbe o uso de símbolos religiosos em paradas LGBTQIA+"
classificacao, score = classificar(ementa)
print(f"Classificação: {classificacao} (Score: {score:.2%})")
# Output: Classificação: DESFAVORÁVEL (Score: 67%)

📚 Datasets

Base de Treinamento (TybyrIA v2.1)

  • —Dataset: `Veronyka/base-dados-odio-lgbtqia`
  • —Registros: 12.102 comentários de redes sociais
  • —Plataformas: Instagram, TikTok, YouTube
  • —Anotação: 1.891 comentários anotados manualmente em 33 categorias de ódio

PLs Testadas (Validação Manual)

  • —40 PLs anotadas manualmente
  • —Período: 2006-2025
  • —Fontes: Câmara dos Deputados, Senado Federal
  • —Categorias: Favoráveis (19), Desfavoráveis (21)

📈 Performance

Métricas em re-validação

⚠️ Nota (19/07/2026): as métricas anteriormente publicadas neste card foram removidas por não serem reproduzíveis; benchmark versionado será publicado. Até lá, trate as classificações do ensemble como triagem preliminar sujeita a revisão humana.

Exemplos de Acerto

✅ PL 5034/2020 - Classificado: FAVORÁVEL (Score: 18.2%)

  • —"Equipara terapias de conversão à tortura"
  • —Real: Favorável

❌ PL 106/2023 - Classificado: DESFAVORÁVEL (Score: 67.3%)

  • —"Proíbe uso de símbolos religiosos em paradas LGBTQIA+"
  • —Real: Desfavorável

⚠️ Limitações e Avisos

1. Requer Revisão Humana

  • —Classificações são sugestões, não decisões definitivas
  • —Sempre revise manualmente o contexto legislativo completo
  • —Use como ferramenta de apoio, não automação total

2. Contexto Limitado

  • —Não considera histórico completo de tramitação
  • —Não analisa emendas e substitutivos
  • —Não avalia posicionamento de autores

3. Modelos Não Específicos

  • —TybyrIA v2.1: Treinado em redes sociais (não legislação)
  • —AzMina: Focado em direitos de mulheres (proxy para LGBTQIA+)
  • —Falsos Positivos: Linguagem técnica pode gerar alertas

4. Cobertura Geográfica

  • —Otimizado para PLs do Brasil
  • —Pode funcionar em outros países lusófonos, mas não testado

🔄 Fontes de Dados

O sistema busca automaticamente em:

  • —✅ Câmara dos Deputados (API oficial)
  • —✅ Senado Federal (API oficial)
  • —✅ ALESP (Assembleia Legislativa de São Paulo)
  • —✅ Câmara Municipal de São Paulo

🎯 Casos de Uso

🏳️‍🌈 Ativistas LGBTQIA+

  • —Monitorar PLs desfavoráveis em tramitação
  • —Identificar ameaças aos direitos conquistados
  • —Mobilizar comunidade contra PLs prejudiciais

📚 Pesquisadores

  • —Analisar tendências legislativas
  • —Mapear posicionamentos de parlamentares
  • —Estudar evolução de direitos LGBTQIA+

📰 Jornalistas

  • —Investigar PLs em tramitação
  • —Identificar pautas relevantes
  • —Contextualizar debates legislativos

🏢 ONGs e Coletivos

  • —Acompanhar agenda legislativa
  • —Planejar ações de advocacy
  • —Produzir relatórios de monitoramento

📄 Licença

Pesos e artefatos deste repositório (modelo): MIT — veja o arquivo LICENSE na raiz.

Modelos Base

Infraestrutura

  • —Câmara dos Deputados: API de dados abertos
  • —Senado Federal: API de dados abertos

📞 Contato e Contribuições

  • —Issues: Reporte bugs ou sugira melhorias
  • —Pull Requests: Contribuições são bem-vindas
  • —Community: Participe da discussão na aba Community

📊 Citação

Se usar este modelo em pesquisa acadêmica, por favor cite:

bibtex
@misc{radar-legislativo-lgbtqia,
  author = {Veronyka},
  title = {Radar Legislativo LGBTQIA+: Ensemble Híbrido para Classificação de Projetos de Lei},
  year = {2024},
  publisher = {Hugging Face},
  howpublished = {\url{https://huggingface.co/Veronyka/radar-legislativo-lgbtqia}},
  note = {Sistema de análise automática de PLs relacionadas a direitos LGBTQIA+ no Brasil}
}

🏳️‍🌈 Radar Legislativo LGBTQIA+

Desenvolvido com ❤️ para a comunidade LGBTQIA+

Use como ferramenta de apoio, sempre com revisão humana. ⚖️

Versão: 1.0 (Outubro 2024) Status: ✅ Repositório de referência (ensemble legislativo) Cobertura: Federal + Estadual (SP) + Municipal (SP)