Code2Text

Générer des libellés par IA pour entraîner la codification automatique

Matéo Morin — ENSAE Paris

Insee · SSP Lab — Tuteur : Meilame Tayebjee

21 octobre 2026

Plan

  1. Contexte et enjeux
  2. Méthodologie
  3. Résultats
  4. Compétences acquises
  5. Limites & perspectives

1. Contexte et enjeux

A l’origine : coder l’activité des entreprises

NAF : Nomenclature d’Activité Française (= code APE)

747 classes dans la NAF 2025

> 1 M libellés réels d’entraînement

1 code sur 2 a moins de 60 exemples

  • Text2Code : libellé libre → code NAF
  • Aujourd’hui : FastText, ~70 % des cas codés seuls

Objectif principal : enrichir l’entraînement par des données synthétiques issues de grands modèles de langage (LLMs)

Distribution des codes dans $\mathcal{X}_{train_real}$, composée d'une tête à très haute fréquence (jusqu'à 10%), d'un corps qui suit une loi exponentielle, et d'une queue sous forme de marches (très faibles proportions) mais avec tendance globale la même équation que le corps.
Figure 1: Distribution des codes dans \mathcal{X}_{train\_real}

2. Méthodologie

1️⃣ NaiveCode2Text : la génération initiale

Schéma du pipeline NaiveCode2Text avec requêtes parallèles
Figure 2: Architecture parallélisée de NaiveCode2Text
  • Ton trop professionnel
  • Phrases sans faute
  • Proche du titre du code

2️⃣ LabelGuard : mesurer l’empreinte du LLM

4096 → 1 MLP sur embeddings Qwen3-8B

99,4 % exactitude (sur 40 000 libellés)

0,7 % faux positifs (soit 139 libellés)

  • Discriminateur humain (0) ou IA (1)
  • Un watermark (signature stylistique du LLM) est présent
  • Robuste : le modèle prédit correctement même avec peu de données d’entraînement.

En l’état, le style du LLM est trop éloigné du style orginal

Deux grands pics de confiance sont présents autour de 0 et de 1 avec une prédiction correcte.
Figure 3: Confiance dans la discrimination de LabelGuard pour les données de validation (distribution KDE)

3️⃣ Code2ReText : boucle Acteur-Superviseur

Schéma Code2ReText
Figure 4: Code2ReText — Version finale

3️⃣ Code2ReText : évolution de la discrimination au fil des boucles

Figure 5: Evolution de la distribution du taux de discrimination à la fin de chaque boucle

Naive vs Code2ReText : exemples

Titre du code NaiveCode2Text Code2ReText
Commerce de gros, plomberie et chauffage Commerce interentreprises de matériel de chauffage industriel. Plomberie chauffage
Travaux de génie civil spécialisés Construction d’ouvrages d’art complexe. MONTAGE STRUCTURES METALLIQUES POUR GENIE CIVIL
Conseil pour les affaires Prestation de services de conseil en organisation CONSEIL GESTION

✅ Style : plus brut, plus proche de la donnée originale

⚠️ Parfois : copie des exemples few shot (surtout si un seul exemple dans le code)

4️⃣ Évaluation finale : protocole \mathcal{M}_\alpha

Evaluation d’un classifieur Text2Code selon des datasets d’entraînement \mathcal{M}_\alpha différents :

\mathcal{M}_\alpha = \mathcal{C}_{real}(\alpha) \cup \mathcal{C}_{synth}(\alpha), \quad |\mathcal{M}_\alpha| = 50\,000

  • α : part de données synthétiques injectée
  • Ensembles imbriqués :

{\alpha}_1 < {\alpha}_2 \Longrightarrow \mathcal{C}_{real}({\alpha}_2) \subset \mathcal{C}_{real}({\alpha}_1), \quad \mathcal{C}_{synth}({\alpha}_1) \subset \mathcal{C}_{synth}({\alpha}_2)

  • Base immuable : 1 exemple par code (747)
  • Même architecture : hyperparamètres figés (grid search 36 configs)

On applique la méthode pour différents \mathcal{C}_{synth}(\alpha) issus de NaiveCode2Text et Code2ReText

3. Résultats

Résultats à retenir

40–50 % taux d’injection optimal

87 % / 60 % accuracy tête / queue à α = 0,4

α ≥ 0,9 effondrement des performances

  • Queue de distribution : gain très net dès les premières injections
  • Tête et corps : peu dégradés à 40–50 %
  • Meilleur choix : Code2ReText, distribution proche de l’originale
  • Moins de diversité avec Code2ReText
Tendance décroissante concave générale, compromis autour de $\alpha = 0.4$ (87%/60%)
Figure 6: Evolution de l’accuracy sur le jeu de test (tête) en fonction de l’accuracy sur le jeu de test (queue)

L’injection de données synthétiques réduit la discrimination des classes rares

4. Compétences acquises

Compétences acquises

Figure 7: Architecture de l’environnement informatique disponible
Compétence Outils mobilisés
LLM & API vLLM, NVIDIA H100, asyncio
Agentique LangChain, LangGraph
Observabilité Langfuse (tracing)
Orchestration Argo Workflows, Argo CD
Données & infra Kubernetes, MinIO/S3, Qdrant, Neo4j
Reproductibilité Git, conteneurs

5. Limites et perspectives

Limites

0,5 % libellés recopiés par ReText (Naive : 0,005 %)

50 k données d’entraînement pour le benchmark

  • Fuite de données : risque pour l’open-data
  • Bruit des annotations et du changement de nomenclature
    • Mais robustesse des résultats pour le niveau 4 et pour le top 5 des prédictions
  • Style encore imparfait : bruit humain pas entièrement assimilé
    • Souvent un seul trait qui est exacerbé
  • Comparaison avec des méthodes simples
    • Ajout de fautes d’orthographes, recopier les libellés pour les codes rares, …

Perspectives

Figure 8: Etat des lieux sur les thématiques du stage

Autres méthodes à explorer

  • SFT : Supervised Fine Tuning
    • objectif : imiter les bons styles de générations à partir des données originales
    • limites : sur-apprentissage des grandes classes et instabilité
  • RLHF : Reinforcement Learning from Human Feedback
    • objectif : guider le style par un retour humain (ou LLM as a judge)
    • possibilité d’inclure LabelGuard dans l’évaluation
    • limite princiaple : instabilité

Open source et reproductibilité

  • NACE : généraliser le générateur pour les services statistiques européens
    • requiert une base européenne d’exemples
  • Multilingue : réussir à adapter selon la langue
    • Simple si méthode actuelle, difficile autrement

Annexe

Informations sur la donnée originale

La base de données est large

  • Train ≈ 1,5 M d’observations
  • Validation ≈ 400 k
  • Test ≈ 500 k

La base de données est bruitée

  • FastText : ~10 % d’erreur sur les deux tiers de données traités
  • Gestionnaires : potentiels bruits non mesurés sur le tier restant
  • Recodage NAF 2008 → 2025 par LLM
  • Altération artificielle de la distribution (~mai 2026)
  • Troncature des libellés : 8 % à 141 ou 161 caractères

L’idée : découpler structure et expression

Un seul générateur, deux usages selon la loi d’échantillonnage :

Code2Text · Insee SSP Lab · Matéo Morin