Les données

Sources mobilisées par le pipeline de codification COICOP

Vue d’ensemble

Le pipeline mobilise plusieurs fichiers en entrée (sources externes, non produites par le pipeline lui-même). Tous résident dans le bucket S3 projet-budget-famille.

Le pipeline n’a qu’un mode : il code le fichier désigné par input_file. Si ce fichier porte une colonne d’étiquettes, la désigner par label-column rend le run mesurable par l’étape evaluate — voir Généralités.

Fichier Définition Format Path S3 Lu par Commentaire
annotations_test_2024.csv Annotations manuelles BdF 2024 (vérité terrain / KB ; sources receipts_from_app, manual_from_app, manual_from_book) CSV ; s3://projet-budget-famille/data/codification-manuelle-anterieure/annotations_test_2024.csv build-datasets Base produite à partir de trois fichiers fournis par l’équipe BDF. Voir ce repo : https://git.lab.sspcloud.fr/ssplab/experimentation-bdf/construction-dataset
annotations_BDF_2017.csv Annotations historiques de l’enquête BdF 2017 (source bdf_2017, KB uniquement) CSV ; s3://projet-budget-famille/data/codification-manuelle-anterieure/annotations_BDF_2017.csv build-datasets Utilise l’ancien millésime de la COICOP (difficilement exploitable). Exclu de la base vectorielle des RAG annotations (exclude_sources)
liste_produits_fr_copain.csv Liste de produits codifiés issue du suggester de l’application de l’enquête — exemples additionnels de la KB des RAG CSV s3://projet-budget-famille/data/input-annotation/liste_produits_fr_copain.csv build-datasets, prune-codes Codes au niveau 5, non prunés à la source : c’est prune-codes qui les tronque et les élague
liste_magasins.csv Table de correspondance enseigne → type de magasin CSV s3://projet-budget-famille/data/input-annotation/liste_magasins.csv build-datasets Alimente shop_type_name, signal utilisé par LCS, les RAG et le juge
produit_non_annotable.csv Liste des libellés non codables (retirés en amont) CSV s3://projet-budget-famille/data/codification-manuelle-anterieure/produit_non_annotable.csv build-datasets
coicop-2018_envoi_rmes_20251022.csv Nomenclature COICOP 2018 brute (référentiel des codes + libellés), export RMES, 949 codes sur 5 niveaux CSV ; s3://projet-budget-famille/data/coicop-2018_envoi_rmes_20251022.csv prune-codes Seule source de vérité de la nomenclature : prune-codes en dérive la nomenclature prunée et la table de mapping que tout l’aval consomme
fichier d’observations Le fichier à coder (paramètre Argo input_file, obligatoire) CSV / parquet s3://projet-budget-famille/data/workflow_inputs/… (ex. BDF_data_tickets_appli_20260320_a_codif.csv) build-datasets Noms de colonnes libres, mappés par les paramètres text_column / shop_column / budget_column
NoteDeux entrées particulières
  • Modèle TTC : le classifieur neuronal n’est pas un fichier S3 mais un artefact MLflow, référencé par le paramètre Argo classify-ttc-model-uri (ex. mlflow-artifacts:/10/…/artifacts/model), lu par classify-ttc.
  • Les données de caisse (ddc) : ce sont des données récoltées dans le cadre de la production de l’IPC. Il s’agit de dépenses issues de tickets de caisse avec le code COICOP correspondant (labellisation faite via un référentiel fourni par un prestataire). Ces données sont utilisées dans le cadre de l’entraînement du modèle TTC (en dehors de ce pipeline).
  • Source copain (s3://projet-budget-famille/data/output-annotation/) : historiquement une entrée du build-datasets, elle est exclue du pipeline depuis juin 2026 — son chargement est désactivé (la fonction load_copain_data() subsiste dans le code sans être appelée).
  • Les listes de règles pour la codification déterministe par regex sont contenues dans le code, et non dans un fichier sur S3 (classify-regex/config/rules.yaml).

Référentiels de codes embarqués dans le dépôt

Deux fichiers de codes ne viennent pas de S3 mais sont versionnés avec le code — ce qui implique un risque de désynchronisation avec la nomenclature RMES (voir Limites et points de vigilance) :

Fichier Contenu Utilisé par
reconcile-llm/data/coicop_et_codes_techniques.csv ~700 codes (Libelle;Code) : COICOP tous niveaux, y compris 5 + codes techniques 98.x / 99.x liste des codes valides soumise au juge LLM (--nomenclature)
classify-ttc/data/*.csv copie de la nomenclature RMES, table de passage COICOP, familles Circana, données d’entraînement entraînement et évaluation du modèle TTC

Artefacts produits par le pipeline

Chaque run écrit ses fichiers intermédiaires sous s3://projet-budget-famille/data/workflow_runs/{run_date}/{run_id}/<étape>/, tous en parquet (sauf le livrable final, qui reprend le format d’entrée). Les principaux :

Étape Fichiers clés
build-datasets annotations_full (la KB), suggester, observations (le jeu à coder), qa/*
classify-regex REGEX_pred, raw_test_without_regex, raw_train_without_regex
prune-codes nomenclature_pruned, mapping_lvl4, annotations_train_pruned, annotations_test_pruned, suggester_pruned
classify-lcs raw_test_LCS, analyse_codif_LCS
classify-rag-notices predictions, retrieved_codes
classify-rag-annotations predictions
classify-ttc predictions
reconcile-llm predictions (toutes les prédictions + la décision)
export-results le fichier livré, sous son nom d’origine
report report.html
evaluate (facultative) evaluation_report.html

Codes techniques BdF

À côté des codes COICOP « produits », le pipeline manipule des codes techniques qui n’appartiennent pas à la nomenclature officielle :

Code Sens
98.1 Courses / alimentation non détaillée
98.3 Carte bancaire (ligne « Ticket CB »)
98.4 Prélèvement, libellé illisible ou vide
98.5 Remises / réductions
99.x Divers non codables
Reprise manuelle littéral (pas un code) : ligne à recoder à la main

Ces valeurs ne figurant pas dans la nomenclature RMES, elles traversent le pruning inchangées : ni troncature effective, ni élagage, ni resynchronisation de libellé.