language: multilingual
license: apache-2.0
tags:
- sentiment-analysis
- text-classification
- xlm-roberta
- dual-head
Sentiment Classifier
Model Description
This is a dual-head sentiment classifier built on top of XLM-RoBERTa. The model performs two tasks simultaneously:
- Sentiment Classification: Predicts sentiment labels (positive, neutral, negative)
- Sentiment Score Regression: Predicts a continuous sentiment score in the range [0, 1]
The model uses a weighted loss function combining cross-entropy (70%) for classification and MSE (30%) for regression, allowing it to capture both discrete sentiment categories and fine-grained sentiment intensity.
Model Architecture
- Base Model: xlm-roberta-base
- Task: text-classification
- Number of Labels: 3
- Labels: negative, neutral, positive
Training Configuration
- Epochs: 10
- Batch Size: 128
- Learning Rate: 2e-05
- Warmup Ratio: 0.1
- Weight Decay: 0.01
- Max Seq Length: 256
- Mixed Precision: FP16=False, BF16=True
Performance Metrics
- Loss: 0.6947
- Accuracy: 0.4901
- Precision: 0.2402
- Recall: 0.4901
- F1: 0.3224
- F1 Macro: 0.3289
- F1 Negative: 0.0000
- Precision Negative: 0.0000
- Recall Negative: 0.0000
- Support Negative: 900
- F1 Neutral: 0.6578
- Precision Neutral: 0.4901
- Recall Neutral: 1.0000
- Support Neutral: 865
- Runtime: 0.7012
- Samples Per Second: 2517.1350
- Steps Per Second: 9.9830
Model Outputs
The model returns two outputs:
- Logits: Classification logits for sentiment labels [batch_size, 3]
- Score Predictions: Continuous sentiment scores [batch_size]
Both outputs are computed from the same shared representation (CLS token) of the input text.
Intended Use
This model is intended for sentiment analysis tasks on multilingual text, particularly in scenarios where both categorical sentiment (positive/neutral/negative) and sentiment intensity are important.
Typical use cases:
- Product review analysis
- Social media sentiment monitoring
- Customer feedback classification
Usage
from transformers import AutoTokenizer
from src.models.sentiment_classifier import SentimentClassifier
# Load model and tokenizer
model = SentimentClassifier.from_pretrained("YOUR_USERNAME/sentiment-classifier")
tokenizer = AutoTokenizer.from_pretrained("xlm-roberta-base")
# Prepare input
text = "Your input text here"
inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True)
# Make prediction
outputs = model(**inputs)
predictions = outputs["logits"].argmax(dim=-1)
Citation
If you use this model, please cite:
@misc{sentiment_classifier,
title={Sentiment Classifier},
author={{Your Name}},
year={2025},
publisher={Hugging Face},
howpublished={{\url{{https://huggingface.co/YOUR_USERNAME/{model_name.lower().replace(' ', '-')}}}}}
}
This model card was automatically generated with Claude Code