🏳️🌈⚖️ 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+.
🎯 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. Radar Social LGBTQIA+ V2.1 (20% do peso)
- Modelo:
Veronyka/radar-social-lgbtqia-v2.1 - Função: Detecção de discurso de ódio
- Performance: 98.44% de recall, threshold 0.30
- 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
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
{
"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)
# Acesse diretamente o Space:
# https://huggingface.co/spaces/Veronyka/radar-legislativo-lgbtqia
Via Python (Código Completo)
from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
import re
# 1. Carregar Radar Social
radar = pipeline(
"text-classification",
model="Veronyka/radar-social-lgbtqia-v2.1",
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):
# Radar Social
radar_result = radar(ementa, truncation=True, max_length=256)
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)
score_azmina = 1 - azmina_result[0]['score'] if azmina_result[0]['label'] == '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 (Radar Social 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)
- 39 PLs anotadas manualmente
- Período: 2010-2024
- Fontes: Câmara dos Deputados, Senado Federal
- Categorias: Favoráveis (13), Desfavoráveis (26)
📈 Performance
Métricas de Validação (39 PLs)
| Métrica | Valor | Descrição |
|---|---|---|
| Accuracy | 82.1% | PLs corretamente classificadas |
| Precision (DESFAVORÁVEL) | 88.5% | Precisão ao classificar como desfavorável |
| Recall (DESFAVORÁVEL) | 92.3% | Capacidade de detectar PLs desfavoráveis |
| F1-Score | 90.4% | Média harmônica de precisão e recall |
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
- Radar Social: 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
CC-BY-NC-SA-4.0 (Creative Commons - Atribuição-NãoComercial-CompartilhaIgual 4.0)
Você Pode
- ✅ Compartilhar: copiar e redistribuir o material
- ✅ Adaptar: remixar, transformar e criar a partir do material
Sob as Seguintes Condições
- 📝 Atribuição: Creditar o autor original
- 🚫 Não Comercial: Não usar para fins comerciais
- 🔄 Compartilha Igual: Distribuir sob a mesma licença
🙏 Créditos e Agradecimentos
Modelos Base
- Radar Social LGBTQIA+ V2.1: Desenvolvido por Veronyka
- AzMina/QuiterIA: Desenvolvido pela equipe AzMina
- Tupi-BERT:
FpOliveira/tupi-bert-base-portuguese-cased - BERTimbau:
neuralmind/bert-base-portuguese-cased
Inspiração
- AzMina: Modelo feminista de análise de PLs
- LabHacker da Câmara: Soluções de dados abertos legislativos
- Comunidade LGBTQIA+: Necessidade de ferramentas de monitoramento
Infraestrutura
- Hugging Face: Hospedagem de modelos e Spaces
- Câmara dos Deputados: API de dados abertos
- Senado Federal: API de dados abertos
🔗 Links Relacionados
Spaces e Aplicações
- Radar Legislativo (Principal): https://huggingface.co/spaces/Veronyka/radar-legislativo-lgbtqia
- Radar Social V2.1: https://huggingface.co/spaces/Veronyka/radar-social-lgbtqia-v2.1
- Análise de Base de Dados: https://huggingface.co/spaces/Veronyka/radar-social-lgbtqia-v2-analise
- Quiz Colaborativo: https://huggingface.co/spaces/Veronyka/quiz-radar-social-lgbtqia-v2
Modelos
- Radar Social V2.1 (Modelo): https://huggingface.co/Veronyka/radar-social-lgbtqia-v2.1
- AzMina QuiterIA: https://huggingface.co/azmina/ia-feminista-bert-posicao
Datasets
- Base de Dados de Ódio LGBTQIA+: https://huggingface.co/datasets/Veronyka/base-dados-odio-lgbtqia
📞 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:
@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: ✅ Produção
Cobertura: Federal + Estadual (SP) + Municipal (SP)
Model tree for Veronyka/radar-legislativo-lgbtqia
Base model
neuralmind/bert-base-portuguese-cased