File size: 2,190 Bytes
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
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)