📦 Crom Tabnews DB — 20.857 Posts do TabNews em um Dataset Aberto no Hugging Face
Olá, pessoal do TabNews!
Há pouco mais de um mês, publicamos o Aviso de Coleta explicando a intenção de construir um dataset aberto com os posts do TabNews. Gerou debate, gerou críticas, gerou reflexão — e tudo isso foi bom.
Depois o @pedrodev2026 publicou o crom-tabnews-db: O Retorno confirmando que o dataset estava sendo finalizado.
Hoje o post é mais direto: o dataset está publicado, aberto e funcional.
🔗 Link: CromIA/crom-tabnews-db no Hugging Face
📊 Números da v1.0
| Métrica | Valor |
|---|---|
| Total de posts | 20.857 |
| Tamanho total | 35.6 MB |
| Formato | Parquet (209 chunks) |
| Downloads | 1.225+ |
| Idioma | Português (PT-BR) |
| Licença | ODC-By |
| Compatível com | 🤗 Datasets, Dask, Polars |
🗂️ Estrutura do Dataset
Cada registro representa um post do TabNews e contém 17 colunas:
| Coluna | Tipo | Descrição |
|---|---|---|
id | string | UUID do post |
owner_id | string | UUID do autor |
parent_id | null | Sempre null (são posts raiz, não comentários) |
slug | string | Slug da URL (2–160 chars) |
title | string | Título do post (2–252 chars) |
body | string | Conteúdo completo em Markdown (1–20k chars) |
status | string | Status de publicação (published) |
type | string | Tipo do conteúdo (content) |
source_url | string/null | URL de fonte externa, quando houver |
created_at | string | Data de criação (ISO 8601) |
updated_at | string | Data de última atualização |
published_at | string | Data de publicação |
deleted_at | null | Sempre null (apenas posts ativos) |
owner_username | string | Username do autor (3–29 chars) |
tabcoins | int | Tabcoins totais (-38 a 284) |
tabcoins_credit | int | Tabcoins positivos (0 a 292) |
tabcoins_debit | int | Tabcoins negativos (-500 a 0) |
children_deep_count | int | Total de comentários no post (0 a 778) |
O dataset contém apenas posts raiz (sem comentários), com conteúdo completo em Markdown. Isso significa que você tem acesso ao texto integral de cada publicação, não apenas ao resumo.
🛠️ Como Usar
Duas linhas de Python:
from datasets import load_dataset
ds = load_dataset("CromIA/crom-tabnews-db")
A partir daí, você tem acesso a todos os 20.857 posts. Alguns exemplos práticos:
Analisar os posts mais comentados
df = ds["train"].to_pandas()
top_posts = df.nlargest(10, "children_deep_count")[["title", "owner_username", "children_deep_count", "tabcoins"]]
print(top_posts)
Filtrar posts com mais engajamento positivo
engajados = df[df["tabcoins_credit"] > 10].sort_values("tabcoins_credit", ascending=False)
print(f"{len(engajados)} posts com mais de 10 tabcoins positivos")
Conteúdo técnico para fine-tuning
# Posts com mais de 500 caracteres e engajamento positivo
corpus = df[(df["body"].str.len() > 500) & (df["tabcoins"] > 0)]
print(f"{len(corpus)} posts de qualidade para treinamento")
🏗️ Como Foi Construído
O pipeline é direto e reproduzível:
Tabnews API (listagem) → Pandas DataFrame → Tabnews API (conteúdo completo) → Pandas DataFrame → HuggingFace Dataset (Parquet)
Stack: Python, Pandas, HuggingFace Datasets, Tabnews API.
Nada de mágica. Nada de scraping obscuro. API pública, processamento limpo, resultado aberto.
🛡️ Sobre Ética e Opt-Out
No primeiro post, a comunidade levantou pontos importantes. Ouvimos. Vou ser direto sobre o que fizemos:
O que mantivemos desde o início:
- ✅ Licença ODC-By — quem usar o dataset, credita a fonte original
- ✅ Opt-out permanente — quem pediu remoção, foi removido e entra na blacklist
- ✅ Formulário sempre aberto — não tem prazo final
O que mudamos após o feedback:
- ✅ Estendemos o prazo de 72h para 120h (5 dias) antes da v1.0
- ✅ Deixamos claro que o formulário nunca fecha
- ✅ Quem solicitar remoção após a v1.0 será removido na v1.1 e incluído permanentemente na blacklist
O formulário de opt-out continua ativo:
🔗 Formulário de Remoção
Se você é autor no TabNews e não quer seus posts no dataset, preenche o formulário. Sem burocracia, sem prazo, sem julgamento.
🎯 Para Que Serve?
O dataset por si só já é útil para várias coisas:
- Treinamento de modelos de linguagem — fine-tuning de LLMs pequenas com dialeto técnico brasileiro
- Análise de dados — tendências, tópicos populares, evolução da comunidade
- Busca semântica — motores de busca especializados em conteúdo técnico PT-BR
- Pesquisa acadêmica — estudos sobre comunidades de tecnologia brasileiras
- Projetos pessoais — qualquer dev pode baixar e experimentar
O projeto maior continua sendo o TabLM — um modelo Instruct/Chat com menos de 100M de parâmetros, proficiente em PT-BR técnico. O crom-tabnews-db é o primeiro tijolo desse muro.
📈 O Que Vem Depois?
- v1.1 — Remoção dos opt-outs que chegarem após a v1.0 + limpeza adicional
- Saneamento avançado — Remoção de tokens, chaves e dados sensíveis que possam ter sido postados por acidente
- Metadados enriquecidos — Tags, categorias e métricas adicionais
- TabLM — Início dos experimentos de treinamento
💡 Consideração Final
No primeiro post, a pergunta era: "É possível criar um Chat-PTBR com menos de 100M de parâmetros?"
A resposta honesta continua sendo: não sabemos. Mas agora pelo menos temos os dados para tentar.
20.857 posts de conteúdo técnico brasileiro, curado e aberto. Isso já é mais do que a maioria dos datasets em PT-BR disponíveis para pesquisa. E só foi possível porque o TabNews existe e porque essa comunidade produz conteúdo de qualidade.
🔗 Dataset: huggingface.co/datasets/CromIA/crom-tabnews-db
🔗 Opt-Out: Formulário de Remoção
🔗 Crom AI Research: crom.run
Pesquisa conduzida por @pedrodev2026 e MrJ — Crom AI Research.
Fonte: https://crom.run/