A2 โ Activity Type Classification Model
Classifies a MyVillage activity into one of seven types based on its title, description, and instructions.
MyVillage product use case
Standardizes activity metadata, supports activity routing/evaluation, and gives the activity-generation ecosystem a lightweight classifier instead of relying on a large model for every decision. Supports A1 Activity Generation and downstream activity analytics.
Base model / architecture
distilbert-base-uncased, fine-tuned for sequence classification with 7 labels.
Input / output schema
- Input: free text combining activity title, description, and instructions (newline-separated)
- Output: one of ['REFLECTION', 'RESEARCH', 'COLLABORATE', 'CREATE', 'PRACTICE', 'EXPERIENCE', 'TEACH']
Training method
Supervised fine-tuning, 4 epochs, learning rate 2e-05, batch size 16, deterministic 80/10/10 train/validation/test split (seed=42).
Dataset
Real labeled MyVillage activities pulled via the MCP activity_list tool (title, description,
instructions, activityType), with no personally identifying information included. [FILL IN real row
count and pull date once trained on real data -- this run used a small hand-written fallback set and
should not be treated as production-ready.]
Evaluation
Majority-class baseline: 14.3% accuracy. Fine-tuned test accuracy / macro-F1: see notebook output above (fill in exact numbers here before publishing). See the confusion matrix and edge-case behavior tests in the training notebook for qualitative results.
Inference example
from transformers import AutoModelForSequenceClassification, AutoTokenizer
import torch
model = AutoModelForSequenceClassification.from_pretrained("Monipoo0904/MVP-A2")
tokenizer = AutoTokenizer.from_pretrained("Monipoo0904/MVP-A2")
text = "Teach a younger learner a new skill\n\nPrepare a short lesson and teach it to someone else."
inputs = tokenizer(text, truncation=True, padding=True, return_tensors="pt")
logits = model(**inputs).logits
predicted_label = model.config.id2label[logits.argmax(dim=-1).item()]
Known limitations
- Trained on a small fallback dataset in this run -- confirm real-data results before production use.
- May confuse semantically adjacent categories (e.g. EXPERIENCE vs TEACH, RESEARCH vs REFLECTION) -- see edge-case test results above.
- Does not know activity context beyond the text fields given (e.g. no learner history).
Privacy / safety notes
Training data should contain only activity title/description/instructions -- no villager names, IDs, or other personal identifiers. Verify this before publishing the dataset alongside the model, if doing so.
- Downloads last month
- -