File size: 2,634 Bytes
16811e9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | ---
tags:
- sentiment-analysis
- bert
- pytorch
- text-classification
license: mit
---
# SentimentBot: A Sentiment Analysis Chatbot with BERT 🤖
## Overview
SentimentBot is a fine-tuned BERT model (bert-base-uncased) designed for sentiment analysis, trained on the SST-2 (Stanford Sentiment Treebank) dataset. This model predicts whether a given text expresses a positive or negative sentiment with high accuracy, achieving 92.3% accuracy and 92.3% F1 score on the validation set after 2 epochs. It was developed as part of an AI Engineer internship project focusing on NLP.
## Model Details
- Base Model: bert-base-uncased
- Dataset: SST-2 (2 classes: 0 = negative, 1 = positive)
- Training: Fine-tuned for 2 epochs with a batch size of 16
- Performance:
Eval Loss: 0.311
Accuracy: 92.3%
F1 Score: 92.3%
## Usage
To use the SentimentBot model in your Python project, install the required libraries and load the model as follows:
```
pip install transformers torch
```
```
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
# Load the model and tokenizer
tokenizer = AutoTokenizer.from_pretrained("moraix/SentimentBot")
model = AutoModelForSequenceClassification.from_pretrained("moraix/SentimentBot").to("cuda")
# Example input
text = "I love this movie so much!"
inputs = tokenizer(text, return_tensors="pt", padding="max_length", truncation=True, max_length=128).to("cuda")
# Predict sentiment
model.eval()
with torch.no_grad():
outputs = model(**inputs)
predictions = torch.softmax(outputs.logits, dim=1)
predicted_class = torch.argmax(predictions, dim=1).item()
confidence = predictions[0, predicted_class].item()
label_map = {0: "negative", 1: "positive"}
sentiment = label_map[predicted_class]
print(f"Text: {text}")
print(f"Sentiment: {sentiment} (Confidence: {confidence:.2f})")
```
## Intended Uses
- Primary Use: Analyzing sentiment in English text (e.g., movie reviews, social media posts).
- Out-of-Scope: Multi-class sentiment (e.g., neutral) or non-English text (requires further fine-tuning).
## Limitations
- Trained only on SST-2, so performance may vary on other datasets.
- Limited to binary classification (positive/negative).
## Future Improvements
- dd support for more complex sentiments (e.g., neutral, angry).
- Expand the dataset with custom data.
- Deploy the chatbot as a web app using Flask or Streamlit.
## Contributing
Feel free to fork this repository, open issues, or submit pull requests. Feedback is always welcome! Contact For questions, reach out via mohammadmehdiomidi95@gmail.com or connect with me on LinkedIn. |