Vigia Max 1.1: Detecção e Auditoria Forense de Aliciamento Infantil Online
O Vigia Max 1.1 é um modelo neural baseado em ModernBERT Large PT (eliasjacob/ModernBERT-large-portuguese, ~395M parâmetros), treinado com contexto estendido de 8.192 tokens para detecção de padrões de aliciamento infantil (online grooming) em diálogos textuais em Português Brasileiro (PT-BR).
Desenvolvido no âmbito da Dissertação de Mestrado Profissional do Programa de Pós-Graduação em Engenharia de Sistemas e Produtos (PPGESP) do IFBA — Campus Salvador, o modelo alinha-se ao marco do ECA Digital (Lei nº 15.211/2025) e à LGPD (Lei nº 13.709/2018). Todos os experimentos derivam estritamente do corpus público internacional PAN-12 (CLEF 2012 / Zenodo 3713280).
🚀 Como Usar o Modelo
1. Forma Mais Simples (via pipeline do Transformers)
from transformers import pipeline
# Carrega o pipeline de classificação diretamente do Hugging Face Hub
classifier = pipeline("text-classification", model="mateusdata/vigia-max-1.1")
# Exemplo de verificação com diálogo estruturado (amostra do benchmark acadêmico PAN-12)
dialogo = """SPEAKER_A: Olá! Você vai participar do seminário de ciências amanhã?
SPEAKER_B: Sim, estou terminando a apresentação do projeto escolar."""
resultado = classifier(dialogo)
print(resultado)
# Saída esperada: [{'label': 'CONVERSA_NORMAL', 'score': 0.99}]
2. Uso com Controle Fino (AutoModel e AutoTokenizer)
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
model_id = "mateusdata/vigia-max-1.1"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSequenceClassification.from_pretrained(model_id)
dialogo = """SPEAKER_A: Olá, tudo bem? Você vai na aula amanhã?
SPEAKER_B: Vou sim, preciso entregar o trabalho de história."""
# Suporte nativo a até 8.192 tokens de contexto
inputs = tokenizer(dialogo, return_tensors="pt", truncation=True, max_length=8192)
with torch.no_grad():
outputs = model(**inputs)
probs = torch.softmax(outputs.logits, dim=-1)
pred_idx = torch.argmax(probs, dim=-1).item()
pred_label = model.config.id2label[str(pred_idx)]
confianca = probs[0][pred_idx].item()
print(f"Predição: {pred_label} (Confiança: {confianca:.2%})")
# Saída esperada: Predição: CONVERSA_NORMAL (Confiança: 99.85%)
📊 Métricas no Benchmark PAN-12 PT-BR (57.773 Diálogos)
Avaliado no conjunto de teste completo do PAN-12 traduzido para Português Brasileiro (com desbalanceamento real severo: ~2,36% de conversas de aliciamento):
| Métrica | Vigia Max 1.1 (Large) |
|---|---|
| F1-Score (Classe Positiva) | 76,67% |
| Revocação (Recall / Sensibilidade) | 70,55% |
| Precisão (Precision) | 83,96% |
| AUC-ROC | 98,55% |
| Acurácia Global | 98,99% |
⚖️ Termos de Uso e Licença Restrita
AVISO: Este modelo NÃO possui licença aberta permissiva (não é MIT, Apache ou GPL).
- Finalidade Permitida: Estritamente restrito a fins acadêmicos, científicos, auditoria forense e homologação por autoridades periciais e de segurança pública.
- Supervisão Humana Obrigatória (Human-in-the-Loop): O modelo é uma ferramenta de triagem pericial de apoio e não deve ser empregado para acusações automáticas sem validação de um perito humano.
- Vedações: Proibido uso comercial, engenharia reversa para evasão de detectores ou qualquer aplicação que facilite atos ilícitos contra crianças e adolescentes.
- Downloads last month
- 22