Team Ai
Datasetpublic

histlearn/community-notes-br

Community Notes / X — Snapshot Público Dataset estruturado a partir dos dumps públicos do sistema Community Notes (antigo Birdwatch) da plataforma X (antigo Twitter). Motivação O Community Notes é um sistema de moderação colaborativa onde usuários voluntários escrevem notas contextuais sobre publicações potencialmente enganosas e avaliam as notas de outros participantes. Um algoritmo de consenso determina quais notas são exibidas publicamente. Este dataset… See the full description on the dataset page: https://huggingface.co/datasets/histlearn/community-notes-br.

sourceHugging Facecdla-permissive-2.0updated 4mo agoView on Hugging Face
0likes166downloads
Dataset Card

Community Notes / X — Snapshot Público

Dataset estruturado a partir dos dumps públicos do sistema Community Notes (antigo Birdwatch) da plataforma X (antigo Twitter).

Motivação

O Community Notes é um sistema de moderação colaborativa onde usuários voluntários escrevem notas contextuais sobre publicações potencialmente enganosas e avaliam as notas de outros participantes. Um algoritmo de consenso determina quais notas são exibidas publicamente. Este dataset preserva a estrutura relacional completa do dump público para viabilizar pesquisas sobre a dinâmica desse consenso — em particular sobre como ele opera (ou falha em operar) diante de eventos politicamente sensíveis no contexto brasileiro.

Importante: dataset multilíngue sem coluna de idioma

O dump público do Community Notes é global e contém notas em dezenas de idiomas (majoritariamente inglês). Não há coluna de idioma nos dados originais. Pesquisadores interessados em um idioma específico precisarão aplicar detecção de idioma localmente como etapa de pré-processamento.

Uma abordagem recomendada é usar o modelo fastText lid.176.bin da Meta sobre o campo summary, que permite classificar milhões de notas em minutos com boa acurácia.

Estrutura do dataset

data/
└── snapshot_date=YYYY-MM-DD/
    ├── silver_notes/              # Notas escritas por colaboradores
    ├── silver_ratings/            # Avaliações das notas por outros colaboradores
    ├── silver_note_status_history/ # Histórico de status (CRH, NMR, etc.)
    ├── silver_user_enrollment/    # Perfil e estado dos colaboradores
    └── silver_note_requests/      # Pedidos de nota (batSignals)

metadata/
└── snapshot_date=YYYY-MM-DD/
    ├── download_manifest.json     # URLs, checksums, tamanhos de cada arquivo
    ├── schema_registry.json       # Colunas por shard (detecção de drift)
    ├── schema_alerts.parquet      # Alertas de mudança de esquema
    ├── integrity_summary.parquet  # Resumo de nulos por tabela
    ├── orphan_analysis.parquet    # Análise de integridade referencial
    └── snapshot_inventory.parquet # Inventário completo de arquivos

Tabelas principais

TabelaDescriçãoChave primáriaVolume (snapshot 2026-04-07)
silver_notesNotas com classificação, resumo e metadadosnoteId~2,6M
silver_ratingsAvaliações individuais das notasnoteId + raterParticipantId~190M*
silver_note_status_historyHistórico de status algorítmiconoteId~2,4M*
silver_user_enrollmentCadastro e estado dos avaliadoresparticipantId~141k
silver_note_requestsSinalizações pedindo notas em tweetstweetId~51k

\* Após remoção de registros órfãos (ver abaixo).

Relações entre tabelas

tweets (externo, não disponível no dump)
  │
  ├── silver_notes (noteId, tweetId)
  │     │
  │     ├── silver_ratings (noteId, raterParticipantId)
  │     │     └── silver_user_enrollment (participantId)
  │     │
  │     └── silver_note_status_history (noteId)
  │
  └── silver_note_requests (tweetId)

Pipeline de processamento

Os dados passam por três camadas:

  1. 1.Raw: arquivos TSV originais do dump público, preservados com checksums MD5 e SHA-256.
  2. 2.Bronze: ingestão em DuckDB com todas as colunas como VARCHAR (sem inferência de tipo), unificando shards via union_by_name. Metadados de snapshot e ingestão adicionados.
  3. 3.Silver: colunas tipadas auxiliares (IDs como BIGINT, timestamps derivados de createdAtMillis), remoção de registros órfãos.

Integridade referencial e limitações

O dump público do Community Notes não contém todas as notas que já existiram. Isso resulta em registros órfãos: avaliações e eventos de status que referenciam notas ausentes.

No snapshot de 2026-04-07, antes da limpeza:

  • —11,36% dos noteIds em ratings não tinham nota correspondente (~297k notas, ~19M linhas)
  • —12,66% dos noteIds em status não tinham nota correspondente (~348k notas)
  • —0% dos avaliadores eram órfãos (enrollment completo)

Decisão metodológica: registros órfãos foram removidos das tabelas silver. A análise completa está em metadata/orphan_analysis.parquet. Isso significa que o dataset cobre ~88% do universo de notas avaliadas; os ~12% restantes representam consenso que existiu mas não é observável neste dump.

Uso rápido

Via Hugging Face Datasets

python
from datasets import load_dataset

notas   = load_dataset("histlearn/community-notes-br", "silver_notes", split="train")
ratings = load_dataset("histlearn/community-notes-br", "silver_ratings", split="train")
status  = load_dataset("histlearn/community-notes-br", "silver_note_status_history", split="train")

Via DuckDB (leitura direta dos Parquets)

python
import duckdb

con = duckdb.connect()

notas = con.execute("""
    SELECT *
    FROM 'hf://datasets/histlearn/community-notes-br/data/snapshot_date=2026-04-07/silver_notes/**/*.parquet'
    LIMIT 100
""").fetchdf()

Filtragem por idioma (etapa local)

O dataset não inclui classificação de idioma. Para filtrar notas em português, recomendamos:

python
import fasttext
import re

# Baixar o modelo: https://dl.fbaipublicfiles.com/fasttext/supervised-models/lid.176.bin
model = fasttext.load_model("lid.176.bin")

def detectar_idioma(texto):
    if not texto:
        return "desconhecido", 0.0
    texto = re.sub(r"http\S+", "", texto).replace("\n", " ").strip()
    pred = model.predict(texto)
    return pred[0][0].replace("__label__", ""), round(float(pred[1][0]), 4)

# Aplicar sobre a coluna 'summary' das notas
# fasttext exige numpy em versão <2

Proveniência

  • —Fonte: https://communitynotes.x.com/guide/en/under-the-hood/download-data
  • —Licença dos dados originais: disponibilizados pelo X sob termos de uso público
  • —Pipeline: código completo disponível no notebook que acompanha este repositório
  • —Checksums: cada arquivo baixado tem MD5 e SHA-256 registrados no manifesto

Citação

bibtex
@dataset{community_notes_br_2026,
  author       = {histlearn},
  title        = {Community Notes / X — Snapshot Público},
  year         = {2026},
  publisher    = {Hugging Face},
  url          = {https://huggingface.co/datasets/histlearn/community-notes-br}
}

Contexto de pesquisa

Este dataset foi construído como parte de um projeto de pesquisa em humanidades digitais que investiga como o algoritmo de consenso do Community Notes opera diante de eventos politicamente sensíveis no Brasil — em particular, se casos de grande repercussão e alta ambiguidade geram sistematicamente menos consenso algorítmico do que desinformação mais "simples" (vídeos falsos, manipulação de mídia, etc.).