Toutes les réalisations

NLP

StackOverflow NLP

Suggérer plusieurs tags à une question technique

Mission freelance réelle · reconstruction publique distincte du modèle confidentiel

Modèle multi-label · 16 tags

Cadre
Freelance
Domaine
NLP
Démo
16 tags
Modèle public
TF-IDF + LR

Explorer la démonstration

Modèle entraîné · plusieurs tags pour une question

Une question peut mêler langage, framework et outil. Ce modèle apprend les tags réellement associés à des questions publiques Stack Overflow. Il peut retenir plusieurs tags parmi 16, ou n'en retenir aucun.

Exemples rédigés pour la démonstration

Le texte reste dans votre navigateur. Poids chargés au premier calcul : environ 1,9 Mio. Les noms de technologies font partie du texte appris et ne sont pas masqués dans ce modèle.

Tags proposés

Choisissez un exemple ou lancez le calcul pour examiner les tags et leurs seuils.

Périmètre, évaluation et limites

16 tags possibles : python, javascript, java, c#, html, css, reactjs, sql, pandas, numpy, android, node.js, c++, php, django, typescript. Les autres tags des questions sources sont exclus de ce périmètre ; aucune annotation n'est inventée.

Corpus : 7 076 questions publiques, collectées par l'API officielle Stack Exchange. Jusqu'à 500 questions par tag, triées par votes, publiées en 2023–2024. Cet échantillon ciblé ne représente pas tout Stack Overflow.

Apprentissage : 4953 questions. Validation : 1061. Test : 1062. Déduplication canonique avant séparation ; vocabulaire et IDF appris sur l'entraînement seul. Les seuils sont fixés sur validation avant d'évaluer le test.

Test multi-label : précision micro 80,2 %, rappel micro 80,9 %, F1 micro 0.805 ; F1 macro 0.816. Proposer toujours les deux tags les plus fréquents de l'entraînement donne un F1 micro de 0.220.

La précision mesure la part des tags proposés qui sont corrects ; le rappel, la part des vrais tags retrouvés. Le F1 combine les deux. Le micro-F1 regroupe toutes les décisions ; le macro-F1 accorde le même poids à chaque tag.

Limites : 16 tags, anglais, sélection par popularité, séparation aléatoire et non temporelle, quasi-doublons possibles. Les scores ne sont pas calibrés. Le modèle public est une reconstruction personnelle, sans lien avec les performances du modèle confidentiel de la mission. Les textes et auteurs sources ne sont pas inclus dans les poids servis au navigateur.

Comprendre le projet

La mission

Concevoir une approche de suggestion de tags pour des questions techniques : une même question peut relever de plusieurs sujets. Le travail présenté se rattache à une mission freelance réelle. Les éléments accessibles ici sont des reconstructions personnelles ; ils ne publient ni le code ni les données confidentielles du client.

Un périmètre multi-label utilisable

La démonstration apprend sur des questions publiques et leurs véritables tags, obtenus par l'API officielle Stack Exchange. Elle peut associer plusieurs tags à une question en anglais, parmi 16 langages, frameworks et outils. Les tags hors de ce périmètre sont exclus, sans réétiquetage inventé. Le premier benchmark à quatre langages reste accessible pour comparer les deux tâches.

Du texte à plusieurs décisions

Le pipeline vectorise les mots et paires de mots avec TF-IDF. Une régression logistique par tag produit un score ; le tag est retenu si ce score dépasse son seuil. Chaque seuil est choisi sur un jeu de validation, séparé de l'apprentissage et du test. Les noms de technologies restent présents dans le texte, conformément à ce nouveau corpus.

Mesurer précision et couverture

Après déduplication canonique, 4953 questions servent à apprendre, 1061 à fixer les seuils et 1062 à évaluer. Le micro-F1 atteint 0.805, contre 0.220 pour une baseline qui propose toujours les deux tags les plus fréquents de l'entraînement. Les résultats par tag varient : ce score global ne garantit pas une qualité uniforme.

Des limites à garder visibles

Le corpus cible jusqu'à 500 questions par tag, triées par votes, publiées en 2023–2024. Il ne représente pas tout Stack Overflow. La séparation est aléatoire, des quasi-doublons peuvent subsister et le modèle n'a pas de détection hors domaine validée. Ces mesures décrivent uniquement cette reconstruction publique, jamais le modèle confidentiel de la mission.

Méthode et ressources

Méthodes et traçabilité

PythonTF-IDFScikit-learnClassification multi-labelRégression logistiqueTypeScript

Une chaîne reproductible. Réponses API et corpus identifiés par empreintes SHA-256, vrais tags et attribution conservés localement, séparation déterministe et contrôle des doublons avant entraînement. Le vocabulaire, les IDF, les coefficients et les seuils sont exportés ensemble et comparés numériquement entre Python et TypeScript.

API officielle Stack Exchange pour le corpus multi-label ; corpus TensorFlow pour le benchmark quatre langages. Aucun texte de question source ni profil d'auteur n'est publié dans les poids du navigateur. Les exemples sont rédigés pour la démonstration.