DocsRechercheDatasets

Datasets & Données

Documentation complète des données utilisées par THOR : sources, formats, et utilisation dans chaque module de la pipeline.

Vue d'ensemble

200
Fichiers audio
5,836
Phrases NLP
2,782
Gares SNCF
7,852
Liaisons

Structure des données

Arborescence
data/
├── raw/                    # Données brutes sources
│   ├── audio/              # 200 fichiers WAV pour STT
│   ├── stop_times.txt      # 367k horaires GTFS SNCF
│   ├── trips.txt           # Trajets GTFS
│   ├── routes.txt          # Lignes GTFS
│   ├── stops.txt           # Arrêts GTFS
│   └── shapes.json         # 3,348 géométries de voies
│
├── splits/                 # Datasets annotés
│   ├── train/              # Entraînement (70%)
│   ├── valid/              # Validation (15%)
│   └── test/               # Test (15%)
│
└── train_station/          # Données traitées
    ├── dataset_gares.json           # 2,782 gares
    ├── dataset_liaisons.json        # Liaisons basiques
    ├── dataset_liaisons_enhanced.json  # + temps réels
    └── dataset_liaisons_with_shapes.json  # + géométries

Données Audio (STT)

Fichiers Audio

data/raw/audio/

Enregistrements vocaux de demandes de trajets en français, utilisés pour entraîner et évaluer le module Speech-to-Text.

200
Fichiers
WAV 16kHz
Format
~3s
Durée moy.
~10 min
Total
Utilisé pour :
Évaluation WhisperÉvaluation VoskTests pipeline

Exemple d'échantillon

data/splits/train/train.jsonl
{
  "id": "sample_000160",
  "audio_path": "data/raw/audio/sample_000160.wav",
  "transcript": "Je veux voyager de Toulouse à Bordeaux"
}

Données NLP

Dataset d'entraînement NLP

data/splits/train/train_nlp.jsonl

Phrases annotées avec origine et destination pour entraîner le modèle spaCy. Inclut des exemples positifs (demandes de trajet) et négatifs.

4,085
Échantillons
JSONL
Format
70%
Split
~150
Villes uniques
Utilisé pour :
Fine-tuning spaCyEntraînement NER

Dataset de validation

data/splits/valid/valid_nlp.jsonl

Utilisé pendant l'entraînement pour ajuster les hyperparamètres et éviter le surapprentissage.

875
Échantillons
15%
Split
Utilisé pour :
ValidationEarly stopping

Dataset de test

data/splits/test/test_nlp.jsonl

Évaluation finale des modèles NLP. Non utilisé pendant l'entraînement.

876
Échantillons
15%
Split
Utilisé pour :
BenchmarkMétriques finales

Format des annotations NLP

Exemples
// Demande valide avec origine et destination
{
  "id": "nlp_001",
  "sentence": "Je veux aller de Paris à Lyon",
  "origin": "Paris",
  "destination": "Lyon",
  "is_valid": true
}

{
  "id": "nlp_002",
  "sentence": "Je veux voyager jusqu'à Lille",
  "origin": null,
  "destination": "Lille",
  "is_valid": true
}

{
  "id": "nlp_003",
  "sentence": "Mon ami habite à Strasbourg",
  "origin": null,
  "destination": null,
  "is_valid": false
}

Données GTFS (SNCF)

Source officielle

Données ouvertes SNCF au format GTFS (General Transit Feed Specification). Téléchargées depuis data.sncf.com

GTFS = Standard Google pour les données de transport en commun. Utilisé par Google Maps, Citymapper, et des milliers d'applications.

Données exploitées par THOR

✓ Utilisé
  • • Temps de trajet entre gares
  • • Codes UIC des gares
  • • Type de train (TGV, TER...)
  • • Fréquence des trains
  • • Noms des gares
◐ Partiellement
  • • Coordonnées GPS
  • • Identifiants de ligne
  • • Direction du trajet
✗ Non utilisé
  • • Horaires exacts
  • • Calendrier (dates)
  • • Prix / tarifs
  • • Correspondances

stop_times.txt

data/raw/stop_times.txt

Horaires de passage à chaque arrêt pour tous les trajets. Source principale pour extraire les temps de trajet réels entre gares.

367,639
Lignes
CSV (GTFS)
Format
9
Colonnes
~35 MB
Taille
Utilisé pour :
Temps de trajetFréquence trainsType de train

trips.txt

data/raw/trips.txt

Définition des trajets avec identifiants, lignes associées et directions.

~15,000
Trajets
TGV, TER, IC...
Types
Utilisé pour :
Mapping trajet → ligneType de train

stops.txt

data/raw/stops.txt

Liste des arrêts avec codes UIC, noms et coordonnées GPS.

~4,000
Arrêts
Oui
Avec GPS
Utilisé pour :
GéolocalisationCodes UIC

stop_times.txt — Horaires de passage

stop_times.txt
trip_id,arrival_time,departure_time,stop_id,stop_sequence,...
OCETGV...,08:15:00,08:15:00,StopPoint:OCE87686006,0,...
OCETGV...,10:12:00,10:12:00,StopPoint:OCE87723197,1,...
PropriétéDescriptionExploité ?
trip_idIdentifiant unique du trajet (encode le type de train)✓ Oui
arrival_timeHeure d'arrivée à l'arrêt (HH:MM:SS)✓ Oui
departure_timeHeure de départ de l'arrêt✓ Oui
stop_idIdentifiant de l'arrêt (contient code UIC)✓ Oui
stop_sequenceOrdre de l'arrêt dans le trajet (0, 1, 2...)✓ Oui
Calcul : Temps trajet = arrival_time[stop N+1] - departure_time[stop N]

stops.txt — Liste des arrêts

stops.txt
stop_id,stop_name,stop_lat,stop_lon,location_type,parent_station
StopArea:OCE87686006,PARIS GARE DE LYON,48.8447,2.3739,1,
StopPoint:OCETGV-87686006,PARIS GARE DE LYON,48.8447,2.3739,0,StopArea:OCE87686006
PropriétéDescriptionExploité ?
stop_idID unique (contient code UIC : 87686006)✓ Oui
stop_nameNom de la gare en majuscules✓ Oui
stop_latLatitude GPS◐ Backup
stop_lonLongitude GPS◐ Backup
location_type0 = Quai, 1 = Station✗ Non
parent_stationStation parente (pour les quais)✗ Non
Note : Le code UIC (87686006) est extrait du stop_id via regex

trips.txt — Définition des trajets

trips.txt
route_id,service_id,trip_id,trip_headsign,direction_id
FR:Line::abc123,000001,OCETGV-6789-Paris-Lyon,6789,0
FR:Line::def456,000002,OCEOUIGO-1234-Paris-Lyon,1234,0
PropriétéDescriptionExploité ?
route_idIdentifiant de la ligne✗ Non
service_idJour de service (lié au calendrier)✗ Non
trip_idID unique du trajet (préfixe = type train)✓ Oui
trip_headsignNuméro du train affiché✗ Non
direction_idDirection (0 = aller, 1 = retour)✗ Non
Clé : Le préfixe du trip_id (OCETGV, OCEOUIGO...) permet d'identifier le type de train

Extraction du type de train

Parsing trip_id
// Le trip_id GTFS encode le type de train
"OCETGV..."       → TGV         (pénalité ×1.0)
"OCEOUIGO..."     → OUIGO       (pénalité ×1.0)
"OCEINTERCITES..."→ Intercités  (pénalité ×1.3)
"OCETER..."       → TER         (pénalité ×2.0)
"OCESN..."        → Navette     (pénalité ×2.0)
"OCEEA..."        → Eurostar    (pénalité ×1.0)
"OCELO..."        → Train nuit  (pénalité ×1.5)
"OCEL..."         → Lyria       (pénalité ×1.0)

Données Traitées

dataset_gares.json

data/train_station/dataset_gares.json

Référentiel des gares SNCF avec codes UIC, coordonnées GPS, communes et noms normalisés. Généré à partir des données SNCF ouvertes.

2,782
Gares
100%
Avec GPS
Oui
Multi-UIC
~2.5 MB
Taille
Utilisé pour :
Résolution ville → garePathfindingAffichage carte

Structure d'une gare (exemple réel)

dataset_gares.json
{
  "uic": ["87686006"],
  "nom_gare": "Paris Gare de Lyon",
  "trigramme": "PLY",
  "position_geographique": { "lat": 48.8447, "lon": 2.3739 },
  "ville": { "id_commune": "75056", "nom_commune": "PARIS" }
}
PropriétéTypeDescriptionUtilisé pour
uicstring[]Code(s) UIC international (ex: 87686006)Clé du graphe Dijkstra
nom_garestringNom officiel de la gareAffichage UI
trigrammestringCode 3 lettres SNCF (PLY, LPD...)Non utilisé
position_geographique.latfloatLatitude GPS (WGS84)Marqueurs carte
position_geographique.lonfloatLongitude GPS (WGS84)Marqueurs carte
ville.id_communestringCode INSEE de la communeRésolution ville → gare
ville.nom_communestringNom de la commune (majuscules)Recherche fuzzy
Multi-UIC : Une gare peut avoir plusieurs codes UIC (ex: Paris Gare de Lyon a des UIC différents pour TGV et TER)

dataset_liaisons_enhanced.json

data/train_station/dataset_liaisons_enhanced.json

Graphe des connexions entre gares avec temps de trajet moyens, distances, fréquences et types de train. Généré depuis stop_times.txt.

7,852
Liaisons
100%
Avec temps
100%
Avec type train
~5 MB
Taille
Utilisé pour :
DijkstraPondération TGVStats trajets

Structure d'une liaison (exemple réel)

dataset_liaisons_enhanced.json
{
  "depart": "87271494",
  "arrivee": "87111849",
  "depart_nom": "Aéroport CDG 2 TGV",
  "arrivee_nom": "Marne-la-Vallée Chessy",
  "temps_moyen_min": 11.1,
  "temps_min_min": 9,
  "temps_max_min": 18,
  "nb_trains": 638,
  "distance_km": 21.46,
  "type_train": "TGV",
  "types_details": { "TGV": 563, "OUIGO": 75 }
}
PropriétéTypeDescriptionUtilisé pour
departstringCode UIC de la gare de départNœud source (graphe)
arriveestringCode UIC de la gare d'arrivéeNœud destination (graphe)
depart_nomstringNom lisible de la gare de départAffichage UI
arrivee_nomstringNom lisible de la gare d'arrivéeAffichage UI
temps_moyen_minfloatTemps de trajet moyen en minutes⭐ Poids Dijkstra
temps_min_minintTemps minimum observé (train le plus rapide)Info seulement
temps_max_minintTemps maximum observé (train le plus lent)Info seulement
nb_trainsintNombre de trains par jour sur cette liaisonAffichage fréquence
distance_kmfloatDistance en km (calculée via Haversine)Affichage distance
type_trainstringType de train majoritaire (TGV, TER, IC...)⭐ Pénalité Dijkstra
types_detailsobjectRépartition par type { TGV: 563, OUIGO: 75 }Stats détaillées
Calcul poids : temps_pondere = temps_moyen_min × pénalité(type_train) — TGV ×1.0, TER ×2.0

dataset_liaisons_with_shapes.json

data/train_station/dataset_liaisons_with_shapes.json

Liaisons enrichies avec les géométries GeoJSON des voies ferrées pour l'affichage cartographique des trajets réels.

7,852
Liaisons
~60%
Avec géométrie
~300 moy
Points/segment
~50 MB
Taille
Utilisé pour :
Tracé carteVisualisation routes

Structure avec géométrie (exemple réel)

dataset_liaisons_with_shapes.json
{
  "depart": "87271494",
  "arrivee": "87111849",
  "depart_nom": "Aéroport CDG 2 TGV",
  "arrivee_nom": "Marne-la-Vallée Chessy",
  "temps_moyen_min": 11.1,
  "type_train": "TGV",
  "geometry": {
    "type": "LineString",
    "coordinates": [[2.570892, 49.003652], ..., [2.782720, 48.869856]]
  },
  "ligne_code": 226310,
  "ligne_nom": "Raccordement interconnexion LGV"
}
PropriétéTypeDescriptionUtilisé pour
... tous les champs de dataset_liaisons_enhanced.json ...
geometryobjectObjet GeoJSON LineString⭐ Tracé carte
geometry.typestringToujours "LineString"Validation GeoJSON
geometry.coordinatesnumber[][]Liste de points [lon, lat] (ordre GeoJSON)⭐ Polyline Leaflet
ligne_codeintCode numérique de la ligne RFNRéférence
ligne_nomstringNom officiel de la ligne ferroviaireInfo popup
⚠️ Ordre GeoJSON : [longitude, latitude] — Leaflet attend [lat, lon], donc le frontend inverse
Couverture : ~60% des liaisons ont une géométrie, les autres affichent une ligne droite

Géométries des Voies

shapes.json

data/raw/shapes.json

Tracés géographiques détaillés des lignes ferroviaires françaises au format GeoJSON. Source : Réseau Ferré National (RFN).

3,348
Lignes
GeoJSON
Format
LineString
Type
~100 MB
Taille
Utilisé pour :
Tracé routes sur carteAssociation liaisonsVisualisation

Structure d'une ligne ferroviaire (exemple réel)

shapes.json
{
  "licence": "ODBL",
  "source": "Portail Open Data SNCF",
  "codeLigne": 1000,
  "idGaia": "79e6edd0-e28c...",
  "nomLigne": "Ligne de Paris-Est à Mulhouse-Ville",
  "pkDebut": 0.052,
  "pkFin": 491.081,
  "statut": "Exploitée",
  "geometry": {
    "type": "LineString",
    "coordinates": [[2.358926, 48.877370], ..., [7.344862, 47.742907]]
  },
  "electrifications": [{ "detail": "25000V alternatif", "from": 0, "to": 39 }],
  "regimeExploitation": [{ "detail": "Double voie", "from": 0, "to": 491 }]
}
PropriétéTypeDescriptionUtilisé pour
licencestringLicence des données (ODBL)Métadonnée
sourcestringOrigine des donnéesMétadonnée
codeLigneintCode numérique RFN de la ligne (ex: 1000)⭐ Matching liaisons
idGaiastringUUID interne SNCFNon utilisé
nomLignestringNom officiel (ex: "Paris-Est à Mulhouse")⭐ Info affichée
pkDebutfloatPoint kilométrique de débutNon utilisé
pkFinfloatPoint kilométrique de finNon utilisé
statutstringÉtat de la ligne (Exploitée, Fermée...)Filtrage potentiel
geometryobjectObjet GeoJSON LineString⭐ Tracé carte
geometry.coordinatesnumber[][]Points [lon, lat] de la voie (~100-2000 pts)⭐ Polyline
electrificationsarrayTronçons électrifiés (25kV, 1500V...)Non utilisé
regimeExploitationarrayDouble/simple voie, VU...Non utilisé
vitessesarrayLimites de vitesse par tronçonNon utilisé
Algorithme matching : Pour chaque liaison, on cherche la ligne dont geometry passe le plus près des deux gares (Haversine < 5km)

Flux de données

1
Données GTFS brutes
stop_times.txt, trips.txt, routes.txt → Téléchargées de data.sncf.com
2
Script de génération
generate_enhanced_graph.py → Parse GTFS et calcule temps moyens
3
Datasets traités
dataset_liaisons_enhanced.json → Prêt pour Dijkstra
4
Enrichissement géométries
generate_railway_shapes.py → Ajoute tracés GeoJSON
5
API & Frontend
Chargé par Flask → Servi à Next.js → Affiché sur Leaflet