Voltar ao blog
Equipe Punto Medio

Como agrupamos notícias em eventos do mundo real

Como agrupamos notícias em eventos do mundo real

Uma das tarefas mais fundamentais por trás do Punto Medio é simples de enunciar, mas tecnicamente difícil de resolver: dado um conjunto de milhares de artigos de diferentes veículos, quais estão cobrindo o mesmo evento?

Não o mesmo tema — o mesmo fato concreto que aconteceu no mundo.

A distinção parece óbvia, mas tem consequências técnicas enormes. Dois artigos podem mencionar o presidente de um país e uma pauta legislativa, mas um pode tratar da aprovação de um conjunto de leis enquanto o outro cobre o veto de uma reforma tributária. São eventos distintos que jamais deveriam ser agrupados juntos.

Para atacar esse problema, publicamos um artigo de pesquisa que estamos felizes em compartilhar com a comunidade. Você pode lê-lo na íntegra aqui: A Multi-Signal Graph-Based Approach for Real-World Event Detection in News Articles.

O problema da similaridade semântica

O ponto de partida natural para agrupar artigos é usar embeddings de texto — representar cada artigo como um vetor denso e medir o quão semanticamente semelhantes os artigos são entre si. É uma técnica sólida e amplamente utilizada, e serviu como nossa linha de base.

Implementamos um pipeline clássico: embeddings, redução de dimensionalidade com PCA e clustering com HDBSCAN. Os resultados foram fortes em termos de homogeneidade (98%) — os clusters formados eram puros — mas revelaram uma limitação crítica: quase 40% dos artigos ficavam sem atribuição, classificados como ruído.

Em produção, isso significa que quatro em cada dez artigos nunca chegam a nenhum cluster de evento. Para uma plataforma que busca oferecer cobertura abrangente do ecossistema midiático, essa é uma lacuna grave.

A similaridade semântica também falha quando dois eventos distintos compartilham vocabulário semelhante — como dois artigos cobrindo ações legislativas diferentes de um mesmo país. O modelo os aproxima no espaço de embeddings mesmo que descrevam ocorrências completamente separadas.

A solução: múltiplos sinais, estrutura de grafo

O pipeline que propomos combina três sinais complementares:

1. Embeddings semânticos com recuperação KNN Cada artigo é codificado como um vetor de alta dimensão. Para cada artigo, recuperamos seus K vizinhos mais próximos (K=100) no espaço de embeddings. Isso gera pares candidatos a comparar sem o custo computacional de uma comparação todos-contra-todos.

2. Extração e desambiguação de entidades nomeadas Aplicamos NER para identificar pessoas, organizações, localizações e entidades diversas. Em seguida, vinculamos cada menção ao seu título na Wikipédia, obtendo um identificador canônico único. Isso garante que formas de superfície diferentes que se referem à mesma entidade sejam resolvidas para o mesmo nó. A sobreposição de entidades entre dois artigos é medida usando a similaridade de Jaccard sobre os conjuntos de entidades normalizadas.

3. Cross-encoder ajustado Um modelo BERT ajustado no dataset HLGD avalia diretamente se dois artigos descrevem o mesmo evento. Diferentemente de comparar embeddings de forma independente, o cross-encoder processa os dois textos em conjunto, permitindo capturar interações sutis: referências temporais compartilhadas, entidades co-ocorrentes e contexto narrativo que os embeddings comprimem.

A pontuação final de cada par candidato é uma combinação ponderada.

4. Grafo de similaridade e detecção de comunidades Com todos os pares pontuados, construímos um grafo onde cada nó é um artigo e cada aresta carrega a pontuação de similaridade como peso. Arestas abaixo de um limiar de 0.5 são descartadas para reduzir ruído.

Em seguida, aplicamos o algoritmo de Leiden para detecção de comunidades. Leiden é uma melhoria sobre o Louvain que garante comunidades bem conectadas e convergência mais rápida. Cada comunidade detectada corresponde a um evento do mundo real.

Resultados

Métrica Baseline (HDBSCAN) Pipeline multi-sinal
Homogeneidade 0.98 0.95
Completude 0.75 0.86
V-measure 0.85 0.90
Similaridade intra-cluster 0.88 0.96
Cobertura de artigos 61% 89%

A melhoria mais significativa é a cobertura: de 61% para 89% dos artigos atribuídos com sucesso a um cluster, com apenas uma queda de ~4% em homogeneidade. Os clusters permanecem altamente puros enquanto capturam muito mais do conjunto de dados que o baseline deixava para trás.

Por que isso importa para o Punto Medio

Isso não é apenas uma contribuição acadêmica — é a espinha dorsal técnica da nossa plataforma. Para comparar como diferentes veículos cobrem o mesmo evento, primeiro precisamos saber com precisão quais artigos pertencem a esse evento.

Um pipeline que deixa 40% dos artigos sem agrupamento não pode oferecer a ninguém uma visão completa do panorama midiático. Um que agrupa por similaridade temática acaba mesclando eventos distintos, distorcendo qualquer análise subsequente.

Este pipeline multi-sinal é o primeiro passo em direção a algo mais ambicioso: entender não apenas o que está sendo reportado, mas como e por quê.

O artigo completo, o código e os dados estão disponíveis publicamente: