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).

  1. Finalidade Permitida: Estritamente restrito a fins acadêmicos, científicos, auditoria forense e homologação por autoridades periciais e de segurança pública.
  2. 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.
  3. 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
Safetensors
Model size
0.4B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support