# ๐Ÿ’ฌ Sentiment-Analysis-for-Product-Release-Sentiment A **BERT-based sentiment analysis model** fine-tuned on a product review dataset. It predicts the sentiment of a text as **Positive**, **Neutral**, or **Negative** with a confidence score. This model is ideal for analyzing customer feedback, reviews, or user comments. --- ## โœจ Model Highlights - ๐Ÿ“Œ **Architecture**: Based on [`bert-base-uncased`](https://huggingface.co/bert-base-uncased) by Google - ๐Ÿ”ง **Fine-tuned** on labeled product review data - ๐Ÿ” **3-way sentiment classification**: `Negative (0)`, `Neutral (1)`, `Positive (2)` - ๐Ÿ’พ **Quantized version available** for faster inference --- ## ๐Ÿง  Intended Uses - โœ… Classifying product feedback and user reviews - โœ… Sentiment analysis for e-commerce platforms - โœ… Social media monitoring and customer opinion mining --- ## ๐Ÿšซ Limitations - โŒ Designed for English texts only - โŒ May not perform well on sarcastic or ironic inputs - โŒ May struggle with domains very different from product reviews - โŒ Input texts longer than 128 tokens are truncated --- ## ๐Ÿ‹๏ธโ€โ™‚๏ธ Training Details - **Base Model**: `bert-base-uncased` - **Dataset**: Custom-labeled product review dataset - **Epochs**: 5 - **Batch Size**: 8 - **Max Length**: 128 tokens - **Optimizer**: AdamW - **Loss Function**: CrossEntropyLoss (with class balancing) - **Hardware**: Trained on NVIDIA GPU (CUDA-enabled) --- ## ๐Ÿ“Š Evaluation Metrics | Metric | Score | |------------|-------| | Accuracy | 0.90 | | F1 | 0.90 | | Precision | 0.90 | | Recall | 0.90 | --- ## ๐Ÿ”Ž Label Mapping | Label ID | Sentiment | |----------|-----------| | 0 | Negative | | 1 | Neutral | | 2 | Positive | --- ## ๐Ÿš€ Usage Example ```python from transformers import AutoTokenizer, AutoModelForSequenceClassification, Trainer, TrainingArguments from transformers import DataCollatorWithPadding import torch import torch.nn.functional as F # Load model and tokenizer model_name = "AventIQ-AI/Sentiment-Analysis-for-Product-Release-Sentiment" tokenizer = BertTokenizer.from_pretrained(model_name) model = BertForSequenceClassification.from_pretrained(model_name) model.eval() # Inference def predict_sentiment(text): inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True) inputs = {k: v.to(quantized_model.device) for k, v in inputs.items()} with torch.no_grad(): logits = quantized_model(**inputs).logits probs = F.softmax(logits, dim=1) predicted_class_id = torch.argmax(probs, dim=1).item() confidence = probs[0][predicted_class_id].item() label_map = {0: "Negative", 1: "Positive"} label = label_map[predicted_class_id] confidence_str = f"confidence : {confidence * 100:.1f}%" return label, confidence_str # Example print(predict_sentiment( "The service was excellent and the staff was friendly.") ) ``` --- ## ๐Ÿงช Quantization - Applied **post-training dynamic quantization** using PyTorch to reduce model size and speed up inference. - Quantized model supports CPU-based deployments. --- ## ๐Ÿ“ Repository Structure ``` . โ”œโ”€โ”€ model/ # Quantized model files โ”œโ”€โ”€ tokenizer/ # Tokenizer config and vocabulary โ”œโ”€โ”€ model.safetensors/ # Fine-tuned full-precision model โ”œโ”€โ”€ README.md # Model documentation ``` --- ## ๐Ÿ“Œ Limitations - May not generalize to completely different domains (e.g., medical, legal) - Quantized version may show slight drop in accuracy compared to full-precision model --- ## ๐Ÿค Contributing We welcome contributions! Please feel free to raise an issue or submit a pull request if you find a bug or have a suggestion.