Voltar ao blog
Equipe Punto Medio

Como Construímos um Classificador de Fake News em Espanhol

No Punto Medio, acreditamos que combater a desinformação exige muito mais do que julgamento editorial: exige uma infraestrutura técnica sólida. Um dos pilares centrais do nosso pipeline de análise é a capacidade de detectar automaticamente notícias falsas em espanhol. Neste artigo, compartilhamos a pesquisa que publicamos sobre esse problema e os resultados que obtivemos.

O Problema

Detectar fake news em inglês já é difícil. Em espanhol, é ainda mais. Os motivos são vários: há muito menos dados anotados de qualidade disponíveis, a diversidade linguística entre as regiões hispanófonas é enorme, e a maioria dos modelos existentes foi projetada para textos curtos — títulos, tweets, fragmentos — não para artigos jornalísticos completos.

Esse último ponto é crítico para nós. Em produção, o conteúdo que analisamos são artigos completos. Um modelo que funciona bem com 280 caracteres, mas falha com 800 palavras, não é um modelo em que podemos confiar.

Nossa Hipótese

Propusemos uma abordagem de fine-tuning sequencial: em vez de treinar o modelo diretamente sobre artigos longos — onde os dados rotulados são escassos — primeiro o adaptamos em um corpus grande de artigos curtos e, só então, realizamos o ajuste fino no dataset-alvo de textos longos.

A lógica por trás disso é direta. Os padrões linguísticos associados à desinformação — certas estruturas retóricas, padrões argumentativos, escolhas lexicais — são amplamente compartilhados entre conteúdos curtos e longos. Se o modelo aprende esses padrões na primeira etapa, a segunda pode focar em se adaptar à complexidade estrutural e semântica dos textos mais extensos.

Os Dados

Trabalhamos com dois datasets:

Dataset curto (~57.000 artigos): montado combinando duas fontes públicas — uma tese da Universidade de Vigo e um dataset do Kaggle — com artigos de comprimento similar entre si.

Dataset longo (~2.000 artigos): construído a partir do Spanish Fake and Real News Dataset (Universidade Politécnica de Madri) e do Fake News Corpus Spanish (GitHub), que inclui artigos da Argentina, Peru, Uruguai e Venezuela.

Um problema crítico que identificamos durante a análise: misturar os dois datasets diretamente introduziria um viés por comprimento. O modelo poderia aprender a associar "texto curto = falso, texto longo = verdadeiro" (ou o inverso) em vez de capturar padrões semânticos genuínos. Mantê-los separados e processá-los sequencialmente elimina esse risco.

O Modelo Base

Utilizamos o dccuchile/bert-base-spanish-wwm-cased, uma variante do BETO treinada com Whole Word Masking em um extenso corpus em espanhol (Wikipédia, fontes jornalísticas, conteúdo digital). Escolhemos este modelo em detrimento de alternativas multilíngues porque seu pré-treinamento específico em espanhol oferece uma base de representações contextuais muito mais rica para esta tarefa.

Treinamento em Duas Etapas

Etapa 1: Pré-Fine-Tuning em Textos Curtos

Treinamos o modelo por 3 épocas no dataset de ~57.000 artigos curtos, congelando a maior parte dos parâmetros e deixando treináveis apenas as últimas 3 camadas do encoder, a camada pooler e o classificador. Isso equivale a cerca de 14,7 milhões de parâmetros treináveis de um total de ~110 milhões.

Os resultados ao fim dessa etapa foram expressivos:

Época Accuracy Precisão 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 em Textos Longos

Partindo dos pesos aprendidos na Etapa 1, treinamos por 4 épocas no dataset de artigos longos. Aqui congelamos ainda mais camadas, deixando treináveis apenas as duas últimas camadas transformer, o pooler e o classificador (~7,7 milhões de parâmetros). Realizamos uma busca de hiperparâmetros para esta etapa e encontramos a configuração ótima: learning rate de 9,9 × 10⁻⁵, batch size 32, weight decay 0,01 e warmup ratio 0,1.

Época Accuracy Precisão 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 Finais

A avaliação no conjunto de teste produziu os seguintes resultados:

Métrica Valor
Accuracy 0,8205
Precisão 0,7835
Recall 0,8702
F1 0,8246

O recall é particularmente alto, que era exatamente o que buscávamos: na detecção de fake news, deixar passar uma notícia falsa é um erro muito mais custoso do que sinalizar uma notícia verdadeira como suspeita.

Também verificamos que o modelo se comporta de forma estável em artigos de diferentes comprimentos, confirmando que a abordagem sequencial mitiga efetivamente os erros baseados na extensão do texto.

Por Que Isso Importa para o Punto Medio

Nosso pipeline processa centenas de artigos por dia. A capacidade de identificar automaticamente conteúdo potencialmente falso — antes que chegue ao usuário — é uma camada fundamental de integridade na nossa arquitetura. Este classificador não substitui o julgamento humano nem a verificação editorial, mas nos permite priorizar recursos e sinalizar conteúdos que merecem atenção adicional.

Continuamos desenvolvendo e aprimorando esse sistema: expandindo o corpus de treinamento, experimentando estratégias alternativas de truncamento como head-tail encoding, e avaliando o comportamento do modelo em fontes de diferentes regiões hispanófonas.


O artigo completo está disponível no OpenReview.