Turn raw feedback into instant insights.
This Streamlit app analyzes customer reviews, survey responses, or any text dataset to:
- Classify sentiment (positive / negative / neutral)
- Extract top recurring themes using KeyBERT
- Export detailed results to CSV
Built 100% with free, local tools, no paid APIs required.
- 📂 Upload a CSV of feedback (must include a
textcolumn) - 🧠 Transformer-based sentiment analysis (DistilBERT)
- 🔑 Theme extraction with KeyBERT + MiniLM embeddings
- 📊 Interactive charts (sentiment distribution + top themes)
- ⬇️ One-click download of results
- Python
- Streamlit — web UI
- Hugging Face Transformers — sentiment classification
- KeyBERT — keyword & theme extraction
- SentenceTransformers — MiniLM embeddings
- pandas — data handling
sentiment-insights/
├─ app.py # Main Streamlit app
├─ requirements.txt # Dependencies
├─ sample_data/
│ └─ reviews.csv # Example dataset
└─ README.md
-
Clone the repository
git clone https://github.com/<your-username>/sentiment-insights.git cd sentiment-insights
-
Create a virtual environment
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Run the app
python -m streamlit run app.py
-
For multilingual text, select the NLPtown model in the sidebar; for mixed languages, switch KeyBERT’s embedding to the multilingual MiniLM.
-
If you get fewer themes than requested, reduce Min docs per theme to 1 and use n-grams (1,2).
-
On macOS, if PyTorch install fails, try:
python -m pip install torch --index-url https://download.pytorch.org/whl/cpu-
Abstractive summarization of top themes
-
Support for scanned PDFs with OCR
-
Precision/recall evaluation for theme extraction
-
Integration with multilingual sentiment models
