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
-
Safetensors
Model size
67M params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support