# 🇧🇩 BornoLens: Bangla Sentiment Analyzer (BERT + ONNX + LIME)
A web-based Bengali sentiment classifier with explainable AI support. This app uses a fine-tuned Bangla BERT model exported to ONNX for fast inference. It classifies Bengali texts into harmful content categories and highlights the most influential words using **LIME**.
### Live Link:
bornolens.com
Note: Updated the UI and deployed in server for better user experience (React + Django + MySQL).
---
## 📖 Table of Contents
1. Overview
2. Features
3. Architecture
4. Project Structure
5. Dataset
6. Setup Instructions
7. Usage
8. Model Details
9. Explainable AI
10. Screenshots
11. Contributing
12. License
---
## 🧩 Overview
This project aims to detect cyberbullying or offensive content in the Bengali language using state-of-the-art transformer-based NLP models. The fine-tuned model classifies text into one of five categories:
- `not bully`
- `religious`
- `sexual`
- `troll`
- `threat`
The project integrates:
- A BERT-based model fine-tuned on labeled Bengali text data
- ONNX runtime for fast inference
- LIME for explainable AI
- A full-stack Flask web application for interactive use
---
## ✨ Features
- ✅ Bengali language support with custom preprocessing
- ✅ Fast ONNX inference using fine-tuned BERT
- ✅ LIME-based word importance explanations
- ✅ Responsive, modern Flask web interface
- ✅ Educational and research-friendly architecture
---
## 🏗️ Architecture
```
User Input (Bengali text)
│
▼
[Preprocessing: clean, normalize]
│
▼
[Tokenizer: sagorsarker/bangla-bert-base]
│
▼
[ONNX InferenceSession → Prediction]
│ └──► LIME Explainer (optional)
▼
Predicted Label + Explanation
│
▼
Web Frontend Display (Flask)
```
---
## 📁 Project Structure
```
bangla-sentiment-analyzer/
├── app.py # Flask backend
├── BanglaBERT_ONNX.onnx # ONNX exported model
├── templates/
│ └── index.html # HTML UI
├── static/ # Optional: CSS, JS
├─ …