Multilingual sentiment analysis and content moderation for English, Yoruba, Nigerian Pidgin, Kinyarwanda and English.
# VibeSentry 🌍
**Multilingual Sentiment and Content Analysis for African Languages**
VibeSentry is an open-source NLP project focused on sentiment analysis and content moderation for low-resource African languages. It provides separate, language-specific models for Yoruba, Nigerian Pidgin, Kinyarwanda, and English — languages that are severely underrepresented in mainstream NLP research.
---
## Why VibeSentry?
Most sentiment analysis tools are built for English, Mandarin, or European languages. When applied to African languages, they fail — not because the languages are difficult, but because the models were never trained on them. Yoruba has over 50 million speakers. Nigerian Pidgin is spoken across West Africa by over 75 million people. Kinyarwanda is the primary language of Rwanda with over 12 million speakers.
VibeSentry treats each language as a first-class citizen with its own dedicated model, preprocessing pipeline, and evaluation.
---
## Languages and Tasks
| Language | Task | Model | Dataset |
|---|---|---|---|
| Yoruba | Sentiment Analysis (Positive / Neutral / Negative) | BiLSTM | AfriSenti-Yoruba (combined) |
| Nigerian Pidgin | Sentiment Analysis (Positive / Neutral / Negative) | CNN | AfriSenti-Pidgin tweets |
| Kinyarwanda | Hate Speech and Sarcasm Detection (Hate / Normal / Sarcasm) | CNN | Custom annotated dataset |
| English | Sentiment Analysis | BiLSTM | Standard English corpus |
---
## Project Structure
```
VibeSentry/
├── models/
│ ├── eng/
│ ├── kinyarwanda/
│ ├── pidgin/
│ ├── swahili/
│ └── yoruba/
├── static/
├── templates/
│ └── index.html
├── .gitignore
├── app.py
├── main.py
├── requirements.txt
├── Procfile
└── README.md
```
---
## Model Details
### Yoruba Sentiment Analysis
- **Architecture:** Bidirectional LSTM (BiLSTM)
- **Preprocessing:** spaCy Yoruba tokenizer, Yoruba and English stopword removal, URL/mention/hashtag stripping
- **Training:** Oversampled to handle class imbalance, 80/20 train-test split
- …