Skip to content

accents: le cureur canonique ne peut pas satisfaire le detecteur (table fermee de 161 entrees vs heuristique ouverte) #14613

Description

@jsboige

Le defaut

Deux organes traitent la desaccentuation, et ils ne partagent pas leur vocabulaire :

Organe Role Vocabulaire
scripts/notebook_tools/detect_markdown_deaccent.py mesure (critere de merge, gate) heuristique ouverte (forme du mot + exclusions stopwords / homographes / cognats)
scripts/notebook_tools/restore_accents_canonical.py repare table fermee de 161 entrees, importee de detect_accent_stripping.ACCENT_PAIRS

Consequence : le detecteur peut signaler ce que le cureur ne sait pas reparer, et rien ne le dit. Le cureur rend « CURED (written) N accent(s) » et sort en succes en laissant le compte du detecteur au-dessus du seuil — indistinguable, pour l'appelant, d'une cure complete.

Mesure firsthand (PR #14139)

Sur MyIA.AI.Notebooks/RL/rl_1_intro_cartpole.ipynb a la tete b4bdcf95f :

detecteur   : 276 TOTAL (248 auto)
cure canonique --apply : "CURED (written) 140 accent(s) in 28/32 markdown cells"
detecteur   : 210 TOTAL (182 auto)     <- plafond : relancer n'y change plus rien

Les 21 formes restantes sont toutes absentes de ACCENT_PAIRS :

recompense recompenses entrainement entraine entrainer episode episodes
aleatoire evaluation hyperparametres metrique creation cles reseaux
equivalent complementaire reperer cumule recommande enregistre guide

C'est le motif handrolled-pattern-set-undercounts-silently cote reparation : un jeu de motifs ecrit a la main ne leve pas d'erreur quand il ne couvre pas, il rend simplement un resultat plus petit et plus propre.

Deux sur-accusations du detecteur, mesurees dans le meme passage

Independantes du gap ci-dessus, et a traiter separement :

  1. Segments d'URL lus comme de la prose — guide x3, tous dans https://stable-baselines.readthedocs.io/en/master/guide/custom_env.html. Le chemin d'une URL n'est pas de la prose francaise.
  2. Presents de l'indicatif comptes comme desaccentues — enregistre x4 : « Monitor enregistre la recompense », « la video s'enregistre automatiquement ». Aucun accent n'est attendu ; le present et le participe sont homographes une fois desaccentues, donc indecidables sans contexte.

Ce qui est demande

  1. Aligner les deux organes, ou rendre le desalignement bruyant. Au minimum, que restore_accents_canonical.py signale ce que le detecteur voit encore et qu'il ne sait pas curer (« N formes hors table : ... ») au lieu de sortir en succes muet. Un cureur qui ne peut pas atteindre le critere doit le dire : c'est ce qui a coute un aller-retour complet sur Enrich rl_1_intro_cartpole pedagogique (c139) #14139.
  2. Etendre ACCENT_PAIRS aux formes context-free-correctes ci-dessus (recompense, entrainement, episode(s), aleatoire, evaluation, hyperparametres, metrique, creation, cles, reseau(x), equivalent, complementaire, reperer, entrainer), capitalisees comprises — la moitie des occurrences de Enrich rl_1_intro_cartpole pedagogique (c139) #14139 etaient des formes capitalisees (titres, cellules de tableau, libelles gras).
  3. Ne PAS y ajouter les formes ambigues (entraine, cumule, recommande, enregistre) : elles ont deux resolutions correctes selon le contexte, et une table globale en choisirait forcement une de travers. Elles se tranchent a la lecture.
  4. Proteger les blocs fences dans toute cure automatique : sur Enrich rl_1_intro_cartpole pedagogique (c139) #14139, deux fences reproduisent une sortie litterale du programme (Entrainement PPO (graine 42, 10 000 pas) : ...). Les accentuer falsifierait une transcription d'execution (interdit Stop & Repair, secrets-hygiene.md regle 6). La cure livree sur Enrich rl_1_intro_cartpole pedagogique (c139) #14139 protege deja fences, spans de code inline, cibles de lien et URLs — ce comportement est a porter dans l'organe canonique.

Controle positif attendu

Le correctif se valide par ses faux negatifs, pas par ses hits : re-passer le notebook de #14139 a sa tete b4bdcf95f dans le cureur etendu doit rendre auto <= 37 sans la passe manuelle, et sans toucher le contenu des deux fences.

Contexte

Ouvert depuis #14139 (la plus vieille PR du depot), ou le critere de sortie que j'avais pose comme coordinateur (auto <= 37) etait hors de portee du remede que j'avais prescrit dans le meme commentaire. La PR a ete debloquee a la main (commit 1c5c20103, 248 -> 7 auto) ; l'organe, lui, reste inchange.

See #14139, #2876.

Activity

  1. jsboige commented on Sep 4, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] #14613 — myia-po-2026:CoursIA 2026-09-04T23:10Z (locus = ce commentaire). Preflight à l'instant : 0 commentaire, lastclaim=none, les deux organes inchangés depuis #14139 (constaté sur origin/main). Plan = les 4 demandes de l'issue : (1) cureur BruYANT (« N formes hors table » au lieu du succès muet), (2) extension ACCENT_PAIRS aux 14 formes context-free + capitalisées, (3) PAS les ambigües (entraine/cumule/recommande/enregistre), (4) port de la protection fences/inline-code/liens/URLs dans l'organe canonique. Acceptance : rejeu du notebook #14139 à b4bdcf9 → auto <= 37 sans passe manuelle, fences intacts. paths: scripts/notebook_tools/detect_accent_stripping.py scripts/notebook_tools/restore_accents_canonical.py scripts/notebook_tools/tests/

  2. jsboige commented on Sep 4, 2026

    @jsboige
    OwnerAuthor

    [LIVRAISON] PR #14677 — alignement cureur/detecteur d'accents.

    Mesures replay (rl_1_intro_cartpole @ b4bdcf9) : avant 276 hits / 248 auto, cureur 140 cures -> residuel 210/182. Apres : 296 cures, detecteur auto 33 <= 37 (critere d'acceptance). Residuel = evaluation (x18) + ambigues (entraine/enregistre/recommande/cumule, point 3, exclus a dessein) + guide (x3, sur-accusation URL #14139, traitement separe).

    Les 4 points :

    1. Rapport formes hors table emportes par le cureur (hors_table/hors_table_total + print ATTENTION) — cure incomplete = jamais un succes muet.
    2. ACCENT_PAIRS 161 -> 179 (+18 formes RL). Arbitrage « evaluation » : exclu — l'exclusion -tion/-ence (en_valid_risky, incident po-2025 c.591) est gardee par test_excludes_en_valid_words ; le garde l'emporte sur la prescription de liste, le desalignement devient BRUYANT via le rapport (x18), et le critere auto <= 37 tient quand meme (33).
    3. Formes ambigues exclues + test de non-cure dedie.
    4. Fences/inline/URL proteges : machine d'etat de fence persistante a travers les chunks nbformat, masquage spans code + URLs nues. Replay : 62 openers de fence intacts, 144 spans inline intacts.

    Tests : 110 passed (3 modules accents) ; full notebook_tools 5381 passed / 1 skipped / 1 xfailed.
    Grain : MED/tooling — interleave avec #14672 documente (merge #14672 d'abord).
    →DELIVERED #14677

  3. added a commit that references this issue on Sep 5, 2026
  4. jsboige commented on Sep 30, 2026

    @jsboige
    OwnerAuthor

    Verification G.9 de fermeture (tranche 8 de #15258, lane myia-po-2024:CoursIA) : fermeture legitime, aucune reouverture.

    • Fermee par myia-ai-01 a 2026-09-05T01:04:02Z, commit_id: none (fermeture manuelle).
    • PR livrante : fix(notebook-tools,#14613): align accents curer with detector (RL family, fence/inline/URL protection, hors-table report) #14677 fix(notebook-tools,#14613): align accents curer with detector (RL family, fence/inline/URL protection, hors-table report) — MERGED a 2026-09-05T01:04:00Z (ecart 2 s) — Grain: MED/tooling — lane myia-po-2026:CoursIA.
    • Substance : l'objet exact de l'issue (le cureur canonique d'accents ne pouvait pas satisfaire le detecteur — table fermee de 161 entrees vs heuristique ouverte ; alignement du cureur sur le detecteur avec protections fence/inline/URL).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions