Repository navigation
fix(genai,#17066): redressement critique 25_CRF — retitrage 15 lectures + fusion ablation (15 dup -> 0) - #17076
Conversation
…es sujet-specifiques + fusion ablation (16 titres identiques -> 0) Consolidation markdown-only : 19 cellules code byte-identiques (sha1), 29 outputs intacts, 0 re-execution requise (C.2 exception markdown). Organe check_duplicate_sections.py : 15 dup_reading -> 0. See #17066 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
Grain tag obligatoire (#10045, bloquant).
Pour passer ce gate, le body doit porter en tete une ligne de la forme : Le |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Path-collision (organ #13359/#13615)Cette PR #17076 (
|
|
[ADJOINT PREFLIGHT] |
|
[ADJOINT PREFLIGHT] |
Grain: LIGHT/notebook-python -- lane myia-po-2023:CoursIA -- prev: LIGHT/tooling #17018
Exception ecrite (G-VAR-3 adjacency + trivial-diff #15740), ajout 2026-09-21. L'organe adjacency mesure des grains
LIGHT/notebook-pythonconsecutifs pour la lane en sequence de merges (#17076 -> #17100 -> #17101 -> #17106). C'est voulu : la campagne #17066 (duplicate-sections, dispatch ai-01) est une serie coordonnee livree en PRs separees (one-notebook-per-PR, regle atomique), chaque PR etant la consolidation d'un notebook distinct mesuree par le meme organ (check_duplicate_sections.py : porteurs 10-15 -> 0 chacun, verifie dans chaque body). Le diff court (~20-45 lignes de titres) est le format attendu d'une consolidation markdown-only (retitres subject-specific, corps byte-identiques) : la substance de chaque PR est documentee dans son corps et preuvee (SHA1 cellules code, outputs intacts).Redressement critique #17066 —
GenAI/Texte/25_CRF_Etiquetage_Sequentiel.ipynbPorteur mesuré par
check_duplicate_sections.py: 15dup_reading— 16 cellules titrées à l'identique « Lecture du résultat » (cellules 4, 7, 10, 12, 15, 17, 19, 22, 24, 27, 29, 32, 35, 37, 40, 42).Lecture critique préalable (le compteur ne suffit pas)
Contrairement à d'autres porteurs de la campagne, le contenu des 16 lectures est riche et ancré (chaque lecture cite les valeurs mesurées de SA sortie : 178 tokens/45 entités, erreur relative < 10⁻⁷, F1 0.947→0.667, etc.). Le défaut est structurel, pas éditorial : un titre générique répété 16 fois qui interdit la navigation (sommaire, recherche « Lecture de X »). Les 3 exercices sont des stubs C.1 conformes (
print+return None), aucune fuite de solution (vérifié cellule par cellule), chaque lecture suit bien SON code, aucune inversion d'ordre.Consolidations (aucune suppression à pile ou face)
Plan du notebook après réparation
9 sections progressives inchangées (corpus BIO → features → CRF from scratch + gradient-check → apprentissage → baseline token-wise → métriques entité-level + étalonnage seqeval → témoin CRFsuite → ablation → analyse d'erreurs croisée), puis 3 exercices conformes et conclusion. 50 cellules (51 avant), aucune cellule déplacée hors la fusion 35/37.
Verdict de séquence (honnête)
La progression pédagogique est saine et préservée : chaque concept (features → scores → gradient → apprentissage → comparaison → ablation → erreurs) repose sur le précédent, les lectures maintenant localisables par leur sujet. Le fait d'échelle « une entité ≈ 10 points de F1 » apparaît 3 fois (métriques §6, ablation §8, conclusion) — assumé : première pose, lecture dédiée, synthèse finale sont trois rôles distincts, pas un doublon.
Mesures
check_duplicate_sections.py(organe #17068)execution_count— 0 re-exécution requise (C.2 : exception markdown-only, aucune cellule code modifiée)See #17066 (contribution partielle à la campagne — 1 notebook sur 218 porteurs ; tranche QC-Python réservée à po-2025:CoursIA-2, SW-11 sauté car PR #17059 ouverte le touche).
🤖 Generated with Claude Code