Utkarsh64's picture
Upload 7 files
d61f8c6 verified
---
license: mit
tags:
- emotion-classification
- mental-health
- multi-label
- transformers
- distilbert
- goemotions
language:
- en
metrics:
- f1
- precision
- recall
pipeline_tag: text-classification
base_model: distilbert-base-uncased
---
# Mental Health Emotion Detection - Enhanced DistilBERT
This model is a fine-tuned DistilBERT for multi-label emotion classification in mental health applications, detecting 28 different emotions from text input with enhanced architecture and advanced training techniques.
## Model Description
- **Model Type:** Enhanced DistilBERT (Fine-tuned)
- **Base Model:** distilbert-base-uncased
- **Task:** Multi-label emotion classification
- **Dataset:** GoEmotions (balanced and enhanced)
- **Languages:** English
- **Architecture:** Enhanced with additional layers, focal loss, and class balancing
## Performance
| Metric | Score |
|--------|-------|
| F1-Score | 0.298 |
| Precision | 0.459 |
| Recall | 0.260 |
| Accuracy | 89.5% |
| Improvement | 7.6x over baseline |
## Emotions Detected
The model can detect 28 emotions: admiration, amusement, anger, annoyance, approval, caring, confusion, curiosity, desire, disappointment, disapproval, disgust, embarrassment, excitement, fear, gratitude, grief, joy, love, nervousness, optimism, pride, realization, relief, remorse, sadness, surprise, neutral.
## Usage
```python
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
# Load model and tokenizer
tokenizer = AutoTokenizer.from_pretrained("YOUR_USERNAME/mental-health-enhanced-distilbert")
model = AutoModelForSequenceClassification.from_pretrained("YOUR_USERNAME/mental-health-enhanced-distilbert")
# Example usage
text = "I'm feeling really anxious about tomorrow"
inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True, max_length=128)
with torch.no_grad():
outputs = model(**inputs)
predictions = torch.sigmoid(outputs.logits)
# Get emotion labels
emotions = []
for i, score in enumerate(predictions[0]):
if score > 0.4: # Threshold
emotion = model.config.id2label[i]
emotions.append((emotion, score.item()))
print(emotions)
```
## Training Details
### Enhanced Architecture
- **Base:** DistilBERT with additional hidden layers
- **Enhancements:**
- Layer normalization
- Dropout regularization
- Enhanced forward pass with ReLU activations
- Multi-layer classification head (768 β†’ 512 β†’ 256 β†’ 128 β†’ 28)
### Advanced Training Techniques
- **Loss Function:** Focal Loss for class imbalance handling
- **Class Weighting:** Advanced weighting for rare emotions
- **Data Balancing:** Oversampling rare emotions, undersampling common ones
- **Optimization:** AdamW with cosine scheduling
- **Early Stopping:** Patience-based with best model saving
### Training Data
- **Dataset:** GoEmotions (balanced subset)
- **Training Samples:** ~12,750
- **Validation Samples:** ~2,250
- **Preprocessing:** Contraction expansion, lowercase normalization
- **Balancing:** Advanced sampling for 28 emotion categories
## Model Architecture
```
Input Text β†’ DistilBERT Encoder β†’ Enhanced Classification Head
↓
Hidden Layer 1 (768β†’512)
↓
Hidden Layer 2 (512β†’256)
↓
Hidden Layer 3 (256β†’128)
↓
Output Layer (128β†’28)
```
## Intended Use
This model is designed for:
- Mental health chatbots and companions
- Emotion-aware dialogue systems
- Mental health screening tools
- Research in computational psychology
- Empathetic AI applications
## Limitations
- Trained primarily on English text
- Performance may vary with very informal language
- Should not be used as sole diagnostic tool for mental health
- Requires context for optimal performance
## Training Metrics by Epoch
| Epoch | F1-Score | Precision | Recall |
|-------|----------|-----------|--------|
| 1 | 0.0145 | 0.0419 | 0.0089 |
| 2 | 0.1430 | 0.2797 | 0.1211 |
| 3 | 0.2141 | 0.4751 | 0.1804 |
| 4 | 0.2749 | 0.4317 | 0.2340 |
| 5 | 0.2897 | 0.4524 | 0.2533 |
| 6 | 0.2981 | 0.4592 | 0.2597 |
## Citation
If you use this model, please cite:
```
@misc{mental-health-emotion-distilbert,
title={Mental Health Emotion Detection - Enhanced DistilBERT},
author={Your Name},
year={2024},
publisher={Hugging Face},
url={https://huggingface.co/YOUR_USERNAME/mental-health-enhanced-distilbert}
}
```
## Acknowledgments
- Built on DistilBERT by Hugging Face
- Trained on GoEmotions dataset
- Enhanced with advanced ML techniques for mental health applications