SENTHELP est un projet de pipeline complet pour la récolte, l’analyse et la visualisation de tweets en lien avec le secteur de l’assurance. Il se compose de trois grandes étapes :
Dossier : SENTHELP/ETL-SENTHELP-main
La pipeline ETL orchestrée par Airflow suit trois étapes principales :
Extraction (Extract)
PythonOperator dans Airflow.Transformation (Transform)
PythonOperator.Chargement (Load)
PythonOperator.dags/ – Fichiers de définition des workflows Airflow| Fichier | Description |
|---|---|
test_dag_X_0.py | DAG d’initialisation pour l’extraction complète de l’historique (2006 à juin 2026). |
test_dag_X_2.py | DAG d’extraction quotidienne. |
test_dag_X_4.py | DAG d’extraction hebdomadaire. |
Chaque DAG est composé de trois tâches principales, créées à partir des fonctions Python suivantes :
initialize_data ou extract_data
Nouvelalgo.py en sous-processus..json temporaire.transform_data
insert_mongo
XCom./scripts)Nouvelalgo.py :
Ce script est conçu pour être exécuté en sous-processus et permet de récolter des tweets sur une période donnée, selon des mots-clés définis et une méthode de scraping sélectionnée.Le script fonctionne à partir d'une série d'arguments fournis en ligne de commande. Il permet :
fichier : chemin vers un fichier JSON contenant les mots-clés à utiliser pour les recherches.heure et heurefin : heure de début et de fin de la collecte (au format HH:MM).datedebut et datefin : date de début et de fin de la collecte (au format YYYY-MM-DD).methode : méthode de scraping choisie (bs4, autoscraper, etc.).nombre_tweets : nombre de tweets à récupérer (mettre 0 pour une collecte illimitée).--finrecolte (optionnel) : si activé, permet de continuer la collecte jusqu’à la fin de la période spécifiée.Préparation des paramètres :
Lancement de la collecte :
main() est appelée avec les paramètres fournis.recolte() de manière asynchrone.Sauvegardes :
tweets_raw.json.req_id) sont sauvegardées dans req.json.recolte()Déclenche la méthode de scraping sélectionnée :
bs4, les scrapers AutoScraper sont initialisés.login() pour se connecter à Twitter.Pour chaque dictionnaire de mots combinés dans le corpus :
scraping_bs4() ou scraping_autoscraper()).Conditions d'arrêt de la collecte pour chaque mot-clé :
--finrecolte n’est pas activé).Défilement (scroll) : effectué via perform_scroll() pour afficher de nouveaux tweets.
En cas d’échec de la connexion à Twitter :
Les sorties : current_tweet_amount : nombre total de tweets récoltés jusqu’à présent. scroll_count : nombre de scrolls effectués lors de la session. termine : booléen indiquant si la collecte est terminée. last_timestemp : timestamp du dernier tweet récolté, utile pour la continuité de la collecte. lastdate : date du dernier tweet vu, au format lisible. liste_tweets : liste des objets Tweet représentant les tweets collectés durant la session
login()Fonction dédiée à l’automatisation de la connexion à Twitter.
True si la connexion est réussie, sinon False.scraping_bs4() et scraping_autoscraper()Fonctions d’extraction des tweets pertinents selon les mots-clés.
contient_mots_espaces().Tweet à partir des éléments récoltés ( avec la classe DonneeCollectee() ).perform_scroll()Fonction de défilement de la page pour charger de nouveaux tweets.
Détecte et clique sur un éventuel bouton "Retry" pour relancer le chargement.
Compare les nouveaux éléments chargés avec les tweets déjà récoltés.
Retourne :
True si de nouveaux tweets ont été chargés,False sinon, ce qui peut signaler une condition d’arrêt de la collecte.finderecoltequi signale si la récolte s'est bien effectuée.tweets_raw.json : contient les tweets bruts collectés.req.json : contient les métadonnées associées à la requête.Dossier : SENTHELP/Inference-SENTHELP-main
MongoDB doit être configurée en mode replica set (obligatoire pour le fonctionnement des change streams).
Dossier : SENTHELP/Serving-SENTHELP-main
Fichier principal :
Serving-SENTHELP-main/mongodb-with-fastapi/app.py
Dossier : Serving-SENTHELP-main/frontend/src/components/
| Composant | Fonction |
|---|---|
Cards.js | Affiche les indicateurs statiques (score, pourcentage apr sentiments, etc.). |
Charts.js | Composants graphiques pour les tendances. |
kpiFunctions.js | Fonctions de calcul des KPI (Key Performance Indicators). |
Navbar.js | Barre de navigation avec filtres temporels. |
Sidebar.js | Menu latéral pour naviguer dans l’application. |
Timeline.js | Série temporelle des tweets par date. |
toptweets.js | Tableau des tweets les plus interactifs (likes, retweets, réponses). |
wordcloud.js | Nuage de mots basé sur les contenus des tweets. |
Autres fichiers importants :
App.js : composant racine de l’application React.App.css : feuille de style globale.Un script start.sh permet de démarrer automatiquement les trois services (ETL, inférence, dashboard) en parallèle :
./start.sh
Ne pas oublier de mettre à jour les chemins dans les fichiers : "start.sh" et "docker-compose.override.yml"
Vous pouvez aussi lancer chaque service séparément, dans des terminaux différents :
cd /SENTHELP/ETL-SENTHELP-main
astro dev start
cd /SENTHELP/Inference-SENTHELP-main
docker compose up
cd /SENTHELP/Serving-SENTHELP-main
docker compose up
3 commits
Python
98.5%
C
1.2%
SENTHELP est un projet de pipeline complet pour la récolte, l’analyse et la visualisation de tweets en lien avec le secteur de l’assurance. Il se compose de trois grandes étapes :
Dossier : SENTHELP/ETL-SENTHELP-main
La pipeline ETL orchestrée par Airflow suit trois étapes principales :
Extraction (Extract)
PythonOperator dans Airflow.Transformation (Transform)
PythonOperator.Chargement (Load)
PythonOperator.dags/ – Fichiers de définition des workflows Airflow| Fichier | Description |
|---|---|
test_dag_X_0.py | DAG d’initialisation pour l’extraction complète de l’historique (2006 à juin 2026). |
test_dag_X_2.py | DAG d’extraction quotidienne. |
test_dag_X_4.py | DAG d’extraction hebdomadaire. |
Chaque DAG est composé de trois tâches principales, créées à partir des fonctions Python suivantes :
initialize_data ou extract_data
Nouvelalgo.py en sous-processus..json temporaire.transform_data
insert_mongo
XCom./scripts)Nouvelalgo.py :
Ce script est conçu pour être exécuté en sous-processus et permet de récolter des tweets sur une période donnée, selon des mots-clés définis et une méthode de scraping sélectionnée.Le script fonctionne à partir d'une série d'arguments fournis en ligne de commande. Il permet :
fichier : chemin vers un fichier JSON contenant les mots-clés à utiliser pour les recherches.heure et heurefin : heure de début et de fin de la collecte (au format HH:MM).datedebut et datefin : date de début et de fin de la collecte (au format YYYY-MM-DD).methode : méthode de scraping choisie (bs4, autoscraper, etc.).nombre_tweets : nombre de tweets à récupérer (mettre 0 pour une collecte illimitée).--finrecolte (optionnel) : si activé, permet de continuer la collecte jusqu’à la fin de la période spécifiée.Préparation des paramètres :
Lancement de la collecte :
main() est appelée avec les paramètres fournis.recolte() de manière asynchrone.Sauvegardes :
tweets_raw.json.req_id) sont sauvegardées dans req.json.recolte()Déclenche la méthode de scraping sélectionnée :
bs4, les scrapers AutoScraper sont initialisés.login() pour se connecter à Twitter.Pour chaque dictionnaire de mots combinés dans le corpus :
scraping_bs4() ou scraping_autoscraper()).Conditions d'arrêt de la collecte pour chaque mot-clé :
--finrecolte n’est pas activé).Défilement (scroll) : effectué via perform_scroll() pour afficher de nouveaux tweets.
En cas d’échec de la connexion à Twitter :
Les sorties : current_tweet_amount : nombre total de tweets récoltés jusqu’à présent. scroll_count : nombre de scrolls effectués lors de la session. termine : booléen indiquant si la collecte est terminée. last_timestemp : timestamp du dernier tweet récolté, utile pour la continuité de la collecte. lastdate : date du dernier tweet vu, au format lisible. liste_tweets : liste des objets Tweet représentant les tweets collectés durant la session
login()Fonction dédiée à l’automatisation de la connexion à Twitter.
True si la connexion est réussie, sinon False.scraping_bs4() et scraping_autoscraper()Fonctions d’extraction des tweets pertinents selon les mots-clés.
contient_mots_espaces().Tweet à partir des éléments récoltés ( avec la classe DonneeCollectee() ).perform_scroll()Fonction de défilement de la page pour charger de nouveaux tweets.
Détecte et clique sur un éventuel bouton "Retry" pour relancer le chargement.
Compare les nouveaux éléments chargés avec les tweets déjà récoltés.
Retourne :
True si de nouveaux tweets ont été chargés,False sinon, ce qui peut signaler une condition d’arrêt de la collecte.finderecoltequi signale si la récolte s'est bien effectuée.tweets_raw.json : contient les tweets bruts collectés.req.json : contient les métadonnées associées à la requête.Dossier : SENTHELP/Inference-SENTHELP-main
MongoDB doit être configurée en mode replica set (obligatoire pour le fonctionnement des change streams).
Dossier : SENTHELP/Serving-SENTHELP-main
Fichier principal :
Serving-SENTHELP-main/mongodb-with-fastapi/app.py
Dossier : Serving-SENTHELP-main/frontend/src/components/
| Composant | Fonction |
|---|---|
Cards.js | Affiche les indicateurs statiques (score, pourcentage apr sentiments, etc.). |
Charts.js | Composants graphiques pour les tendances. |
kpiFunctions.js | Fonctions de calcul des KPI (Key Performance Indicators). |
Navbar.js | Barre de navigation avec filtres temporels. |
Sidebar.js | Menu latéral pour naviguer dans l’application. |
Timeline.js | Série temporelle des tweets par date. |
toptweets.js | Tableau des tweets les plus interactifs (likes, retweets, réponses). |
wordcloud.js | Nuage de mots basé sur les contenus des tweets. |
Autres fichiers importants :
App.js : composant racine de l’application React.App.css : feuille de style globale.Un script start.sh permet de démarrer automatiquement les trois services (ETL, inférence, dashboard) en parallèle :
./start.sh
Ne pas oublier de mettre à jour les chemins dans les fichiers : "start.sh" et "docker-compose.override.yml"
Vous pouvez aussi lancer chaque service séparément, dans des terminaux différents :
cd /SENTHELP/ETL-SENTHELP-main
astro dev start
cd /SENTHELP/Inference-SENTHELP-main
docker compose up
cd /SENTHELP/Serving-SENTHELP-main
docker compose up
3 commits
Python
98.5%
C
1.2%