DistilBERT Emotion Classifier

Model Description

This model is a fine-tuned version of distilbert-base-uncased for multi-class emotion classification. The model classifies text into different emotional categories, enabling applications in sentiment analysis, customer feedback analysis, and social media monitoring.

Developed by: Sathwik3

Model type: Text Classification (Emotion Detection)

Language(s): English

License: Apache 2.0

Base model: distilbert-base-uncased

Model Details

Architecture

The model is based on DistilBERT, a distilled version of BERT that retains 97% of BERT's language understanding while being 40% smaller and 60% faster. The architecture consists of:

  • 6 transformer layers
  • 768 hidden dimensions
  • 12 attention heads
  • ~66M parameters
  • Classification head for emotion prediction

Training Objective

The model was fine-tuned using cross-entropy loss for multi-class classification, optimizing for accurate emotion categorization across multiple emotional states.

Intended Uses

Direct Use

The model can be directly used for:

  • Emotion detection in text documents
  • Sentiment analysis of customer reviews and feedback
  • Social media monitoring to understand emotional tone
  • Content moderation based on emotional content
  • Mental health applications for emotion tracking in journals
  • Chatbot enhancement for emotion-aware responses

Downstream Use

This model can be integrated into larger systems for:

  • Customer service platforms for automated response routing
  • Market research tools for analyzing consumer sentiment
  • Educational platforms for emotional intelligence training
  • Healthcare applications for mental wellness monitoring

Out-of-Scope Use

The model should not be used for:

  • Clinical diagnosis or medical decision-making
  • Making critical decisions about individuals without human oversight
  • Applications where misclassification could cause harm
  • Languages other than English (without additional fine-tuning)
  • Real-time crisis intervention or emergency response

Limitations and Bias

Limitations

  • Language limitation: The model is trained primarily on English text and may not perform well on other languages or code-switched text
  • Context sensitivity: Short texts or texts lacking context may be misclassified
  • Domain specificity: Performance may vary across different domains (e.g., formal vs. informal text)
  • Sarcasm and irony: The model may struggle with non-literal expressions
  • Cultural nuances: Emotion expression varies across cultures, which may affect performance

Bias Considerations

  • The model's predictions may reflect biases present in the training data
  • Emotion categories may not universally apply across all cultures and contexts
  • Performance may vary across demographic groups depending on training data representation
  • Users should validate model outputs, especially in sensitive applications

Recommendations

  • Always review model predictions in high-stakes applications
  • Use the model as a decision support tool, not a sole decision-maker
  • Evaluate performance on your specific use case before deployment
  • Monitor for bias and fairness issues in production
  • Provide clear communication to end users about the model's capabilities and limitations

How to Get Started with the Model

Use the code below to get started with the model:

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

# Load model and tokenizer
model_name = "Sathwik3/distilbert-emotion-classifier"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)

# Example text
text = "I am so happy and excited about this amazing opportunity!"

# Tokenize and predict
inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True, max_length=512)
with torch.no_grad():
    outputs = model(**inputs)
    predictions = torch.nn.functional.softmax(outputs.logits, dim=-1)
    predicted_class = torch.argmax(predictions, dim=-1).item()

print(f"Predicted emotion class: {predicted_class}")
print(f"Confidence scores: {predictions}")

For pipeline usage:

from transformers import pipeline

# Create emotion classification pipeline
emotion_classifier = pipeline("text-classification", model="Sathwik3/distilbert-emotion-classifier")

# Classify emotion
result = emotion_classifier("I am so happy and excited about this amazing opportunity!")
print(result)

Training Details

Training Data

The model was fine-tuned on an emotion classification dataset. Specific dataset details:

  • Dataset: Emotion dataset
  • Size: 16000
  • Emotion categories: ['sadness', 'joy', 'love', 'anger', 'fear', 'surprise']
  • Data split: Train,Validation,Test

Training Procedure

Preprocessing

  • Text tokenization using DistilBERT tokenizer
  • Maximum sequence length: 512 tokens
  • Truncation and padding applied as needed

Training Hyperparameters

  • Training regime: Mixed precision (fp16)
  • Optimizer: AdamW
  • Learning rate: 2e-5
  • Batch size: 64
  • Number of epochs: 2
  • Weight decay: 0.01

Evaluation

Testing Data & Metrics

Testing Data

  • Test set: [Description of test data - placeholder]
  • Test set size: [Number of examples - placeholder]
  • Distribution: [Class distribution information - placeholder]

Metrics

The model's performance is evaluated using:

  • Accuracy: Overall classification accuracy
  • F1 Score: Macro and weighted F1 scores for balanced evaluation
  • Precision: Per-class and average precision
  • Recall: Per-class and average recall
  • Confusion Matrix: For detailed error analysis

Results

Overall Performance

Metric Value
Accuracy 0.9295
Weighted F1 0.9292

Technical Specifications

Model Architecture

  • Base Model: DistilBERT (distilbert-base-uncased)
  • Model Size: ~66M parameters (base) + classification head
  • Layers: 6 transformer layers
  • Hidden Size: 768
  • Attention Heads: 12
  • Intermediate Size: 3072
  • Max Sequence Length: 512 tokens
  • Vocabulary Size: 30,522 tokens

Software

  • Framework: PyTorch
  • Library: Hugging Face Transformers
  • Python Version: 3.10
  • Key Dependencies:
    • transformers
    • torch
    • tokenizers

Citation

If you use this model in your research or applications, please cite:

BibTeX:

@misc{sathwik3-distilbert-emotion,
  author = {Sathwik3},
  title = {DistilBERT Emotion Classifier},
  year = {2024},
  publisher = {Hugging Face},
  howpublished = {\url{https://huggingface.co/Sathwik3/distilbert-emotion-classifier}}
}

Please also cite the original DistilBERT paper:

@article{sanh2019distilbert,
  title={DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter},
  author={Sanh, Victor and Debut, Lysandre and Chaumond, Julien and Wolf, Thomas},
  journal={arXiv preprint arXiv:1910.01108},
  year={2019}
}

APA:

Sathwik3. (2024). DistilBERT Emotion Classifier. Hugging Face. https://huggingface.co/Sathwik3/distilbert-emotion-classifier

Model Card Authors

Sathwik3

Model Card Contact

For questions or feedback about this model, please open an issue in the model's repository or contact via Hugging Face.


This model card follows the guidelines from Mitchell et al. (2019) and the Hugging Face Model Card template.

Downloads last month
36
Safetensors
Model size
67M params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for Sathwik3/distilbert-emotion-classifier

Finetuned
(10077)
this model