Como funciona

Metodologia

Toda análise no Ceticismo é construída a partir de discursos públicos. Aqui explicamos como coletamos os dados, como atribuímos as falas, como o stance é classificado e quais são as limitações conhecidas.

Resumo em 3 frases

Coletamos vídeos públicos do YouTube e do X (Twitter). Transcrevemos com Whisper, identificamos quem fala com diarização + impressão biométrica de voz, e classificamos o "stance" (a favor, contra, neutro ou ambíguo) de cada fala via LLM com confiança mínima de 0.75. Tudo é apartidário, código aberto, e cada classificação tem rationale visível pra você questionar.

1. Coleta de dados

Monitoramos canais públicos de políticos com mandato federal ou estadual, jornalistas políticos influentes e participantes de debates. Vídeos novos são processados em janela rolante de 90 dias. Não usamos conteúdo privado, transcrições compradas, nem dados de terceiros não-públicos.

Fontes hoje: YouTube e X (Twitter).

2. Transcrição e atribuição de fala

Transcrição: usamos Whisper large-v3 para gerar a transcrição inicial com timestamps por palavra.

Diarização: identificamos quando cada falante muda usando uma versão melhorada do Pyannote (MahmoudAshraf97/whisper-diar).

Identificação biométrica: comparamos a impressão de voz de cada speaker contra um banco de vozes pré-cadastradas (políticos conhecidos). Quando a similaridade ultrapassa o limiar, atribuímos o nome. Se não bate em ninguém, fica como UNKNOWN.

Limitação conhecida: aproximadamente 14% das falas em vídeos com muito ruído ou múltiplos speakers cruzados ficam como UNKNOWN.

3. Classificação de stance

Para cada fala com pelo menos 8 palavras, um LLM (OpenAI gpt-4o) atribui:

  • tópico (de uma lista canônica de ~440 temas)
  • proposição específica que está sendo defendida ou criticada
  • stance: a_favor, contra, neutro_descritivo ou ambíguo
  • confiança (0–1)
  • rationale: frase curta explicando por que a classificação é essa

Só falas com confiança ≥ 0.75 e stance diferente de "ambíguo" aparecem nas agregações públicas. As outras ficam visíveis nas páginas individuais com badge "ambíguo" pra transparência.

A página /recentes e o card de cada fala expõem o rationale clicando em "Entenda a classificação".

4. Canonicalização de tópicos e proposições

Tópicos e proposições saem com texto livre do LLM. Pra agrupar variações ("PEC dos super-salários" vs "PEC de super salários"), calculamos embeddings (modelo E5) e agrupamos por similaridade cosseno. Cada cluster vira uma entidade canônica com label, slug e centroide.

Hoje temos 438 tópicos canônicos e 2.136 proposições canônicas.

5. Limitações conhecidas

  • Recall não é completo — falas curtas (<8 palavras), em vídeos com áudio ruim, ou ainda não processadas, não aparecem. Não significa que o político não falou.
  • Stance pode errar em ironia, sarcasmo, citações em discurso indireto, ou quando o LLM não tem contexto suficiente.
  • Identificação errada pode acontecer quando duas vozes são muito similares ou um speaker novo ainda não tem voz cadastrada.
  • Cobertura assimétrica — políticos que postam mais conteúdo público têm mais falas catalogadas. Não é representativo do volume real de trabalho parlamentar.

Cada agregação no site exibe o número de falas usado e a janela temporal pra você avaliar.

6. Mudanças de posicionamento

No perfil de cada político, a seção "Mudanças de posicionamento" mostra quando detectamos que a pessoa defendeu lados opostos da mesma proposta em épocas diferentes. Os critérios são deliberadamente conservadores — só contamos como mudança quando todos valem ao mesmo tempo:

  • mesmo tema e mesma proposta — ser contra a proposta A e a favor da proposta B do mesmo tema não é mudança de posição;
  • pelo menos 3 falas e 2 vídeos de cada lado — um discurso isolado não caracteriza um "período";
  • pelo menos 70% das falas de cada período na mesma direção;
  • pelo menos 12 meses de intervalo entre o fim do primeiro período e o início do segundo;
  • confiança mínima do classificador: falas com confiança abaixo de 0.75 nem entram na contagem, e a média das falas usadas em cada período precisa ser ≥ 0.85.

Cada mudança exibe a fala mais representativa de cada período, com link pro momento exato do vídeo — a evidência é sempre verificável na fonte.

Limitações: a detecção é automática e só enxerga o que está no corpus. A ausência da seção não atesta coerência — pode faltar cobertura. E mudar de opinião com justificativa é legítimo; o objetivo é dar contexto verificável, não vereditos.

7. Independência editorial

  • O Ceticismo é mantido independentemente — sem financiamento de partido, político, governo ou empresa de mídia.
  • Não tomamos posição editorial: classificamos o que o político disse, não se está certo ou errado.
  • O código é aberto: github.com/GilbJun/politic-voices.

8. Como contestar uma classificação

Se uma classificação está claramente errada, abra um issue no GitHub com:

  • URL da fala (link "Ver no vídeo")
  • Qual classificação você acha correta
  • Por quê

Revisamos manualmente e, se procedente, corrigimos o exemplo e usamos pra ajustar prompts/limiares.

Abrir uma contestação no GitHub →

9. Quem somos

Projeto mantido por Gilberto Junior.

Última atualização: julho de 2026.