Spaces:
Sleeping
Sleeping
File size: 2,695 Bytes
6fb487c 70c7f04 6fb487c 8b82e6e 6fb487c 8b82e6e 6fb487c 8b82e6e 6fb487c 8b82e6e 6fb487c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
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)
|