Views
No views yet
Veronyka/tybyria-v2.2 (TybyrIA v2.2)azmina/ia-feminista-bert-posicao1pesos = {
2 'radar': 0.20, # Detecção de ódio
3 'azmina': 0.15, # Análise feminista (proxy)
4 'keywords': 0.35, # Termos LGBTQIA+ (CRÍTICO em legislação)
5 'padroes': 0.30 # Padrões legislativos (CRÍTICO)
6}1{
2 "classificacao": "DESFAVORÁVEL",
3 "score_final": 0.67,
4 "sinais": {
5 "radar": 0.42,
6 "azmina": 0.58,
7 "keywords": 0.85,
8 "padroes": 0.95
9 },
10 "explicacao": "Score alto em padrões legislativos restritivos"
11}1# Acesse diretamente o Space:
2# https://huggingface.co/spaces/Veronyka/radar-legislativo-lgbtqia1from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
2import re
3
4# 1. Carregar TybyrIA v2.2
5radar = pipeline(
6 "text-classification",
7 model="Veronyka/tybyria-v2.2",
8 device=-1 # CPU
9)
10
11# 2. Carregar AzMina (com tokenizer explícito)
12tokenizer = AutoTokenizer.from_pretrained("neuralmind/bert-base-portuguese-cased")
13azmina_model = AutoModelForSequenceClassification.from_pretrained("azmina/ia-feminista-bert-posicao")
14azmina = pipeline(
15 "text-classification",
16 model=azmina_model,
17 tokenizer=tokenizer,
18 device=-1
19)
20
21# 3. Keywords e Padrões (simplificado)
22KEYWORDS_DESFAVORAVEIS = [
23 r"proíbe.*gênero", r"ideologia de gênero", r"sexo biológico",
24 r"terapia.*conversão", r"família.*tradicional"
25]
26
27PADROES_RESTRITIVOS = [
28 r"(proíbe|veda).*(uso|exibição).*(símbolo|símbolos).*religios.*(parada|lgbt)",
29 r"(impede|proíbe).*(menor|criança).*(evento|parada).*(lgbt|comunidade)"
30]
31
32def classificar(ementa: str):
33 # TybyrIA v2.1
34 radar_result = radar(ementa, truncation=True, max_length=256)
35 # TybyrIA retorna labels 'hate' / 'not hate' (minúsculas — ver id2label no config.json)
36 score_radar = radar_result[0]['score'] if radar_result[0]['label'] == 'hate' else 1 - radar_result[0]['score']
37
38 # AzMina
39 azmina_result = azmina(ementa, truncation=True, max_length=256)
40 # Confira o id2label do modelo AzMina: os labels retornados são '0'/'1'
41 score_azmina = 1 - azmina_result[0]['score'] if azmina_result[0]['label'] == '1' else azmina_result[0]['score']
42
43 # Keywords
44 kw_desfav = sum(1 for kw in KEYWORDS_DESFAVORAVEIS if re.search(kw, ementa.lower(), re.IGNORECASE))
45 score_keywords = min(kw_desfav / 5, 1.0) # Normalizado
46
47 # Padrões
48 matches = sum(1 for padrao in PADROES_RESTRITIVOS if re.search(padrao, ementa.lower(), re.IGNORECASE))
49 score_padroes = 0.99 if matches > 0 else 0.0
50
51 # Ensemble
52 score_final = (
53 0.20 * score_radar +
54 0.15 * score_azmina +
55 0.35 * score_keywords +
56 0.30 * score_padroes
57 )
58
59 # Classificação
60 if score_final >= 0.5:
61 return "DESFAVORÁVEL", score_final
62 elif score_final >= 0.3:
63 return "REVISÃO", score_final
64 else:
65 return "FAVORÁVEL", score_final
66
67# Exemplo de uso
68ementa = "Proíbe o uso de símbolos religiosos em paradas LGBTQIA+"
69classificacao, score = classificar(ementa)
70print(f"Classificação: {classificacao} (Score: {score:.2%})")
71# Output: Classificação: DESFAVORÁVEL (Score: 67%)Veronyka/base-dados-odio-lgbtqia⚠️ 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.
LICENSE na raiz.FpOliveira/tupi-bert-base-portuguese-casedneuralmind/bert-base-portuguese-cased1@misc{radar-legislativo-lgbtqia,
2 author = {Veronyka},
3 title = {Radar Legislativo LGBTQIA+: Ensemble Híbrido para Classificação de Projetos de Lei},
4 year = {2024},
5 publisher = {Hugging Face},
6 howpublished = {\url{https://huggingface.co/Veronyka/radar-legislativo-lgbtqia}},
7 note = {Sistema de análise automática de PLs relacionadas a direitos LGBTQIA+ no Brasil}
8}