expAge commited on
Commit
41328a9
·
1 Parent(s): 010dac3

fix(inference): désactiver target_generic et double_isa — induction logiquement invalide

Browse files

Bug remonté par le user — la consolidation Phase 11 « déduisait » des
triplets faux comme :
chaise r_has_part coussin en cuir
(parce que chaise r_has_part coussin ET coussin en cuir r_isa coussin)
fromage r_isa aliment naturel
(parce que fromage r_isa aliment ET aliment naturel r_isa aliment)

Cause racine : les schémas `target_generic` et `double_isa` descendaient
l'arbre r_isa vers le SPÉCIFIQUE (induction = affirmation du conséquent),
alors qu'une déduction valide remonte vers le GÉNÉRAL. Décoter la
confiance d'un schéma faux ne le rendait pas vrai — c'était une erreur
de design Phase 11 de ma part, à corriger sans délai.

Action :
- _EFFORT2_SCHEMAS ne contient plus que _schema_composition (saine, curée).
- _schema_target_generic et _schema_double_isa restent définis (back-compat
d'imports / sérialisation enum) mais ne tournent plus jamais.
- Commentaire explicatif détaillé dans le code pour empêcher la
réintroduction par mégarde.

La direction valide (généralisation : si A R B' et B' r_isa B alors A R B)
est déjà capturée par _schema_hyponym_propagation, conservé tel quel.

⚠️ Triplets éventuellement déjà soumis au LLMDrops via ces schémas sont
des faux positifs — à filtrer côté JDM ou regénérer.

Files changed (1) hide show
  1. src/jdm_agent/inference/engine.py +16 -6
src/jdm_agent/inference/engine.py CHANGED
@@ -571,14 +571,24 @@ _EFFORT1_SCHEMAS = (
571
  # positif n'a abouti (sinon la transitivité aurait confirmé).
572
  _schema_cohyponym,
573
  )
574
- # Effort 2 : composition (curée, saine) d'abord, puis les schémas LÂCHES en
575
- # bas de cascade — target_generic, double_isa. Ces deux-là sur-génèrent
576
- # (ponts par nœuds génériques) : ils ne tournent qu'en dernier recours,
577
- # et leur confiance est fortement décotée (cf. SCHEMA_CONFIDENCE).
 
 
 
 
 
 
 
 
 
 
 
 
578
  _EFFORT2_SCHEMAS = (
579
  _schema_composition,
580
- _schema_target_generic,
581
- _schema_double_isa,
582
  )
583
 
584
 
 
571
  # positif n'a abouti (sinon la transitivité aurait confirmé).
572
  _schema_cohyponym,
573
  )
574
+ # Effort 2 : composition seule (curée, saine).
575
+ #
576
+ # Les schémas `_schema_target_generic` et `_schema_double_isa` ont été
577
+ # DÉSACTIVÉS définitivement : ils faisaient de l'INDUCTION (spécialisation
578
+ # vers le bas de l'arbre r_isa), pas de la déduction.
579
+ #
580
+ # Exemple du bug qu'ils produisaient :
581
+ # « chaise r_has_part coussin » + « coussin en cuir r_isa coussin »
582
+ # ⟹ FAUX « chaise r_has_part coussin en cuir »
583
+ #
584
+ # La cible (« coussin en cuir ») est PLUS SPÉCIFIQUE que ce qu'on sait
585
+ # (« coussin »), donc on ne peut RIEN en déduire — c'est l'erreur d'affirmation
586
+ # du conséquent. Décoter la confiance d'un schéma logiquement faux ne le rend
587
+ # pas vrai. La direction valide (spécifique → général) est déjà capturée par
588
+ # `_schema_hyponym_propagation`. Les fonctions restent définies pour
589
+ # rétro-compatibilité d'imports mais ne tournent plus.
590
  _EFFORT2_SCHEMAS = (
591
  _schema_composition,
 
 
592
  )
593
 
594