AnkitAI's picture
Update README.md
9a1fb61 verified
metadata
license: mit
datasets:
  - dair-ai/emotion
language:
  - en
library_name: transformers
widget:
  - text: I am so happy with the results!
  - text: I am so pissed with the results!
tags:
  - debarta
  - debarta-v3-small
  - emotions-classifier

Fast Emotion-X: Fine-tuned DeBERTa V3 Small Based Emotion Detection

This model is a fine-tuned version of microsoft/deberta-v3-small for emotion detection using the dair-ai/emotion dataset.

Overview

Fast Emotion-X is a state-of-the-art emotion detection model fine-tuned from Microsoft's DeBERTa V3 Small model. It is designed to accurately classify text into one of six emotional categories. Leveraging the robust capabilities of DeBERTa, this model is fine-tuned on a comprehensive emotion dataset, ensuring high accuracy and reliability.

Model Details

  • Model Name: AnkitAI/deberta-v3-small-base-emotions-classifier
  • Base Model: microsoft/deberta-v3-small
  • Dataset: dair-ai/emotion
  • Fine-tuning: The model is fine-tuned for emotion detection with a classification head for six emotional categories: anger, disgust, fear, joy, sadness, and surprise.

Emotion Labels

  • Anger
  • Disgust
  • Fear
  • Joy
  • Sadness
  • Surprise

Usage

You can use this model directly with the provided Python package or the Hugging Face transformers library.

Installation

Install the package using pip:

pip install emotionclassifier

Basic Usage

Here's an example of how to use the emotionclassifier to classify a single text:

from emotionclassifier import EmotionClassifier

# Initialize the classifier with the default model
classifier = EmotionClassifier()

# Classify a single text
text = "I am very happy today!"
result = classifier.predict(text)
print("Emotion:", result['label'])
print("Confidence:", result['confidence'])

Batch Processing

You can classify multiple texts at once using the predict_batch method:

texts = ["I am very happy today!", "I am so sad."]
results = classifier.predict_batch(texts)
print("Batch processing results:", results)

Visualization

To visualize the emotion distribution of a text:

from emotionclassifier import plot_emotion_distribution

result = classifier.predict("I am very happy today!")
plot_emotion_distribution(result['probabilities'], classifier.labels.values())

Command-Line Interface (CLI) Usage

You can also use the package from the command line:

emotionclassifier --model deberta-v3-small --text "I am very happy today!"

DataFrame Integration

Integrate with pandas DataFrames to classify text columns:

import pandas as pd
from emotionclassifier import DataFrameEmotionClassifier

df = pd.DataFrame({
    'text': ["I am very happy today!", "I am so sad."]
})

classifier = DataFrameEmotionClassifier()
df = classifier.classify_dataframe(df, 'text')
print(df)

Emotion Trends Over Time

Analyze and plot emotion trends over time:

from emotionclassifier import EmotionTrends

texts = ["I am very happy today!", "I am feeling okay.", "I am very sad."]
trends = EmotionTrends()
emotions = trends.analyze_trends(texts)
trends.plot_trends(emotions)

Fine-tuning

Fine-tune a pre-trained model on your own dataset:

from emotionclassifier.fine_tune import fine_tune_model

# Define your training and validation datasets
train_dataset = ...
val_dataset = ...

# Fine-tune the model
fine_tune_model(classifier.model, classifier.tokenizer, train_dataset, val_dataset, output_dir='fine_tuned_model')

Using transformers Library

from transformers import AutoModelForSequenceClassification, AutoTokenizer

model_name = "AnkitAI/deberta-v3-small-base-emotions-classifier"
model = AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# Example usage
def predict_emotion(text):
    inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True, max_length=128)
    outputs = model(**inputs)
    logits = outputs.logits
    predictions = logits.argmax(dim=1)
    return predictions

text = "I'm so happy with the results!"
emotion = predict_emotion(text)
print("Detected Emotion:", emotion)

Training

The model was trained using the following parameters:

  • Learning Rate: 2e-5
  • Batch Size: 4
  • Weight Decay: 0.01
  • Evaluation Strategy: Epoch

Training Details

  • Evaluation Loss: 0.0858
  • Evaluation Runtime: 110070.6349 seconds
  • Evaluation Samples/Second: 78.495
  • Evaluation Steps/Second: 2.453
  • Training Loss: 0.1049
  • Evaluation Accuracy: 94.6%
  • Evaluation Precision: 94.8%
  • Evaluation Recall: 94.5%
  • Evaluation F1 Score: 94.7%

Model Card Data

Parameter Value
Model Name microsoft/deberta-v3-small
Training Dataset dair-ai/emotion
Number of Training Epochs 20
Learning Rate 2e-5
Per Device Train Batch Size 4
Evaluation Strategy Epoch
Best Model Accuracy 94.6%

License

This model is licensed under the MIT License.