Siena Sentiment Analysis Model
This model is a fine-tuned version of distilbert-base-uncased
for sentiment analysis on customer support tickets, capable of classifying text into five sentiment categories.
Model Description
- Model Architecture: DistilBERT (66M parameters)
- Task: Multi-class Sentiment Classification
- Language: English
- Training Data: 5,000 synthetic customer support tickets generated using GPT-4
- Input: Customer support tickets or similar text (50-200 words)
- Output: Sentiment classification into one of five categories:
- Strong Negative (0)
- Mild Negative (1)
- Neutral (2)
- Mild Positive (3)
- Strong Positive (4)
Limitations
- Model is trained on synthetic data, which may not capture all real-world nuances
- Best suited for customer support context; may not generalize well to other domains
- Input text should be between 50-200 words for optimal performance
Training Procedure
Training Data
The model was trained on 5,000 synthetic customer support tickets:
- 1,000 samples per sentiment category
- Generated using GPT-4o-mini for balanced representation
- Text length between 50-200 words
- Focus on product and service-related issues
Training Hyperparameters
- Optimizer: AdamW
- Learning rate: 2e-5
- Batch size: 16
- Training epochs: 3
- Max sequence length: 128 tokens
How to Use
Here's how to use the model with the Transformers library:
from transformers import pipeline
# Load the sentiment analysis pipeline
classifier = pipeline("text-classification", model="andyfe/siena-sentiment")
# Example text
text = """I am extremely disappointed with the customer service I received today. I've been waiting for a response for over a week, and when I finally got one, it didn't address my issue at all. This is unacceptable."""
# Get prediction
result = classifier(text)
print(result)
For more detailed usage with the model directly:
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
# Load model and tokenizer
tokenizer = AutoTokenizer.from_pretrained("andyfe/siena-sentiment")
model = AutoModelForSequenceClassification.from_pretrained("andyfe/siena-sentiment")
# Prepare input text
text = "Your customer service team was incredibly helpful and resolved my issue quickly!"
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=128)
# Get prediction
outputs = model(**inputs)
predictions = torch.nn.functional.softmax(outputs.logits, dim=-1)
predicted_label = torch.argmax(predictions).item()
# Map prediction to sentiment label
id2label = {
0: "Strong Negative",
1: "Mild Negative",
2: "Neutral",
3: "Mild Positive",
4: "Strong Positive"
}
print(f"Predicted sentiment: {id2label[predicted_label]}")
- Downloads last month
- 13
Model tree for andyfe/siena-sentiment
Base model
distilbert/distilbert-base-uncasedEvaluation results
- accuracy on Customer Support Ticketsself-reported0.950