|
|
---
|
|
|
license: mit
|
|
|
language: en
|
|
|
tags:
|
|
|
- text-classification
|
|
|
- sentiment-analysis
|
|
|
- scikit-learn
|
|
|
pipeline_tag: text-classification
|
|
|
---
|
|
|
|
|
|
# Sentiment Analysis Model
|
|
|
|
|
|
A simple sentiment analysis model that classifies text as positive, negative, or neutral using TF-IDF vectorization and Multinomial Naive Bayes.
|
|
|
|
|
|
## Model Details
|
|
|
|
|
|
- **Model Type**: Sentiment Classifier
|
|
|
- **Algorithm**: TF-IDF + Multinomial Naive Bayes
|
|
|
- **Classes**: Positive, Negative, Neutral
|
|
|
- **Framework**: Scikit-learn
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
### Using Hugging Face Inference API
|
|
|
|
|
|
```python
|
|
|
import requests
|
|
|
|
|
|
API_URL = "https://api-inference.huggingface.co/models/GunjanSingh/sentiment-analysis-model"
|
|
|
headers = {"Authorization": f"Bearer {YOUR_TOKEN}"}
|
|
|
|
|
|
def query(payload):
|
|
|
response = requests.post(API_URL, headers=headers, json=payload)
|
|
|
return response.json()
|
|
|
|
|
|
output = query({
|
|
|
"inputs": "I love this product!"
|
|
|
})
|
|
|
```
|
|
|
|
|
|
### Using Transformers Pipeline
|
|
|
|
|
|
```python
|
|
|
from transformers import pipeline
|
|
|
|
|
|
classifier = pipeline("text-classification", model="GunjanSingh/sentiment-analysis-model")
|
|
|
result = classifier("I love this product!")
|
|
|
```
|
|
|
|
|
|
### Using Direct API Call
|
|
|
|
|
|
```bash
|
|
|
curl -X POST "https://api-inference.huggingface.co/models/GunjanSingh/sentiment-analysis-model" \
|
|
|
-H "Authorization: Bearer YOUR_TOKEN" \
|
|
|
-H "Content-Type: application/json" \
|
|
|
-d '{"inputs": "I love this product!"}'
|
|
|
```
|
|
|
|
|
|
## Example Output
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
"text": "I love this product!",
|
|
|
"prediction": "positive",
|
|
|
"confidence": 0.85,
|
|
|
"probabilities": {
|
|
|
"negative": 0.05,
|
|
|
"neutral": 0.10,
|
|
|
"positive": 0.85
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
## Training
|
|
|
|
|
|
This model is trained on sample data using:
|
|
|
- TF-IDF vectorization with 1000 features
|
|
|
- English stop words removal
|
|
|
- 1-2 gram combinations
|
|
|
- Multinomial Naive Bayes classifier
|
|
|
|
|
|
## Performance
|
|
|
|
|
|
- **Training Time**: < 1 second
|
|
|
- **Inference Time**: < 10ms per prediction
|
|
|
- **Memory Usage**: ~10MB
|
|
|
- **Accuracy**: ~85% on sample data
|
|
|
|
|
|
## Alternative: Custom Space API
|
|
|
|
|
|
For more advanced features, you can also use the custom Space API:
|
|
|
|
|
|
```python
|
|
|
import requests
|
|
|
|
|
|
# Custom Space API (with more features)
|
|
|
space_url = "https://GunjanSingh-sentiment-analysis-demo.hf.space"
|
|
|
|
|
|
response = requests.post(f"{space_url}/predict",
|
|
|
json={"text": "I love this product!"})
|
|
|
result = response.json()
|
|
|
```
|
|
|
|
|
|
## Model Files
|
|
|
|
|
|
- `model.pkl`: Trained scikit-learn model
|
|
|
- `config.json`: Model configuration
|
|
|
- `model.py`: Inference pipeline
|
|
|
- `requirements.txt`: Dependencies
|
|
|
|
|
|
## Testing
|
|
|
|
|
|
You can test the model locally:
|
|
|
|
|
|
```python
|
|
|
from model import pipeline
|
|
|
|
|
|
# Create pipeline
|
|
|
classifier = pipeline("text-classification")
|
|
|
|
|
|
# Test prediction
|
|
|
result = classifier("I love this product!")
|
|
|
print(result)
|
|
|
```
|
|
|
|
|
|
## License
|
|
|
|
|
|
MIT License - feel free to use this model for your projects!
|
|
|
|