Spaces:
Sleeping
A newer version of the Gradio SDK is available:
6.9.0
title: Sentiment Analysis docker
emoji: π
colorFrom: gray
colorTo: gray
sdk: gradio
sdk_version: 5.34.1
app_file: app.py
pinned: false
license: mit
short_description: sentiment-analysis
# π¬ AI Movie Sentiment Analyzer
A sophisticated sentiment analysis application for movie reviews using advanced deep learning techniques with BERT, LIME, and SHAP explanations.
## Features
- **Fast Sentiment Analysis**: Quick movie review sentiment classification
- **Advanced Explanations**: LIME and SHAP-based word importance analysis
- **Batch Processing**: Analyze multiple reviews simultaneously
- **Interactive Visualizations**: Charts, gauges, word clouds, and heatmaps
- **History Tracking**: Keep track of all analyses with trend visualization
- **Data Export**: Export results in CSV and JSON formats
- **File Upload Support**: Process CSV and text files
- **Multiple Themes**: Customizable color themes for visualizations
## Project Structure
sentiment\\\_analyzer/
βββ config.py # Configuration management
βββ models.py # Model loading and management
βββ analyzer.py # Core sentiment analysis logic
βββ visualizer.py # Visualization components
βββ utils.py # Utility functions and data handling
βββ app.py # Gradio interface and main application
βββ requirements.txt # Python dependencies
βββ Dockerfile # Docker container configuration
βββ docker-compose.yml # Docker Compose setup
βββ README.md # Project documentation
## Installation
### Local Installation
1. **Clone the repository**
```bash
git clone
cd sentiment_analyzer
```
2. **Create virtual environment**
```bash
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
```
3. **Install dependencies**
```bash
pip install -r requirements.txt
```
4. **Run the application**
```bash
python app.py
```
### Docker Installation
1. **Using Docker Compose (Recommended)**
```bash
docker-compose up --build
```
2. **Using Docker directly**
```bash
docker build -t sentiment-analyzer .
docker run -p 7860:7860 sentiment-analyzer
```
## Usage
### Web Interface
1. Open your browser and navigate to http://localhost:7860
2. Choose from three main tabs:
- **Quick Analysis**: Fast sentiment analysis with basic visualizations
- **Advanced Analysis**: Deep analysis with LIME/SHAP explanations
- **Batch Analysis**: Process multiple reviews at once
### API Usage
The application can be extended to provide API endpoints for programmatic access.
## Configuration
Modify config.py to customize:
- **Model Settings**: Batch sizes, text length limits
- **Visualization**: Figure sizes, color themes
- **Processing**: Cache sizes, stop words
- **History**: Maximum history size
## Model Information
- **Base Model**: BERT (entropy25/sentimentanalysis)
- **Classes**: Positive, Negative
- **Explanation Methods**: LIME, SHAP
- **Supported Languages**: English
## Features Detail
### Quick Analysis
- Fast sentiment classification
- Confidence scoring
- Probability visualization
- Word cloud generation
### Advanced Analysis
- LIME-based word importance
- SHAP value calculation
- Interactive heatmap visualization
- Detailed explanations
### Batch Processing
- CSV/TXT file upload
- Bulk sentiment analysis
- Comprehensive result visualization
- Progress tracking
### History & Export
- Analysis history tracking
- Trend visualization
- CSV/JSON export
- Data persistence
## Performance
- **GPU Support**: Automatic CUDA detection
- **Memory Management**: Efficient batch processing
- **Caching**: LRU cache for text processing
- **Resource Optimization**: Context managers for memory cleanup
## Dependencies
### Core Dependencies
- torch: Deep learning framework
- transformers: BERT model implementation
- gradio: Web interface framework
### Analysis & Visualization
- lime: Local interpretable model explanations
- shap: Shapley additive explanations
- matplotlib: Plotting and visualization
- wordcloud: Word cloud generation
### Data Processing
- pandas: Data manipulation
- numpy: Numerical computing
## Development
### Adding New Features
1. **New Analyzers**: Add to analyzer.py
2. **Visualizations**: Extend visualizer.py
3. **UI Components**: Modify app.py
4. **Configuration**: Update config.py
### Testing
\\# Run tests (if implemented)
python -m pytest tests/
\\# Manual testing
python -c "from analyzer import SentimentEngine; engine = SentimentEngine(); print(engine.analyze\\\_single\\\_fast('Great movie!'))"
## Deployment
### Production Deployment
1. **Environment Variables**
```bash
export GRADIO_SERVER_NAME=0.0.0.0
export GRADIO_SERVER_PORT=7860
```
2. **Resource Requirements**
- CPU: 2+ cores recommended
- RAM: 4GB+ recommended
- GPU: Optional (CUDA support)
3. **Monitoring**
- Health checks included in Docker setup
- Logging configured for production use
## Troubleshooting
### Common Issues
1. **CUDA Out of Memory**
- Reduce BATCH\\\_PROCESSING\\\_SIZE in config
- Use CPU-only mode
2. **Model Loading Errors**
- Check internet connection
- Verify Hugging Face model availability
3. **File Processing Issues**
- Ensure proper file encoding (UTF-8 recommended)
- Check CSV format and column structure
### Performance Optimization
- Use GPU if available
- Adjust batch sizes based on available memory
- Enable caching for repeated analyses
- Use Docker for consistent performance
## Contributing
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request
## License
This project is licensed under the MIT License - see the LICENSE file for details.
## Acknowledgments
- Hugging Face for BERT model hosting
- LIME and SHAP libraries for explainable AI
- Gradio for the intuitive web interface
- The open-source community for various dependencies
## Support
For issues and questions:
1. Check the troubleshooting section
2. Review existing GitHub issues
3. Create a new issue with detailed information
## Changelog
### v1.0.0
- Initial release with core functionality
- BERT-based sentiment analysis
- LIME and SHAP explanations
- Gradio web interface
- Docker support