klydekushy commited on
Commit
245eae5
·
verified ·
1 Parent(s): f433cad

Update core/extractor.py

Browse files
Files changed (1) hide show
  1. core/extractor.py +22 -4
core/extractor.py CHANGED
@@ -83,10 +83,28 @@ class ExtractorEngine:
83
  "Réponds uniquement par une liste de mots séparés par des virgules."
84
  )
85
  inputs = self.tokenizer(prompt, return_tensors="pt").to("cpu")
86
- with torch.no_grad():
87
- outputs = self.model.generate(**inputs, max_new_tokens=50)
88
- res = self.tokenizer.decode(outputs[0], skip_special_tokens=True).split(":")[-1]
89
- return [l.strip() for l in res.split(",") if len(l.strip()) > 2]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
 
91
  def _run_inference_with_entities(self, text: str, gliner_ents: list, temperature: float):
92
  """Phase de liaison : le LLM crée le graphe JSON final."""
 
83
  "Réponds uniquement par une liste de mots séparés par des virgules."
84
  )
85
  inputs = self.tokenizer(prompt, return_tensors="pt").to("cpu")
86
+ with torch.no_grad():
87
+ # On laisse un peu plus de tokens pour une liste riche
88
+ outputs = self.model.generate(**inputs, max_new_tokens=150)
89
+
90
+ res = self.tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True)
91
+
92
+ # --- LOGIQUE DE NETTOYAGE ET DÉDUPLICATION ---
93
+ raw_labels = res.split(",")
94
+ clean_labels = []
95
+ seen = set()
96
+
97
+ for l in raw_labels:
98
+ # Nettoyage : retrait des espaces, mise en minuscule pour comparer
99
+ label = l.strip().replace(".", "").replace("\n", "")
100
+ if len(label) > 2:
101
+ # On normalise (singulier et minuscule) pour éviter les doublons
102
+ norm_label = label.lower().rstrip('s')
103
+ if norm_label not in seen:
104
+ seen.add(norm_label)
105
+ clean_labels.append(label.capitalize()) # On garde un joli format (ex: "Montant")
106
+
107
+ return clean_labels
108
 
109
  def _run_inference_with_entities(self, text: str, gliner_ents: list, temperature: float):
110
  """Phase de liaison : le LLM crée le graphe JSON final."""