JairoCesar commited on
Commit
5997bee
·
verified ·
1 Parent(s): 266b54d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -7
app.py CHANGED
@@ -167,14 +167,14 @@ SYMPTOM_KEYWORD_MAP = {
167
  def reinforce_entities_with_keywords(entities, query, food_map, symptom_map):
168
  """
169
  Revisa la salida de la IA y añade alimentos Y síntomas clave si fueron omitidos.
170
- Esta es una red de seguridad robusta contra las fallas de extracción de la IA.
171
  """
172
  if not entities:
173
  entities = {"alimentos": [], "sintomas": []}
174
 
175
  query_sanitized = sanitize_text(query)
176
 
177
- # --- Reforzar Alimentos (Lógica existente) ---
178
  current_foods = entities.get("alimentos", [])
179
  current_foods_sanitized = {sanitize_text(f) for f in current_foods}
180
  for food_keyword in food_map.keys():
@@ -183,15 +183,25 @@ def reinforce_entities_with_keywords(entities, query, food_map, symptom_map):
183
  current_foods.append(food_keyword)
184
  entities["alimentos"] = list(set(current_foods))
185
 
186
- # --- NUEVA LÓGICA: Reforzar Síntomas ---
187
  current_symptoms = entities.get("sintomas", [])
188
- # A veces la IA devuelve None en la lista, lo limpiamos por seguridad
189
  if current_symptoms is None: current_symptoms = []
190
- current_symptoms_sanitized = {sanitize_text(s) for s in current_symptoms}
191
- for symptom_keyword in symptom_map.keys():
192
- if symptom_keyword in query_sanitized and symptom_keyword not in current_symptoms_sanitized:
 
 
 
 
 
 
 
 
193
  logger.info(f"Red de seguridad (Síntoma): Añadiendo '{symptom_keyword}'.")
194
  current_symptoms.append(symptom_keyword)
 
 
 
195
  entities["sintomas"] = list(set(current_symptoms))
196
 
197
  return entities
 
167
  def reinforce_entities_with_keywords(entities, query, food_map, symptom_map):
168
  """
169
  Revisa la salida de la IA y añade alimentos Y síntomas clave si fueron omitidos.
170
+ Esta versión es más inteligente para evitar la doble contabilización de síntomas.
171
  """
172
  if not entities:
173
  entities = {"alimentos": [], "sintomas": []}
174
 
175
  query_sanitized = sanitize_text(query)
176
 
177
+ # --- Reforzar Alimentos (Lógica existente, sin cambios) ---
178
  current_foods = entities.get("alimentos", [])
179
  current_foods_sanitized = {sanitize_text(f) for f in current_foods}
180
  for food_keyword in food_map.keys():
 
183
  current_foods.append(food_keyword)
184
  entities["alimentos"] = list(set(current_foods))
185
 
186
+ # --- LÓGICA MEJORADA: Reforzar Síntomas (Evita redundancia) ---
187
  current_symptoms = entities.get("sintomas", [])
 
188
  if current_symptoms is None: current_symptoms = []
189
+
190
+ # Usamos una copia de la consulta para poder modificarla
191
+ query_to_search_symptoms = query_sanitized
192
+
193
+ # Ordenamos las palabras clave de síntomas por longitud, de la más larga a la más corta
194
+ # Esto asegura que "dolor de cabeza" se procese antes que "dolor"
195
+ sorted_symptom_keywords = sorted(symptom_map.keys(), key=len, reverse=True)
196
+
197
+ for symptom_keyword in sorted_symptom_keywords:
198
+ # Si encontramos el síntoma más específico...
199
+ if symptom_keyword in query_to_search_symptoms:
200
  logger.info(f"Red de seguridad (Síntoma): Añadiendo '{symptom_keyword}'.")
201
  current_symptoms.append(symptom_keyword)
202
+ # ...lo eliminamos de la cadena de búsqueda para que sus sub-partes no se vuelvan a encontrar.
203
+ query_to_search_symptoms = query_to_search_symptoms.replace(symptom_keyword, "")
204
+
205
  entities["sintomas"] = list(set(current_symptoms))
206
 
207
  return entities