--- 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.