Designed a label taxonomy for community post classification with written definitions, worked examples, and an explicit decision rule for the hardest boundary between adjacent labels.
Built and hand-labeled the training dataset, then trained a classifier locally and benchmarked it against a zero-shot baseline rather than reporting accuracy in isolation.
Evaluated with a per-class confusion matrix and an inter-annotator agreement report, using disagreement between labelers to expose where the taxonomy itself was ambiguous.
Diagnosed misclassifications to specific taxonomy and data issues, applied one targeted improvement, and re-measured on the same held-out set to confirm the gain was real.
The bullets above are reported in the full source resume ↗. Repository findings and any differences are identified separately below.
01 / SYSTEM ARCHITECTURE
How it fits together.
Local scripts clean the Reddit dataset, validate its four-label taxonomy and run the Groqbaseline. The notebook fine-tunes DistilBERT on a stratified 305 / 66 / 66 train-validation-test split using a Colab T4. Evaluation compares the small classifier with the zero-shot baseline and reports per-class errors, so minority-class collapse remains visible.
Documented first run versus the revised DistilBERT run on the locked 66-example test set; loss weighting, epoch count and checkpoint selection changed together.
Accuracy 0.561 → 0.742; macro-F10.35 → 0.70. Meme F1 rose from 0.00 to 0.53 and community-meta F1 from 0.00 to 0.67. This is a combined revision, not an isolated weighting ablation.
Zero-shot Groq comparison with an incomplete baseline run.
Groq accuracy 0.847 and macro-F10.82 cover 59 / 66 examples because seven requests failed at the daily token limit. DistilBERT accuracy 0.742 and macro-F10.70 cover all 66; the denominators are not matched.