Volver al blog
Equipo Punto Medio

Cómo entrenamos un clasificador de noticias falsas en español

En Punto Medio creemos que combatir la desinformación requiere algo más que intuición editorial: requiere infraestructura técnica sólida. Por eso, uno de los pilares de nuestro pipeline de análisis es la capacidad de detectar automáticamente noticias falsas en español. En este artículo compartimos el trabajo de investigación que publicamos sobre ese problema y los resultados que obtuvimos.

El problema

Detectar noticias falsas en inglés es difícil. En español, es todavía más difícil. Los motivos son varios: hay menos datos anotados de calidad, la diversidad lingüística entre regiones es enorme, y la mayoría de los modelos existentes fueron diseñados para textos cortos —titulares, tweets, fragmentos— no para artículos periodísticos completos.

Eso último es clave para nosotros. En producción, el contenido que analizamos son artículos largos. Un modelo que funciona bien con 280 caracteres pero falla con 800 palabras no nos sirve.

Nuestra hipótesis

Propusimos un enfoque de fine-tuning secuencial: en lugar de entrenar el modelo directamente sobre artículos largos —donde los datos son escasos—, primero lo adaptamos sobre un corpus grande de artículos cortos, y recién después lo ajustamos sobre el dataset objetivo de textos largos.

La idea detrás de esto es simple: los patrones lingüísticos asociados a la desinformación —ciertos usos del lenguaje, estructuras argumentativas, recursos retóricos— son en buena medida compartidos entre artículos cortos y largos. Si el modelo aprende esos patrones en el primer paso, el segundo paso puede concentrarse en adaptarse a la complejidad estructural y semántica de los textos más extensos.

Los datos

Trabajamos con dos datasets:

Dataset corto (~57.000 artículos): construido combinando dos fuentes públicas —una tesis de la Universidad de Vigo y un dataset de Kaggle— con artículos de longitud similar entre sí.

Dataset largo (~2.000 artículos): armado a partir del Spanish Fake and Real News Dataset (Universidad Politécnica de Madrid) y el Fake News Corpus Spanish (GitHub), que incluye artículos de Argentina, Perú, Uruguay y Venezuela.

Un punto crítico que identificamos durante el análisis: mezclar ambos datasets directamente introduciría un sesgo por longitud. El modelo podría aprender a asociar "texto corto = falso, texto largo = verdadero" (o viceversa) en lugar de capturar patrones semánticos reales. Mantenerlos separados y procesarlos en etapas elimina ese riesgo.

El modelo base

Usamos dccuchile/bert-base-spanish-wwm-cased, una variante de BETO entrenada con Whole Word Masking sobre un corpus extenso en español (Wikipedia, noticias, fuentes digitales). Elegimos este modelo por sobre alternativas multilingüe porque su especialización en español nos da una base de representaciones contextuales mucho más rica para esta tarea.

El entrenamiento en dos etapas

Etapa 1: Pre-fine-tuning sobre textos cortos

Entrenamos el modelo durante 3 épocas sobre el dataset de ~57.000 artículos cortos, congelando la mayoría de los parámetros y dejando entrenables solo las últimas 3 capas del encoder, la capa pooler y el clasificador. Esto representa unos 14,7 millones de parámetros entrenables sobre un total de ~110 millones.

Los resultados al final de esta etapa fueron sólidos:

Época Accuracy Precisión Recall F1
1 0.9288 0.9311 0.9475 0.9392
2 0.9374 0.9498 0.9419 0.9458
3 0.9435 0.9447 0.9588 0.9517

Etapa 2: Fine-tuning sobre textos largos

Partiendo de los pesos aprendidos en la etapa anterior, entrenamos durante 4 épocas sobre el dataset de artículos largos. Aquí congelamos aún más capas, dejando entrenables solo las dos últimas capas transformer, el pooler y el clasificador (~7,7 millones de parámetros). Para esta etapa realizamos una búsqueda de hiperparámetros y encontramos la configuración óptima: learning rate de 9,9 × 10⁻⁵, batch size de 32, weight decay de 0,01 y warmup ratio de 0,1.

Época Accuracy Precisión Recall F1
1 0.7336 0.8182 0.6372 0.7164
2 0.7804 0.7619 0.8496 0.8033
3 0.8037 0.7710 0.8938 0.8279
4 0.8084 0.7769 0.8938 0.8313

Resultados finales

La evaluación sobre el conjunto de test arrojó estos números:

Métrica Valor
Accuracy 0.8205
Precisión 0.7835
Recall 0.8702
F1 0.8246

El recall es particularmente alto, lo cual es exactamente lo que buscábamos: en detección de fake news, es más costoso dejar pasar una noticia falsa que marcar una verdadera como sospechosa.

También verificamos que el modelo se comporta de manera estable frente a artículos de distintas longitudes, confirmando que el enfoque secuencial mitiga efectivamente el sesgo por extensión del texto.

Por qué esto importa para Punto Medio

Nuestro pipeline analiza cientos de artículos por día. La capacidad de identificar automáticamente contenido potencialmente falso —antes de que llegue al usuario— es una capa de integridad fundamental en nuestra arquitectura. Este clasificador no reemplaza el juicio humano ni la verificación editorial, pero sí nos permite priorizar recursos y señalar contenido que merece atención adicional.

Seguimos trabajando en mejorar este sistema: expandir el corpus de entrenamiento, explorar estrategias de truncación alternativas como head-tail, y evaluar el comportamiento del modelo con fuentes de distintas regiones hispanohablantes.


El paper completo está disponible en OpenReview.