CoolFace
Apppublic

torahCodes/Torah_Codes

sourceHugging Faceapache-2.0updated 2y agoView on Hugging Face
4likes
memory.py81 linesDownload Raw Back to lib
1import re2 3class MemoryRobotNLP:4    def __init__(self, max_size):5        self.max_size = max_size6        self.memory = {}7 8    def add_concept(self, concepto, string):9       10        if concepto not in self.memory:11            self.memory[concepto] = []12        #evaluate priority calculation13        priority = 1 - (1/len(concepto))14        self.memory[concepto].append({"Found_text":string, "Priority_Weight":priority})15 16    def delete_concept(self, concepto):17        if concepto in self.memory:18            del self.memory[concepto]19 20    def add_string(self, concepto, string, prioridad):21        if concepto not in self.memory:22            self.memory[concepto] = []23 24        self.memory[concepto].append((string, prioridad))25 26    def delete_string(self, concepto, string):27        if concepto in self.memory:28            self.memory[concepto] = [(s, p) for s, p in self.memory[concepto] if s != string]29 30    def search_concept_pattern(self, patron):31            resultados = {}32 33            for concepto, strings in self.memory.items():34                for string, _ in strings:35                    if re.search(patron, string,re.IGNORECASE):36                        if concepto not in resultados:37                            resultados[concepto] = []38                        resultados[concepto].append(string)39 40            return resultados41    def get_concepts_substrings(self, espacio_disponible):42        memoria_ordenada = sorted(self.memory.items(), key=lambda x: sum(prioridad for _, prioridad in x[1]), reverse=True)43        espacio_utilizado = 044        conceptos_acotados = []45 46        for concepto, strings in memoria_ordenada:47            espacio_concepto = sum(prioridad for _, prioridad in strings)48            if espacio_utilizado + espacio_concepto <= espacio_disponible:49                conceptos_acotados.append((concepto, strings))50                espacio_utilizado += espacio_concepto51            else:52                break53 54        return conceptos_acotados55 56 57# Ejemplo de uso58 59 60if __name__ == "__main__":61 62    memoria_robot = MemoryRobotNLP(max_size=100)63 64    memoria_robot.add_concept("animales", [("perro", 0.8), ("gato", 0.7), ("pájaro", 0.5)])65    memoria_robot.add_concept("colores", [("rojo", 0.9), ("verde", 0.6), ("azul", 0.7)])66 67    print("Memoria completa:")68    print(memoria_robot.memory)69 70    memoria_robot.add_string("animales", "pez", 0.6)71    memoria_robot.delete_string("colores", "verde")72    memoria_robot.delete_concepto("colores")73 74    print("\nMemoria después de modificaciones:")75    print(memoria_robot.memory)76 77    conceptos_acotados = memoria_robot.get_concepts_substrings(50)78    print("\nConceptos acotados a un tamaño máximo de memoria:")79    print(conceptos_acotados)80 81