FirstTimeUp / README.md
EnJiZ's picture
Upload folder using huggingface_hub
2fa8178 verified
---
language: en
tags:
- emotion-classification
- multilabel-classification
- text-classification
- pytorch
- transformers
datasets:
- emotion
metrics:
- f1
- accuracy
library_name: transformers
pipeline_tag: text-classification
---
# Multilabel Emotion Classification Model - FirstTimeUp
This model is fine-tuned for multilabel emotion classification using distilbert-base-uncased as the base model.
## Model Details
- **Model Name**: FirstTimeUp
- **Base Model**: distilbert-base-uncased
- **Task**: Multilabel Emotion Classification
- **Emotions**: amusement, anger, annoyance, caring, confusion, disappointment, disgust, embarrassment, excitement, fear, gratitude, joy, love, sadness
- **Total Parameters**: 66,373,646
- **Trainable Parameters**: 66,373,646
## Quick Start
### Installation
```bash
pip install torch transformers huggingface_hub
```
### Usage
```python
# Download the repository
from huggingface_hub import snapshot_download
import sys
import os
# Download model files
model_path = snapshot_download(repo_id="EnJiZ/FirstTimeUp")
# Add to path and import
sys.path.append(model_path)
from model import predict_emotions
# Predict emotions
text = "I am so happy and excited!"
emotions = predict_emotions(text, model_path)
print(emotions)
```
### Advanced Usage
```python
import torch
from transformers import AutoTokenizer
import sys
sys.path.append(model_path)
from model import MultiLabelEmotionClassifier, load_model
# Load model manually
model, config = load_model(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path)
# Custom prediction with different threshold
def custom_predict(text, threshold=0.3):
encoding = tokenizer(
text,
truncation=True,
padding='max_length',
max_length=128,
return_tensors='pt'
)
model.eval()
with torch.no_grad():
logits = model(encoding['input_ids'], encoding['attention_mask'])
probabilities = torch.sigmoid(logits)
predictions = (probabilities > threshold).int()
emotion_labels = ['amusement', 'anger', 'annoyance', 'caring', 'confusion', 'disappointment', 'disgust', 'embarrassment', 'excitement', 'fear', 'gratitude', 'joy', 'love', 'sadness']
result = {emotion: {
'predicted': bool(pred),
'probability': float(prob)
} for emotion, pred, prob in zip(emotion_labels, predictions[0], probabilities[0])}
return result
# Example with probabilities
result = custom_predict("I feel great today!", threshold=0.3)
print(result)
```
## Model Architecture
- **Base**: distilbert-base-uncased
- **Classification Head**: Linear layer with dropout (dropout_rate=0.3)
- **Loss Function**: BCEWithLogitsLoss
- **Activation**: Sigmoid (for multilabel classification)
## Training Details
- **Epochs**: 3
- **Batch Size**: 32
- **Learning Rate**: 2e-05
- **Max Sequence Length**: 128
- **Optimizer**: AdamW with weight decay (0.01)
- **Scheduler**: Linear warmup + decay
## Files in this Repository
- `config.json`: Model configuration
- `pytorch_model.bin`: Model weights
- `tokenizer.json`, `tokenizer_config.json`: Tokenizer files
- `model.py`: Custom model class and utility functions
- `README.md`: This file
## Performance
- **Task**: Multilabel Emotion Classification
- **Metrics**: F1-Score (Micro & Macro), Accuracy
- **Validation Strategy**: 80/20 train-validation split
## Supported Emotions
amusement, anger, annoyance, caring, confusion, disappointment, disgust, embarrassment, excitement, fear, gratitude, joy, love, sadness
## License
This model is released under the Apache 2.0 license.
## Citation
```bibtex
@misc{firsttimeup2024,
title={FirstTimeUp: Multilabel Emotion Classification Model},
author={EnJiZ},
year={2024},
url={https://huggingface.co/EnJiZ/FirstTimeUp}
}
```
## Contact
For questions or issues, please open an issue in the repository.