Alric le Conte

Projets / algorithm-tag-classifier

Tagger des problèmes d'algorithmique depuis l'énoncé et le code

Un classifieur multi-label qui prédit huit tags d'algorithmique à partir d'un énoncé et d'une solution Python, comparé à un LLM en zero-shot.

Période
2026
Rôle
Auteur unique
Contexte
Projet personnel, données publiques
~0.68macro-F1 sur le test set figé
~0.65LLM zero-shot, en comparaison
~5 000problèmes publics

[ Architecture ]

Comment ça marche

Lancez un scénario pour suivre une requête à travers le système. Sélectionnez un composant pour lire son rôle et ses flux.

Lancer un scénario

utilisateurProblèmeénoncé + codeIATF-IDF + linéaireénoncé et codeIAModernBERTfine-tunéserviceFusion & thresholdsréglés en CVappTags8 labels
question

Un problème de graphes avec une solution en Python

Un énoncé sur les composantes connexes, avec une solution en parcours en profondeur.

solution.py

ConsoleExécution simulée · données illustratives
  1. Appuyez sur Classer un problème pour suivre la requête à travers le système.
  1. 01ProblèmeÉnoncé et solution reçus
  2. 02TF-IDF + linéaireTexte et code scorés par le modèle linéaire
  3. 03Fusion & thresholdsScores de la première branche conservés
  4. 04ModernBERTLe transformer score les mêmes tags
  5. 05Fusion & thresholdsScores combinés · chaque tag comparé à son threshold
  6. 06TagsTags prédits - graphs · dfs
  7. ✓Le problème reçoit ses tags prédits. Sur le jeu de test figé, ce pipeline atteint un macro-F1 de 0.683.

Problème

Prédire huit tags d’algorithmique (multi-label) à partir de l’énoncé d’un problème de programmation et d’une solution Python. Le protocole d’évaluation compte autant que le modèle.

Données

Environ 5 000 problèmes publics issus d’un site de programmation compétitive, avec énoncés, solutions Python et tags. Les labels sont incomplets, ce qui plafonne le score atteignable.

Approche

  • Le protocole d’abord. Le test set est figé avant de construire un modèle, les modèles sont choisis par cross-validation, et les problèmes quasi dupliqués sont regroupés pour éviter toute fuite.
  • Deux branches, combinées. Un modèle linéaire sur des features TF-IDF et un ModernBERT en fine-tuning, avec un threshold réglé par tag.
  • Une baseline. Un LLM zero-shot sur la même tâche.

Évaluation

La combinaison atteint environ 0.68 de macro-F1 sur le test set figé, un peu au-dessus du LLM zero-shot (environ 0.65). Les labels incomplets plafonnent le score.

Résultat

Un pipeline compact et reproductible, évalué une seule fois sur des données mises de côté, sans appel à un modèle pour chaque prédiction.

Mon rôle

Projet personnel, réalisé seul, du protocole à la baseline LLM.