|
--- |
|
license: mit |
|
metrics: |
|
- accuracy |
|
pipeline_tag: text-classification |
|
library_name: transformers |
|
--- |
|
# Sentiment Analysis Model |
|
|
|
This repository contains a fine-tuned sentiment analysis model based on the DistilBERT architecture. The model is capable of classifying text as either positive or negative sentiment. |
|
|
|
## Model code |
|
- https://colab.research.google.com/drive/10SLRb11P0GGA9ScQyzWEbseNfDWdWKGB?usp=sharing |
|
## Model Information |
|
|
|
- **Model Name**: rohansb10/sentiment_analysis_model |
|
- **Base Model**: DistilBERT |
|
- **Task**: Binary Sentiment Classification (Positive/Negative) |
|
- **Training Data**: IMDB Dataset (sample of 1000 reviews) |
|
|
|
## Installation |
|
|
|
To use this model, you'll need to install the following dependencies: |
|
|
|
```bash |
|
pip install transformers torch |
|
``` |
|
|
|
## Usage |
|
|
|
Here's a sample code to use the sentiment analysis model: |
|
|
|
```python |
|
from transformers import AutoTokenizer, AutoModelForSequenceClassification |
|
import torch |
|
|
|
# Load the model and tokenizer from the Hugging Face Hub |
|
model_name = "rohansb10/sentiment_analysis_model" |
|
tokenizer = AutoTokenizer.from_pretrained(model_name) |
|
model = AutoModelForSequenceClassification.from_pretrained(model_name) |
|
|
|
# Set device to GPU if available |
|
device = torch.device("cuda" if torch.cuda.is_available() else "cpu") |
|
model = model.to(device) |
|
|
|
# Function to predict sentiment |
|
def predict_sentiment(text): |
|
inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True).to(device) |
|
with torch.no_grad(): |
|
outputs = model(**inputs) |
|
probabilities = torch.nn.functional.softmax(outputs.logits, dim=-1) |
|
predicted_class = torch.argmax(probabilities, dim=-1).item() |
|
return predicted_class, probabilities[0].tolist() |
|
|
|
# Test the model with some sample texts |
|
sample_texts = [ |
|
"I absolutely loved the movie! It was fantastic.", |
|
"The product did not meet my expectations. Very disappointing.", |
|
"It's okay, not great but not terrible either.", |
|
] |
|
|
|
# Run predictions on the sample texts |
|
for text in sample_texts: |
|
predicted_class, probabilities = predict_sentiment(text) |
|
sentiment = "positive" if predicted_class == 1 else "negative" |
|
print(f"Text: {text}") |
|
print(f"Predicted Sentiment: {sentiment}, Probabilities: {probabilities}\n") |
|
``` |
|
|
|
## Example Output |
|
|
|
When you run the code above, you should see output similar to this: |
|
|
|
``` |
|
Text: I absolutely loved the movie! It was fantastic. |
|
Predicted Sentiment: positive, Probabilities: [0.01234, 0.98766] |
|
|
|
Text: The product did not meet my expectations. Very disappointing. |
|
Predicted Sentiment: negative, Probabilities: [0.99876, 0.00124] |
|
|
|
Text: It's okay, not great but not terrible either. |
|
Predicted Sentiment: negative, Probabilities: [0.67890, 0.32110] |
|
``` |
|
|
|
## Model Performance |
|
|
|
The model was trained on a sample of 1000 reviews from the IMDB dataset. For detailed performance metrics, including accuracy, precision, recall, and F1-score, please refer to the model card on the Hugging Face Hub. |
|
|
|
## Limitations |
|
|
|
- The model was trained on a small sample of movie reviews, which may limit its generalization to other domains. |
|
- It performs binary classification (positive/negative) and does not handle neutral sentiments explicitly. |
|
- Performance may vary on texts that are significantly different from movie reviews. |
|
|
|
## Contributing |
|
|
|
Contributions to improve the model or extend its capabilities are welcome. Please feel free to open an issue or submit a pull request. |
|
|
|
## License |
|
|
|
Please refer to the model card on the Hugging Face Hub for licensing information. |
|
|
|
## Contact |
|
|
|
For any questions or feedback, please open an issue in this repository. |