Text Classification
Transformers
PyTorch
Safetensors
English
custom_multilabel_emotion
emotion-classification
multilabel-classification
Instructions to use EnJiZ/FirstTimeUp with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use EnJiZ/FirstTimeUp with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="EnJiZ/FirstTimeUp")# Load model directly from transformers import MultiLabelEmotionClassifier model = MultiLabelEmotionClassifier.from_pretrained("EnJiZ/FirstTimeUp", dtype="auto") - Notebooks
- Google Colab
- Kaggle
| 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. | |