YousefXEisa's picture
Update README.md
9e92e4e verified
|
Raw
History Blame Contribute Delete
5.72 kB
---
language:
- en
license: mit
tags:
- sentiment-analysis
- roberta
- text-classification
- amazon-reviews
- pytorch
datasets:
- amazon_polarity
pipeline_tag: text-classification
widget:
- text: This product is absolutely amazing! Very high quality.
example_title: Positive Review
- text: Terrible quality. Arrived broken and stopped working.
example_title: Negative Review
model-index:
- name: amazon-roberta-sentiment
results:
- task:
type: text-classification
name: Sentiment Analysis
dataset:
name: Amazon Polarity
type: amazon_polarity
metrics:
- type: accuracy
value: 0.9697
- type: f1
value: 0.97
- type: precision
value: 0.9671
- type: recall
value: 0.973
metrics:
- f1
- accuracy
- recall
- precision
base_model:
- FacebookAI/roberta-base
library_name: transformers
---
# Amazon RoBERTa Sentiment
A fine-tuned **RoBERTa-base** model that classifies Amazon product reviews as **Positive** or **Negative**.
- **Repo / Code:** [Github](https://github.com/YousefXEisa/amazon-sentiment-analysis)
- **Live Demo:** [reviews-sentiment-analysis-s7brv3.streamlit.app](https://reviews-sentiment-analysis-s7brv3.streamlit.app/)
## Model Details
### Model Description
This model is a fine-tuned version of `roberta-base` trained on the [Amazon Polarity](https://huggingface.co/datasets/amazon_polarity) dataset for binary sentiment classification (Positive / Negative). The `title` and `content` fields of each review were used jointly as model input.
The final model was selected after three training experiments comparing architectures and regularization strategies — see [Training Details](#training-details) below. (Or the full details of the experiment, including all three rounds, on GitHub).
- **Developed by:** Yousef Eisa
- **Model type:** Text Classification (binary sentiment)
- **Language(s):** English
- **License:** MIT
- **Finetuned from model:** [`roberta-base`](https://huggingface.co/roberta-base)
## Uses
### Direct Use
The model takes a review's title and body text and outputs a sentiment label (`Positive` / `Negative`) with a confidence score. It can be used directly for classifying Amazon-style product reviews, or similar English-language e-commerce review text.
### Out-of-Scope Use
- Not trained or evaluated on non-English text.
- Binary classification only — there is no "neutral" class, so mixed or ambiguous reviews will be forced into Positive/Negative.
## How to Get Started with the Model
```python
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
model_name = "YousefXEisa/amazon-roberta-sentiment"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
text = "This product is absolutely amazing! Very high quality."
inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True)
with torch.no_grad():
logits = model(**inputs).logits
probs = torch.softmax(logits, dim=-1)
label = "Positive" if probs.argmax().item() == 1 else "Negative"
print(label, probs)
```
Or with the `pipeline` API:
```python
from transformers import pipeline
classifier = pipeline("text-classification", model="YousefXEisa/amazon-roberta-sentiment")
classifier("Terrible quality. Arrived broken and stopped working.")
```
## Training Details
### Training Data
[Amazon Polarity](https://huggingface.co/datasets/amazon_polarity) — Amazon product reviews labeled Positive/Negative. `title` and `content` were concatenated as input.
### Training Procedure
The final model (RoBERTa-base) was trained in fp32 on 250k samples for 3 epochs (early stopping enabled), with the following regularization recipe, arrived at after diagnosing overfitting in an initial BERT baseline run:
- Frozen embedding layer + first 4 encoder layers
- Dropout 0.1 on hidden and attention layers
- Label smoothing (0.1)
- Weight decay (0.01), excluded from bias/LayerNorm params
- Cosine LR schedule with 10% warmup
- Gradient clipping (`max_norm=1.0`)
- Early stopping (patience=2, delta=0.001)
Training was run on Google Colab (free GPU tier).
## Evaluation
Evaluated on a held-out test set of 10,000 samples, unseen during training or validation.
### Results
| Metric | Score |
|---|---|
| Accuracy | 0.9697 |
| Precision | 0.9671 |
| Recall | 0.9730 |
| F1 Score | 0.9700 |
**Classification Report:**
```
precision recall f1-score support
0 0.97 0.97 0.97 4958
1 0.97 0.97 0.97 5042
accuracy 0.97 10000
macro avg 0.97 0.97 0.97 10000
weighted avg 0.97 0.97 0.97 10000
```
RoBERTa outperformed a comparably-regularized BERT baseline (best val F1 0.9674 vs 0.9590) trained under identical conditions, which is why RoBERTa was selected as the final model.
## Bias, Risks, and Limitations
- Trained and evaluated on English Amazon product reviews only; accuracy on other domains or languages is untested.
- Binary classification only (Positive/Negative) — no neutral class.
- Like most sentiment models trained on product reviews, it may be less reliable on sarcasm, mixed sentiment within a single review, or very short/ambiguous text.
## Environmental Impact
- **Hardware Type:** Google Colab GPU (free tier)
- **Cloud Provider:** Google Colab
- Carbon emissions were not tracked for this project. They can be estimated using the [ML Impact calculator](https://mlco2.github.io/impact#compute).
## Citation
If you use this model, please reference the Hugging Face repo:
```
YousefXEisa/amazon-roberta-sentiment
```