An end-to-end NLP pipeline for automated sentiment analysis, topic detection, named entity recognition, and reputation scoring across African media sources.
# african-media-intelligence-ai
An end-to-end NLP pipeline for automated sentiment analysis, topic detection, named entity recognition, and reputation scoring across African media sources.
## 1. Project Overview
African media outlets produce thousands of articles daily across French and English, yet no automated tool exists to monitor public opinion, detect reputational risks, or track emerging narratives at scale. This project builds a complete NLP pipeline — from RSS ingestion to a visual analytics dashboard — to transform raw African media content into structured, decision-ready intelligence. The final output serves media monitoring agencies, fintechs, NGOs, and communications teams operating across the African continent.
## 2. Dataset
| Attribute | Detail |
|---|---|
| Sources | 8 African RSS feeds: RFI Afrique, BBC Afrique, Jeune Afrique, AllAfrica, Abidjan.net, Fratmat.info, Le Monde Afrique, The Africa Report |
| Volume | 121 articles per collection cycle |
| Languages | French (FR) + English (EN) |
| Coverage | Pan-African + Côte d'Ivoire focus |
| Entities extracted | 532 mentions across 58 unique entities |
| Topics | 8 thematic clusters |
| Time range | Rolling collection window (23 days in demo cycle) |
| Variables | Title, summary, source, language, publication date, sentiment score (×3), topic ID, entity name, entity type, RepScore |
## 3. Tools & Technologies
| Tool | Role in the pipeline |
|---|---|
| Python 3.13 | Core language for all data processing and NLP |
| `feedparser` + `BeautifulSoup4` | RSS ingestion and HTML cleaning (Phase 1) |
| `transformers` — XLM-RoBERTa | Multilingual sentiment analysis — FR + EN (Phase 2) |
| `scikit-learn` — TF-IDF + LDA | Topic modeling and keyword extraction (Phase 3) |
| `spaCy` — fr_core_news_md / en_core_web_sm | Named entity recognition — ORG, GPE, PER, LOC (Phase 4) |
| `pandas` + `numpy` | Data manipulation and RepScore computation (Phase 5) |
| `matplotlib` + `seaborn` + `wordcloud` | Python analyt …