class MemoriaRobotNLP: def __init__(self, max_size): self.max_size = max_size self.memoria = {} def agregar_concepto(self, concepto, strings): if concepto not in self.memoria: self.memoria[concepto] = [] for string, prioridad in strings: self.memoria[concepto].append((string, prioridad)) def eliminar_concepto(self, concepto): if concepto in self.memoria: del self.memoria[concepto] def agregar_string(self, concepto, string, prioridad): if concepto not in self.memoria: self.memoria[concepto] = [] self.memoria[concepto].append((string, prioridad)) def eliminar_string(self, concepto, string): if concepto in self.memoria: self.memoria[concepto] = [(s, p) for s, p in self.memoria[concepto] if s != string] def obtener_conceptos_acotados(self, espacio_disponible): memoria_ordenada = sorted(self.memoria.items(), key=lambda x: sum(prioridad for _, prioridad in x[1]), reverse=True) espacio_utilizado = 0 conceptos_acotados = [] for concepto, strings in memoria_ordenada: espacio_concepto = sum(prioridad for _, prioridad in strings) if espacio_utilizado + espacio_concepto <= espacio_disponible: conceptos_acotados.append((concepto, strings)) espacio_utilizado += espacio_concepto else: break return conceptos_acotados # Ejemplo de uso memoria_robot = MemoriaRobotNLP(max_size=100) memoria_robot.agregar_concepto("animales", [("perro", 0.8), ("gato", 0.7), ("pájaro", 0.5)]) memoria_robot.agregar_concepto("colores", [("rojo", 0.9), ("verde", 0.6), ("azul", 0.7)]) print("Memoria completa:") print(memoria_robot.memoria) memoria_robot.agregar_string("animales", "pez", 0.6) memoria_robot.eliminar_string("colores", "verde") memoria_robot.eliminar_concepto("colores") print("\nMemoria después de modificaciones:") print(memoria_robot.memoria) conceptos_acotados = memoria_robot.obtener_conceptos_acotados(50) print("\nConceptos acotados a un tamaño máximo de memoria:") print(conceptos_acotados)