Private data pipeline for the Sweenk News Taxonomy (SNT) classifier.
Builds a unified corpus from multiple sources, deduplicates, runs quality filters, and produces gold-quality labels via Sonnet.
snt_data/
corpus/ # ingest, dedup, quality filter, labelers
snt_taxonomy.py # canonical 17 IPTC top-level + 133 sub-cats + 16 regions
data/
corpus.sqlite # canonical labeled corpus (Git LFS)
analyses/ # validation reports
| Source | Rows | Notes |
|---|---|---|
| Sweenk eval | ~12K | production reads |
| HuffPost | ~200K | Kaggle dataset |
| CC-News | ~30K | 2017–2018 snapshot |
sweenk/archived-databases— older Sweenk corpus snapshots; useful for source discovery (which publishers we've historically scraped) but not for re-import, since current corpus already covers the topical range we need.
ingest/*→ raw rows intodata/staging.sqlitededupe.py→ mark duplicatesquality_filter.py→ markquality_passed=1label_classla.py→ silver labels via classla classifierlabel_sonnet_full.py→ gold labels via Sonnet (run in rounds)
# 1. Pick stratified sample, write NDJSON chunks
uv run python -m snt_data.corpus.label_sonnet_full prepare --per-category 100 --chunk 100
# 2. Dispatch Sonnet subagents to label each chunk → results NDJSON
# 3. Persist labels back to corpus.sqlite
uv run python -m snt_data.corpus.label_sonnet_full writebackRun on the Mac Mini via launchd (see scripts/); each round commits and pushes.