|
|
--- |
|
|
library_name: transformers |
|
|
pipeline_tag: text-classification |
|
|
license: mit |
|
|
tags: |
|
|
- distilbert |
|
|
- sentiment |
|
|
- football |
|
|
- fine-tuning |
|
|
model_name: DistilBERT Football Sentiment (Positive vs Negative) |
|
|
language: |
|
|
- en |
|
|
--- |
|
|
|
|
|
# DistilBERT Football Sentiment — Positive vs Negative |
|
|
|
|
|
## Purpose |
|
|
Fine-tune a compact transformer (DistilBERT) to classify short football-related comments as **positive (1)** or **negative (0)**. This supports a course assignment on text modeling and evaluation. |
|
|
|
|
|
## Dataset |
|
|
- **Source:** `james-kramer/football_news` on Hugging Face. |
|
|
- **Schema:** `text` (string), `label` (0/1). |
|
|
- **Task:** Binary sentiment classification (`0=negative`, `1=positive`). |
|
|
- **Splits:** Stratified **80/10/10** (train/val/test) created in this notebook. |
|
|
- **Cleaning:** Strip text, drop empty/NA rows. |
|
|
|
|
|
## Preprocessing |
|
|
- **Tokenizer:** `distilbert-base-uncased` (uncased), `max_length=256`, truncation. |
|
|
- **Label mapping:** `{0: "negative", 1: "positive"}`. |
|
|
|
|
|
## Training Setup |
|
|
- **Base model:** `distilbert-base-uncased` |
|
|
- **Epochs:** 5 |
|
|
- **Batch size:** 16 |
|
|
- **Learning rate:** 3e-05 |
|
|
- **Weight decay:** 0.01 |
|
|
- **Warmup ratio:** 0.1 |
|
|
- **Early stopping:** patience = 2 (monitor F1 on validation) |
|
|
- **Seed:** 42 |
|
|
- **Hardware:** Google Colab (GPU) |
|
|
|
|
|
## Metrics (Held-out Test) |
|
|
```json |
|
|
{ |
|
|
"eval_loss": 0.0029852271545678377, |
|
|
"eval_accuracy": 1.0, |
|
|
"eval_precision": 1.0, |
|
|
"eval_recall": 1.0, |
|
|
"eval_f1": 1.0, |
|
|
"eval_runtime": 0.3123, |
|
|
"eval_samples_per_second": 352.273, |
|
|
"eval_steps_per_second": 22.417, |
|
|
"epoch": 4.0 |
|
|
} |
|
|
``` |
|
|
|
|
|
## Confusion Matrix & Errors |
|
|
The Colab notebook includes a confusion matrix for validation and test, plus a short error analysis with example misclassifications and hypotheses (e.g., injury news phrased neutrally but labeled negative). |
|
|
| | Pred 0 | Pred 1 | |
|
|
|-----------|-------:|-------:| |
|
|
| **True 0**| 55 | 0 | |
|
|
| **True 1**| 0 | 55 | |
|
|
|
|
|
## Brief Error Analysis (Concrete Examples & Hypotheses) |
|
|
No misclassifications were observed in the held-out test split (confusion matrix = perfect). |
|
|
However, given the very small dataset size (~30 examples), this likely reflects **overfitting** rather than true robustness. |
|
|
|
|
|
## Limitations & Ethics |
|
|
- Dataset size and labeling style can lead to unstable metrics; neutral/ambiguous tone is hard. |
|
|
- Sports injury and team-management news may bias wording and labels. |
|
|
- For coursework only; not for production or sensitive decisions. |
|
|
|
|
|
## Reproducibility |
|
|
- Python: 3.12 |
|
|
- Transformers: >=4.41 |
|
|
- Datasets: >=2.19 |
|
|
- Seed: 42 |
|
|
|
|
|
## License |
|
|
- Code & weights: MIT (adjust per course guidelines) |
|
|
- Dataset: see the original dataset's license/terms |
|
|
|
|
|
## AI Assistance Disclosure |
|
|
- GenAI tools assisted with notebook structure and documentation; modeling choices and evaluation were implemented and verified by the author. |
|
|
|