torahCodes/Torah_Codes
4
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 