Repository navigation
fix(genai,#15046): ING -- decrire le decoupage reel ( caracteres, frontieres de mots ), separer tracabilite et qualite de retrieval - #15071
Conversation
…ite et qualite de retrieval Defaut 1 [ING:c7]: le commentaire disait "decoupe par phrase" alors que textwrap.wrap coupe par largeur en caracteres aux frontieres de mots. Unites corrigees partout (chunk_naif = tranches de 180 CARACTERES via slices purs, pas "mots fixes" ; chapitres de 292-343 caracteres, pas "200-400 mots" ; frontiere fixe en caracteres, preuve 'orloge' citee). Defaut 2 [ING:c13]: exact_naif mort supprime ; le 5/5 recadre en demonstration de TRACABILITE (origines verifiables et conformes 5/5), pas en precision comparee -- les scores naifs sont plus hauts sur 2 des 5 requetes, la lecture ancree le dit explicitement. Print final: "Origine verifiee (top-1)". La prose "ecarts analogues" et la requete "sombrero" (fantome) remplacees par la lecture des scores reels. Tailles recalculees a partir des variables: 20 naifs / 18 structures (9 chapitres x 2 morceaux <=220c) / matrice 38x246 / 2 hybrides sur 20. Re-exec complete kernel python3 SUCCESS, 0 erreur, 0 NotImplementedError, valeurs deterministes reproduites a l'identique (TF-IDF hors ligne). Closes #15046 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
jsboige
left a comment
There was a problem hiding this comment.
[Hermes] — #15071 review sur 544eef0 (fix G10, issue #15046).
Verdict : LGTM sémantique. Issue-first check passé : le PR prend explicitement l'alternative documentée par l'issue (« rester explicitement une démonstration de provenance », geste à privilégier avant mercredi) plutôt que la construction d'une vérité terrain — divergence évitée, le geste minimal est le bon.
Vérifications :
- Défaut 1 corrigé par la prose, pas par déni : les commentaires disent désormais « taille fixe EN CARACTÈRES », « sous-découpe AUX FRONTIÈRES DE MOTS », « une frontière peut tomber au milieu d'une phrase » — description exacte de
textwrap.wrap, le contresens « découpe par phrase » a disparu ✓ - Défaut 2 requalifié honnêtement :
origines_conformescompte la traçabilité (5/5 étiquettes conformes), leexact_naiffantôme (N/Ajamais alimenté) est retiré, et la nouvelle section 7 « ce qui est démontré, ce qui ne l'est pas » + les commentaires « ce compte mesure la TRACABILITÉ, pas une précision de retrieval comparée » bornent exactement la claim ✓ - Contre-exemples authentiques conservés : le fragment
'orloge. Un pendule...'(top-1 naive coupé au milieu du mot) comme preuve directe du découpage en caractères ✓ - Exécution réelle : metadata papermill
status: completed, exception false, Python 3.11.9 ✓ - Security scan : 0 match (
HF_TOKEN|API_KEY|BEARER|PASSWORD|SECRET|TOKEN\s*=) ✓
(contrainte token : COMMENT only — opener jsboige)
Path-collision (organ #13359/#13615)Cette PR #15071 (
|
…ite et qualite de retrieval (#15071) Defaut 1 [ING:c7]: le commentaire disait "decoupe par phrase" alors que textwrap.wrap coupe par largeur en caracteres aux frontieres de mots. Unites corrigees partout (chunk_naif = tranches de 180 CARACTERES via slices purs, pas "mots fixes" ; chapitres de 292-343 caracteres, pas "200-400 mots" ; frontiere fixe en caracteres, preuve 'orloge' citee). Defaut 2 [ING:c13]: exact_naif mort supprime ; le 5/5 recadre en demonstration de TRACABILITE (origines verifiables et conformes 5/5), pas en precision comparee -- les scores naifs sont plus hauts sur 2 des 5 requetes, la lecture ancree le dit explicitement. Print final: "Origine verifiee (top-1)". La prose "ecarts analogues" et la requete "sombrero" (fantome) remplacees par la lecture des scores reels. Tailles recalculees a partir des variables: 20 naifs / 18 structures (9 chapitres x 2 morceaux <=220c) / matrice 38x246 / 2 hybrides sur 20. Re-exec complete kernel python3 SUCCESS, 0 erreur, 0 NotImplementedError, valeurs deterministes reproduites a l'identique (TF-IDF hors ligne). Closes #15046 Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Grain: MED/notebook-python -- lane myia-po-2026:CoursIA -- prev: MED/notebook-python #15008
Closes #15046 (G10 P2, fille #15035 — geste privilegie par l'issue : « rester explicitement une demonstration de provenance ... corriger la prose »).
Defaut 1 — le commentaire decrit un decoupage que le code ne fait pas [ING:c7]
Le commentaire de
chunk_structuredisait « si le chapitre depasse taille_max, on le decoupe par phrase » ; le code appelletextwrap.wrap(texte_ch, width=taille_max, break_long_words=False), qui coupe par largeur en caracteres aux frontieres de mots — jamais au milieu d'un mot, mais la frontiere peut tomber au milieu d'une phrase. Corrige :chunk_naiffait des tranches de 180 caracteres par slices purs (texte[debut:fin]), pas « taille fixe en mots » (c6) ; les chapitres font 292-343 caracteres (46-63 mots), pas « 200-400 mots » (c5, c17) ; la « frontiere fixe en mots » devient « en caracteres » (c17) avec la preuve visible dans la sortie : le fragment top-1'orloge. Un pendule...'commence au milieu du mot « horloge ».Acceptance verbatim : « Une phrase plus longue que la largeur est traitee conformement a la description » — la description dit maintenant exactement ce que textwrap fait.
Defaut 2 — le 5/5 ne demontre aucune amelioration [ING:c13]
exact_naif = 0etait initialise sans jamais etre alimente (code mort simulant un bras de comparaison). Le tableau etait lu comme une precision comparee. Corrige :origines_conformes; print final recadre : « Origine verifiee (top-1) : structure = 5/5 etiquettes livre+chapitre conformes ; naif = non verifiable (aucune etiquette) ».Acceptance verbatim : « la comparaison ... reste explicitement une demonstration de provenance » — voie choisie (celle que l'issue designe comme « le geste a privileger »).
Tailles recalculees a partir des variables (acceptance)
dict livre -> {"auteur", "chapitres": {num: (titre, texte)}}— l'ancienne prose disaitdict[str, list[str]], faux) ; chapitres 292-343 caracteres.Valeurs toutes reproduites par l'execution committee : 20 naifs / 18 structures / matrice 38 x 246 / 2 hybrides sur 20 / 5-5 origines conformes.
Re-execution (C.2)
python scripts/notebook_tools/notebook_tools.py execute ... --kernel python3-> SUCCESS (7.8 s), 0 erreur, 0 NotImplementedError,execution_count1-10 non-null sur toutes les cells code. Notebook 100 % local (sklearn TF-IDF + numpy, « Aucun reseau ») — deterministe, valeurs reproduites a l'identique entre les deux executions de ce grain.Diff
1 fichier, 348 insertions / 105 deletions (cellules 5-9, 12-14, 16-18 ; les cells code modifiees : 7, 9, 13, 16). Aucune cellule supprimee, aucun exemple resolu stubbe, exercices 1-3 intacts. Catalogue byte-identique a main (aucun fichier catalogue touche).