# Darija Comment Monitoring Pipeline
Ce projet met en place un pipeline complet pour scraper, nettoyer, normaliser et annoter des
commentaires YouTube en darija, entraîner un modèle de classification baseline, produire des
prédictions et les exposer via un tableau de bord Streamlit temps quasi réel.
## Architecture
- **Airflow DAG** (`darija_pipeline`) orchestrant les étapes :
1. `wait_for_comments` – capteur Python vérifiant la présence du CSV d'entrée.
2. `clean` – nettoyage et filtrage des commentaires (`data/clean.py`).
3. `normalize` – normalisation de l'arabizi (`data/normalize.py`).
4. `weak_label` – attribution de labels faibles (`data/weak_label.py`).
5. `train_baseline` – entraînement d'un modèle TF-IDF + régression logistique (`data/train_baseline.py`).
6. `evaluate` – évaluation rapide du modèle (précision, rappel, F1) (`data/evaluate_baseline.py`).
7. `predict` – génération des prédictions sur le dataset normalisé (`data/predict_with_threshold.py`).
8. `push_predictions` – insertion des sorties dans Postgres (`data/push_predictions.py`).
- **Dashboard Streamlit** (`dashboard/streamlit_app.py`) :
- Filtres par vidéo et plage de dates.
- Métriques du dernier run et historique des volumes par label.
- Tables des plaintes prioritaires, commentaires positifs et listing complet.
## Lancement de la stack
```bash
docker compose up --build airflow-scheduler airflow-webserver airflow-worker streamlit -d
```
Services exposés :
- Airflow UI :
localhost
- Streamlit :
localhost
- Postgres : port 5432 (exposé pour usage local)
> Les variables SMTP et l'UID Airflow sont définis dans `.env`. Assure-toi de fournir les identifiants
> Gmail (ou un autre SMTP) pour recevoir les alertes.
## Déclencher le pipeline
1. Scraper ou déposer `data/youtube_darija_comments.csv` (monté dans `/opt/airflow/data/`).
2. Lancer un run manuel :
```bash
docker compose exec airflow-scheduler airflow dags trigger darija_pipeline
```
3. Surveiller dans l'UI Air …