Spaces:
Sleeping
Sleeping
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 buscar_conceptos_patron(self, patron): | |
resultados = {} | |
for concepto, strings in self.memoria.items(): | |
for string, _ in strings: | |
if re.search(patron, string): | |
if concepto not in resultados: | |
resultados[concepto] = [] | |
resultados[concepto].append(string) | |
return resultados | |
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 | |
if __name__ == "__main__": | |
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) | |