🛡️ Ana-FraudDetection-1.0
Ana-FraudDetection-1.0 es un modelo de lenguaje de última generación (State-of-the-Art) diseñado específicamente para la detección de fraude, Phishing y Spam, tanto en correos electrónicos como en mensajes de texto (SMS / Smishing).
Ha sido afinado (fine-tuned) partiendo del robusto modelo base multilingüe BSC-LT/mRoBERTa del Barcelona Supercomputing Center, heredando su comprensión sobre 35 lenguajes europeos y 92 lenguajes de programación.
📊 Especificaciones del Modelo
- Arquitectura Base:
BSC-LT/mRoBERTa - Tarea: Clasificación Binaria de Texto (
0: Ham / Seguro |1: Phishing / Malicioso) - Tamaño del Dataset de Entrenamiento: 107.636 ejemplos en total.
- 🟢 Ham (Legítimos): 50.075 ejemplos
- 🔴 Phishing (Maliciosos): 57.561 ejemplos
- Idiomas Soportados (Nativo): Inglés (
70%), Español (30%), con inyecciones nativas en Catalán, Gallego y Euskera.
🧠 Arquitectura de Entrenamiento y Robustez (Características Clave)
A diferencia de modelos académicos tradicionales, Ana 1.0 incorpora estrategias avanzadas orientadas al mundo real:
Entrenamiento con Ocultación de Asunto (Subject Drop - 30%): Durante el entrenamiento, al 30% del dataset se le extirpó aleatoriamente el campo "Asunto". Esto obliga a la red neuronal a no depender de metadatos y a desarrollar una inferencia robusta incluso cuando los usuarios "copian y pegan" fragmentos de texto sueltos en el sistema.
Inmunidad a la Duplicación (Deduplicación Exacta): El dataset de 107.636 ejemplos ha sido rigurosamente procesado para eliminar coincidencias exactas y URLs idénticas, impidiendo el overfitting y garantizando que las métricas de evaluación reflejen una inteligencia real, no memorización.
Inyección de Lenguas Cooficiales: Se ha inyectado conocimiento sintético hiper-realista para blindar el modelo contra estafas regionales (Ej. suplantación de entidades bancarias o la Agencia Tributaria en Catalán, Euskera y Gallego).
🗄️ El Dataset
El modelo ha sido alimentado por una mezcla de los repositorios mundiales más grandes y un bloque de creación propia:
- Bloque Histórico Global (Inglés): Enron, SpamAssassin, Nazario, CEAS_08, Nigerian Fraud, Ling.
- Bloque Específico Hispano: +30.000 simulaciones hiperrealistas generadas sintéticamente imitando fraudes modernos que afectan a España (DGT, Correos, Agencia Tributaria, Bancos, Netflix, WhatsApp, TikTok, etc.).
🚀 Cómo enviar datos al modelo (Formatos)
⚠️ CRÍTICO: Preprocesamiento del Texto Para que el modelo ofrezca el 100% de su precisión y no sufra falsos negativos, debes enviarle el texto respetando la limpieza estricta con la que fue entrenado:
- Recorte de URLs: Cualquier URL debe ser recortada hasta el dominio principal, eliminando rutas y parámetros. (Ej:
https://harloff-support.cc/secure/login?id=2debe quedar comohttps://harloff-support.cc/). - Colapso de espacios y saltos de línea: Debes reemplazar cualquier salto de línea (
\n,\r) y espacios múltiples por un único espacio en blanco, de forma que el texto quede como un bloque continuo.
Si le envías al modelo texto en crudo con saltos de línea y URLs largas, la red neuronal se desorientará con esos tokens desconocidos y la probabilidad colapsará, resultando en un falso negativo.
1. Formato para Correos con Asunto
Debes concatenar el "Asunto" y el "Cuerpo" utilizando el separador especial </s></s> (incluyendo los espacios).
Ejemplo de entrada:
Aviso urgente de bloqueo </s></s> Estimado cliente, su cuenta ha sido suspendida. Entre aquí: http://falso.com
2. Formato para SMS, WhatsApp o Correos sin Asunto
Simplemente envía el texto en crudo. El modelo ha sido entrenado con un "Subject Drop" del 30%, por lo que es experto en analizar cuerpos de texto sin metadatos. Ejemplo de entrada:
DGT: Último aviso. Tiene una multa impagada. Pague hoy o se le aplicará un recargo: http://dgt-pagos.es
💻 Ejemplo de Inferencia y Respuestas de Ana 1.0
Al utilizar el modelo en Python mediante la librería transformers, el modelo devolverá un diccionario con la etiqueta matemática y su confianza.
from transformers import pipeline
import json
# Cargar el modelo
# Usa top_k=None para obtener las probabilidades de todas las etiquetas (JSON raw)
clasificador = pipeline("text-classification", model="Jmcc1976/Ana-FraudDetection-1.0", top_k=None)
# --- Prueba con Asunto y Cuerpo (marketing agresivo) ---
texto_sospechoso = "Ahorra 5 horas esta semana (empieza ahora) </s></s> Personas reales, ahorro de tiempo real… \n\n( https://use.ai/ )"
# Imprimir la salida JSON en raw
resultado = clasificador(texto_sospechoso)
print(json.dumps(resultado[0], indent=2))
# SALIDA JSON ESPERADA:
# [
# {
# "label": "Phishing",
# "score": 0.8649488687515259
# },
# {
# "label": "Ham",
# "score": 0.1350511759519577
# }
# ]
📈 Rendimiento y Métricas
Resultados de la Evaluación Final (sobre el set de validación aislado):
- Accuracy (Exactitud): 99.55%
- F1-Score: 99.58%
- Precision (Precisión): 99.86%
- Recall (Exhaustividad): 99.31%
- Eval Loss: 0.2089
Nota de Entrenamiento: El modelo convergió de manera óptima utilizando Early Stopping, deteniéndose en el paso 6552 con un Train Loss de 1.8442 y un tiempo de cómputo de 7960 segundos (132.7 minutos).
Desarrollado en 2026 para la iniciativa Phishing Guard.
- Downloads last month
- 257