DistilBERT Multi-Task Classifier for Child Helpline Case Management
Model Description
This is a fine-tuned DistilBERT-base-uncased model designed for multi-task classification of child helpline and call center transcripts. Developed by BITZ IT Consulting as part of the OpenCHS AI pipeline for child helplines and crisis support services in East Africa.
Speed and accuracy at resolving and reporting the cases matters, this finetuned model offers both.
Model Architecture
Base Model: DistilBERT (distilbert-base-uncased)
Architecture: Multi-task classifier with 4 specialized output heads
1from transformers import AutoTokenizer
2from huggingface_hub import hf_hub_download
3import torch
4import json
5import re
6import numpy as np
78# Model setup9MODEL_NAME ="openchs/cls-gbv-distilbert-v1"1011# Load tokenizer12tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)1314# Load label mappings15main_categories = json.load(open(hf_hub_download(MODEL_NAME,"main_categories.json")))16sub_categories = json.load(open(hf_hub_download(MODEL_NAME,"sub_categories.json")))17interventions = json.load(open(hf_hub_download(MODEL_NAME,"interventions.json")))18priorities = json.load(open(hf_hub_download(MODEL_NAME,"priorities.json")))1920# Initialize model21model = MultiTaskDistilBert.from_pretrained(22 MODEL_NAME,23 num_main=len(main_categories),24 num_sub=len(sub_categories),25 num_interv=len(interventions),26 num_priority=len(priorities)27)2829# Set device30device = torch.device("cuda"if torch.cuda.is_available()else"cpu")31model = model.to(device)32model.eval()3334defclassify_multitask_case(narrative:str):35"""
36 Classify a helpline case narrative across all task dimensions.
3738 Args:
39 narrative (str): The case narrative/transcript text
4041 Returns:
42 dict: Classifications for all four tasks with confidence scores
43 """4445# Text preprocessing46 text = narrative.lower().strip()47 text = re.sub(r'[^a-z0-9\s]','', text)# Remove special characters4849# Tokenization50 inputs = tokenizer(51 text,52 truncation=True,53 padding="max_length",54 max_length=256,55 return_tensors="pt"56).to(device)5758# Inference59with torch.no_grad():60 logits_main, logits_sub, logits_interv, logits_priority = model(**inputs)6162# Convert logits to probabilities63 probs_main = torch.softmax(logits_main, dim=1).cpu().numpy()[0]64 probs_sub = torch.softmax(logits_sub, dim=1).cpu().numpy()[0]65 probs_interv = torch.softmax(logits_interv, dim=1).cpu().numpy()[0]66 probs_priority = torch.softmax(logits_priority, dim=1).cpu().numpy()[0]6768# Get predictions (argmax)69 pred_main =int(np.argmax(probs_main))70 pred_sub =int(np.argmax(probs_sub))71 pred_interv =int(np.argmax(probs_interv))72 pred_priority =int(np.argmax(probs_priority))7374return{75"main_category":{76"label": main_categories[pred_main],77"confidence":float(probs_main[pred_main])78},79"sub_category":{80"label": sub_categories[pred_sub],81"confidence":float(probs_sub[pred_sub])82},83"intervention":{84"label": interventions[pred_interv],85"confidence":float(probs_interv[pred_interv])86},87"priority":{88"label": priorities[pred_priority],89"confidence":float(probs_priority[pred_priority])90}91}9293# Example usage94narrative ="""
95Hello, I've been trying to find help for my son Ken. He's only ten years old and
96he's been going through a terrible time at school. There's this boy, James, who
97keeps harassing him. It started with name-calling and teasing, but it's escalated
98to physical violence. I don't know what to do. I can't bear to see my child suffer like this.
99"""100101result = classify_multitask_case(narrative)102print(json.dumps(result, indent=2))
Expected Output:
json
1{2"main_category":{3"label":"Advice and Counselling",4"confidence":0.855},6"sub_category":{7"label":"School Related Issues",8"confidence":0.729},10"intervention":{11"label":"Counselling",12"confidence":0.6813},14"priority":{15"label":2,16"confidence":0.9117}18}
FastAPI Integration
python
1from fastapi import FastAPI, HTTPException
2from pydantic import BaseModel
3from typing import Optional
4import time
56app = FastAPI(title="Child Helpline Case Classification API")78classCaseInput(BaseModel):9 narrative:str10 include_confidence: Optional[bool]=True1112@app.post("/classify")13asyncdefclassify_case(input_data: CaseInput):14try:15 start_time = time.time()16 result = classify_multitask_case(input_data.narrative)17 processing_time = time.time()- start_time
1819 response ={20"success":True,21"classification": result,22"processing_time_seconds":round(processing_time,4)23}2425ifnot input_data.include_confidence:26# Remove confidence scores if not requested27for task in result:28ifisinstance(result[task],dict):29 result[task]= result[task]["label"]3031return response
3233except Exception as e:34raise HTTPException(status_code=500, detail=str(e))3536@app.get("/health")37asyncdefhealth_check():38return{"status":"healthy","model": MODEL_NAME}
Training Details
Training Data
Total Dataset: 6,859 Synthetic helpline call transcripts was used to Train
Real Data: N/A
Synthetic Data: True
Languages: Primarily English
Domain: Child protection, family services, crisis support
Data Distribution
Main Categories: Balanced across 6 primary case types
Sub Categories: Long-tail distribution with 43 specific topics
Interventions: 4 different action types based on case severity
Priority Levels: 3 levels (Low, Medium, High) for case escalation
Training Configuration
Base Model: distilbert-base-uncased
Optimizer: AdamW (lr=2e-5)
Loss Function: Combined CrossEntropyLoss across all tasks
Batch Size: 16
Max Length: 512 tokens
Epochs: 12
Weight Decay: 0.01
Hardware: NVIDIA GeForce RTX 4060
Multi-Task Learning Approach
Shared Encoder: Single DistilBERT backbone for all tasks
Task-Specific Heads: Dedicated classification layers per task
Joint Training: Simultaneous optimization across all objectives
Loss Weighting: Equal weighting across all four tasks
Social Impact and Applications
Primary Use Cases
Automated Case Routing: Instant classification and priority assignment
Supervisor Support: Reduces manual case categorization workload
Quality Assurance: Consistent classification standards across all calls
Resource Allocation: Priority-based staffing and intervention planning
Operational Benefits
Scalability: Handle thousands of cases without manual intervention
Consistency: Eliminate human bias in case classification
Speed: Real-time classification for immediate case routing
Insights: Data-driven understanding of case patterns and trends
Target Organizations
Child Helplines: 116 services across East Africa
Crisis Support Services: Mental health and emergency hotlines
Family Support Centers: Case management and intervention planning
NGOs and Government Agencies: Child protection and welfare services
Limitations and Considerations
Performance Limitations
Sub-Category Challenge: 41.67% accuracy indicates need for more balanced training data
Class Imbalance: Some categories have limited representation in training data
Context Length: Limited to 512 tokens may truncate longer narratives
Language Bias: Primarily trained on English
Operational Considerations
Human Oversight: Critical cases should always involve human review
Confidence Thresholds: Low-confidence predictions should trigger manual review
Regular Retraining: Model performance may degrade without periodic updates
Cultural Context: Model may not capture all cultural nuances in case presentation
Ethical Considerations
Privacy: All training data was synthetic
Bias Monitoring: Regular evaluation for demographic and linguistic bias
Transparency: Clear documentation of model limitations and appropriate use
Child Safety: Special protocols for high-priority cases involving immediate danger
Integration Pipeline
The model is designed to integrate seamlessly into larger AI pipelines:
ASR (Whisper) → Transcribes call audio to text
Text Preprocessing → Cleans and normalizes transcript
MultiTask Classification → Categorizes and prioritizes case
NER → Extracts Entities
Case Management System → Routes to appropriate classes
Quality Assurance → Tracks outcomes and model performance
Model Maintenance
Performance Monitoring
Accuracy Tracking: Monitor per-task performance over time
Edge Case Detection: Identify cases requiring manual review
Feedback Loop: Incorporate corrected predictions into retraining data
Update Schedule
Monthly Reviews: Performance metrics and edge case analysis
Quarterly Retraining: Incorporate new data and correct classification errors
Annual Model Refresh: Major architecture updates and comprehensive evaluation
Citation
bibtex
1@software{chs_distilbert_multitask_2025,
2 title={DistilBERT Multi-Task Classifier for Child Helpline Case Management},
3 author={BITZ IT Consulting Team},
4 year={2025},
5 publisher={Hugging Face},
6 journal={Hugging Face Model Hub},
7 howpublished={\url{https://huggingface.co/openchs/cls-gbv-distilbert-v1}},
8 note={AI for Social Impact: Automated Case Classification for Child Protection Services}
9}
Model Examination
Interpretability Analysis
The model's multi-task architecture allows for analysis of shared vs. task-specific representations:
Shared Features: The DistilBERT encoder captures general linguistic patterns useful across all classification tasks
Task-Specific Heads: Each classification head specializes in different aspects of case analysis
Attention Patterns: The model shows higher attention to key phrases indicating urgency, relationship dynamics, and specific issues
Feature Importance: Critical terms include age indicators, relationship descriptors, emotion words, and action verbs
Error Analysis
Common misclassification patterns:
Sub-Category Confusion: Model sometimes confuses related sub-categories (e.g., different types of abuse)
Federated Learning: Privacy-preserving multi-organization training
Citation
bibtex
1@model{qa_helpline_distilbert_2025,
2 title={QA Multi-Head DistilBERT for Helpline Quality Assessment},
3 author={BITZ IT Consulting Team},
4 year={2025},
5 publisher={Hugging Face},
6 journal={Hugging Face Model Hub},
7 howpublished={\url{https://huggingface.co/openchs/cls-gbv-distilbert-v1}},
8 note={AI for Social Impact: Child Helplines and Crisis Support in East Africa}
9}
Model Card Contact
Organization: BITZ IT Consulting
Support: Technical questions and collaboratifzon inquiries welcome