--- language: - pt license: cc-by-nc-sa-4.0 tags: - lgbtqia - legislacao - hate-speech-detection - ensemble - text-classification - portuguese - brasil datasets: - Veronyka/base-dados-odio-lgbtqia base_model: - Veronyka/tybyria-v2.1 - azmina/ia-feminista-bert-posicao pipeline_tag: text-classification pinned: true widget: - text: "Proíbe o uso de símbolos religiosos em paradas LGBTQIA+" example_title: "PL Desfavorável" - text: "Criminaliza terapias de conversão equiparando à tortura" example_title: "PL Favorável" - text: "Dispõe sobre identidade de gênero e nome social" example_title: "PL Favorável" --- # 🏳️‍🌈⚖️ 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. TybyrIA v2.1 (20% do peso) - **Modelo**: [`Veronyka/tybyria-v2.1`](https://huggingface.co/Veronyka/tybyria-v2.1) (TybyrIA 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`](https://huggingface.co/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.1 radar = pipeline( "text-classification", model="Veronyka/tybyria-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): # TybyrIA v2.1 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 (TybyrIA v2.1) - **Dataset**: [`Veronyka/base-dados-odio-lgbtqia`](https://huggingface.co/datasets/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 - **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 **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 - **TybyrIA v2.1**: Desenvolvido por [Veronyka](https://huggingface.co/Veronyka) - **AzMina/QuiterIA**: Desenvolvido pela equipe [AzMina](https://huggingface.co/azmina) - **Tupi-BERT**: [`FpOliveira/tupi-bert-base-portuguese-cased`](https://huggingface.co/FpOliveira/tupi-bert-base-portuguese-cased) - **BERTimbau**: [`neuralmind/bert-base-portuguese-cased`](https://huggingface.co/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 (Space)**: 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 - **TybyrIA v2.1 (Modelo)**: https://huggingface.co/Veronyka/tybyria-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: ```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**: ✅ Produção **Cobertura**: Federal + Estadual (SP) + Municipal (SP)