DocsAméliorations

Améliorations

Pistes d'amélioration pour optimiser chaque composant de la pipeline THOR.

État actuel

4.8%
WER (Whisper)
96.3%
F1 (spaCy)
98%
Routes trouvées
~400ms
Latence totale

Speech-to-Text (STT)

Potentiel d'amélioration

Taux d'erreur
4.8%2-3%
WER
Temps de traitement
387ms~100ms
latence
Support
1 langMulti
langues

Utiliser Whisper Large v3

HauteFacile

Le modèle Whisper Large v3 offre une précision significativement meilleure, surtout pour les noms propres français.

Impact : WER réduit de 4.8% à ~2.5%, meilleure reconnaissance des noms de gares
1.Télécharger le modèle large-v3 (~3GB)
2.Modifier configs/stt/whisper_small.yaml → whisper_large.yaml
3.Augmenter la RAM GPU recommandée à 8GB+
4.Tester sur le dataset de validation

Fine-tuner Whisper sur le domaine ferroviaire

HauteDifficile

Entraîner Whisper sur un dataset de phrases ferroviaires améliorerait considérablement la reconnaissance des termes spécifiques.

Impact : Reconnaissance quasi-parfaite des noms de gares et vocabulaire SNCF
1.Générer 10,000+ samples audio avec TTS (noms de gares, villes)
2.Préparer le dataset au format HuggingFace
3.Fine-tuner avec LoRA pour réduire les ressources
4.Évaluer sur un test set séparé
5.Comparer WER avant/après fine-tuning

Implémenter Whisper.cpp ou Faster-Whisper

MoyenneMoyenne

Les implémentations optimisées de Whisper offrent des gains de performance significatifs sans perte de qualité.

Impact : Latence réduite de 387ms à ~100ms, CPU-only possible
1.Installer faster-whisper (pip install faster-whisper)
2.Adapter src/stt/models/whisper.py pour utiliser l'API
3.Benchmarker latence et précision
4.Configurer la quantification INT8 pour les déploiements CPU

Support multilingue

BasseFacile

Whisper supporte nativement 99 langues. Activer la détection automatique de langue permettrait des requêtes internationales.

Impact : Permettre les requêtes en anglais, espagnol, etc.
1.Retirer le paramètre language='fr' dans la config
2.Adapter le prompt NLP pour les variations linguistiques
3.Ajouter un mapping des noms de villes internationaux

Natural Language Processing (NLP)

Potentiel d'amélioration

Extraction
96.3%99%+
F1-Score
Temps NLP
10ms~5ms
latence
Types extraits
25+
entités

Utiliser un modèle Transformer (CamemBERT)

HauteMoyenne

Les modèles Transformer comme CamemBERT offrent une compréhension contextuelle supérieure à spaCy.

Impact : F1-Score 99%+, meilleure généralisation aux formulations inconnues
1.Installer transformers et adapter le code existant dans src/nlp/models/
2.Fine-tuner CamemBERT-NER sur le dataset train_nlp.jsonl
3.Implémenter un fallback vers spaCy si latence critique
4.Comparer F1 et latence sur le test set

Extraire plus d'entités (date, heure, classe)

MoyenneMoyenne

Actuellement seules ORIGIN et DESTINATION sont extraites. Ajouter DATE, TIME, CLASS enrichirait les fonctionnalités.

Impact : Permettre des requêtes comme 'demain à 14h en première classe'
1.Annoter le dataset existant avec les nouvelles entités
2.Ajouter les labels dans la config spaCy
3.Re-entraîner le modèle NER
4.Adapter le pathfinding pour utiliser ces contraintes

Ajouter un intent classifier

MoyenneFacile

Un classifieur d'intention permettrait d'étendre THOR à d'autres cas d'usage que la recherche d'itinéraire.

Impact : Distinguer 'itinéraire' de 'horaires' de 'prix' de 'infos gare'
1.Créer un dataset d'intents (ROUTE, SCHEDULE, PRICE, INFO)
2.Entraîner un classifieur simple (LogisticRegression ou petit Transformer)
3.Router vers différents handlers selon l'intent détecté

Augmenter le dataset d'entraînement

HauteFacile

Le dataset actuel contient ~1000 exemples. L'augmenter avec des paraphrases améliorerait la généralisation.

Impact : Meilleure robustesse aux variations de formulation
1.Utiliser GPT/Claude pour générer des variations de phrases
2.Ajouter des exemples avec fautes d'orthographe courantes
3.Inclure du langage oral (abréviations, contractions)
4.Valider manuellement les annotations générées

Pathfinding

Potentiel d'amélioration

Routes trouvées
98%99.9%
couverture
Temps calcul
5ms~1ms
latence
Optimisation
TempsMulti
critères

Intégrer les horaires réels (time-dependent routing)

HauteDifficile

Actuellement le pathfinding utilise des temps moyens. Intégrer les horaires GTFS permettrait des itinéraires temporels.

Impact : Itinéraires avec heures de départ/arrivée, correspondances réalistes
1.Parser calendar_dates.txt et stop_times.txt complet
2.Implémenter un algorithme time-expanded ou time-dependent
3.Gérer les correspondances avec temps de changement minimum
4.Afficher les horaires exacts dans les résultats

Utiliser A* avec heuristique géographique

MoyenneFacile

L'algorithme A* avec distance Haversine comme heuristique serait plus efficace que Dijkstra pur.

Impact : Pathfinding 2-3x plus rapide sur les longues distances
1.Implémenter A* dans src/pathfinding/models/
2.Utiliser la distance à vol d'oiseau comme heuristique h(n)
3.Benchmarker vs Dijkstra sur différentes distances
4.Ajouter option dans la config pour choisir l'algorithme

Optimisation multi-critères (Pareto)

MoyenneMoyenne

Au lieu d'un seul itinéraire optimal, proposer un front de Pareto avec différents compromis.

Impact : Proposer plusieurs itinéraires : le plus rapide, le moins cher, le moins de correspondances
1.Définir les critères : temps, correspondances, confort, CO2
2.Implémenter un algorithme multi-objectif (NAMOA*, MOSP)
3.Retourner 3-5 alternatives dans l'API
4.Adapter le frontend pour afficher les alternatives

Améliorer la couverture des géométries

BasseMoyenne

Certaines liaisons n'ont pas de géométrie associée. Améliorer le matching ou interpoler les tracés manquants.

Impact : 100% des trajets avec tracé réaliste sur la carte (actuellement ~60%)
1.Analyser les liaisons sans géométrie (type de train, distance)
2.Améliorer l'algorithme de matching (tolérance, multi-segments)
3.Pour les cas restants, interpoler avec une courbe de Bézier
4.Utiliser des données OSM Railway comme source alternative

Étendre au réseau européen

BasseDifficile

Intégrer les données GTFS des réseaux voisins (Eurostar, Thalys, DB, SBB) pour des itinéraires internationaux.

Impact : Itinéraires Paris-Londres, Paris-Bruxelles, etc.
1.Collecter les GTFS européens (EU Open Data Portal)
2.Harmoniser les formats et codes UIC
3.Créer des liaisons de correspondance aux frontières
4.Gérer les fuseaux horaires

Infrastructure & UX

Streaming de la réponse STT

HauteMoyenne

Afficher la transcription en temps réel pendant que l'utilisateur parle, comme les assistants vocaux modernes.

Impact : Feedback instantané pendant l'enregistrement vocal
1.Implémenter WebSocket pour le streaming audio
2.Utiliser Whisper en mode streaming (chunks de 30s)
3.Afficher la transcription partielle côté frontend
4.Lancer le NLP dès que la phrase est complète

Cache des résultats fréquents

MoyenneFacile

Les trajets populaires représentent 80% des requêtes. Les mettre en cache réduirait la latence à ~10ms.

Impact : Réponse instantanée pour Paris-Lyon, Paris-Marseille, etc.
1.Identifier les 100 trajets les plus demandés
2.Implémenter un cache Redis ou in-memory
3.Définir une politique d'invalidation (TTL 24h)
4.Mesurer le hit rate et ajuster

Progressive Web App (PWA)

BasseFacile

Transformer le site en PWA permettrait une utilisation hors-ligne et une expérience native sur mobile.

Impact : Application installable, mode offline partiel
1.Ajouter un manifest.json et service worker
2.Cacher les assets statiques et le dataset des gares
3.Permettre la recherche offline (suggestions)
4.Ajouter les notifications pour les alertes trafic

Tests end-to-end automatisés

HauteMoyenne

Actuellement les tests sont manuels. Automatiser avec Playwright et un test set golden.

Impact : Détection automatique des régressions, CI/CD robuste
1.Configurer Playwright pour le frontend
2.Créer un golden test set de 50 requêtes avec résultats attendus
3.Intégrer dans GitHub Actions
4.Alerter si WER ou F1 se dégradent

Matrice de priorité

Quick Wins (Facile + Impact élevé)

  • • Whisper Large v3
  • • Augmentation du dataset NLP
  • • Cache des trajets fréquents

Projets majeurs (Difficile + Impact élevé)

  • • Fine-tuning Whisper ferroviaire
  • • Horaires temps réel
  • • CamemBERT NER

Nice to have (Facile + Impact faible)

  • • Support multilingue
  • • PWA

Long terme (Difficile + Impact faible)

  • • Réseau européen
  • • Optimisation Pareto complète