A powerful, free, and local sentiment analysis web application that uses VADER (Valence Aware Dictionary and sEntiment Reasoner) for instant text analysis without any API costs or limitations.
- Real-time Sentiment Analysis - Analyze text sentiment (positive/negative/neutral) instantly.
- Multi-emotion Detection - Detects 6 emotions: anger, disgust, fear, joy, sadness, surprise.
- Keyword Extraction - Identifies sentiment-driving keywords from your text.
- Interactive Visualizations - Bar charts, pie charts, and radar charts for emotion analysis.
- Batch Processing - Upload .txt, .csv, or .json files for bulk analysis (up to 20 items).
- Comparative Analysis - Compare sentiment across multiple texts (up to 4 simultaneously).
- Model Evaluation - Test model accuracy with confusion matrix and performance metrics.
- Export Options - Download reports in PDF, JSON, or CSV formats.
- Analysis History - Local storage of all analyses with search and filter capabilities.
- HTML5, CSS3, JavaScript.
- Tailwind CSS for styling.
- Chart.js for data visualization.
- jsPDF for PDF report generation.
- Python Flask.
- NLTK VADER sentiment analyzer.
- No external API dependencies - completely free!
- Python 3.7 or higher.
- Modern web browser (Chrome, Firefox, Edge, Safari).
- pip (Python package installer)
git clone https://github.com/YOUR_USERNAME/sentiment-analysis-dashboard.git
cd sentiment-analysis-dashboardcd backend
# Install Python dependencies
pip install -r requirements.txt
# Start the Flask server
python backend.py4Open your browser and navigate to the frontend folder
Open index.html directly or use a local server (like Live Server in VS Code)
The backend runs on http://127.0.0.1:5000sentiment-analysis-dashboard/
├── backend/
│ ├── backend.py # Flask server with VADER analyzer
│ ├── requirements.txt # Python dependencies
│ └── BACKEND_SETUP.md # Backend setup instructions
├── frontend/
│ ├── index.html # Main dashboard
│ ├── about.html # About page
│ ├── history.html # History page
│ ├── css/
│ │ ├── style.css # About page styles
│ │ ├── style_2.css # Dashboard styles
│ │ └── style_3.css # History page styles
│ ├── js/
│ │ ├── index.js # Main application logic
│ │ └── history.js # History page logic
│ └── images/
│ ├── sentiment_logo.jpg # App logo
│ └── Siya.jpg # Team member photo
├── .gitignore # Git ignore file
├── LICENSE # MIT License
└── README.md # This fileSingle Text Analysis
- Enter text in the input area
- Click "Analyze Sentiment"
- View results with emotion distribution and keywords
- Switch to "Batch Processing" tab
- Upload a .txt, .csv, or .json file
- Click "Analyze File" to process multiple texts
- Switch to "Comparative Analysis" tab
- Add up to 4 texts
- Compare sentiment scores and emotion profiles
- Switch to "Model Evaluation" tab
- Enter text and select true sentiment
- Build evaluation dataset and calculate performance metrics
The backend server provides these REST endpoints:
- GET /api/health - Health check
- POST /api/analyze - Analyze sentiment (expects JSON with "text" field)
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (git checkout -b feature/AmazingFeature)
- Commit your changes (git commit -m 'Add some AmazingFeature')
- Push to the branch (git push origin feature/AmazingFeature)
- Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Siyamthanda Dlakavu
- GitHub: @siseko-D
- NLTK VADER for Sentiment Analysis.
- Chart.js for beautiful charts.
- Tailwind CSS for styling.
- Font Awesome for icons.
For questions or feedback, please open an issue on GitHub.
Made with ❤️ by Siyamthanda Dlakavu