Spaces:
Runtime error
Runtime error
| import re | |
| class MemoryRobotNLP: | |
| def __init__(self, max_size): | |
| self.max_size = max_size | |
| self.memory = {} | |
| def add_concept(self, concepto, string): | |
| if concepto not in self.memory: | |
| self.memory[concepto] = [] | |
| #evaluate priority calculation | |
| priority = 1 - (1/len(concepto)) | |
| self.memory[concepto].append({"Found_text":string, "Priority_Weight":priority}) | |
| def delete_concept(self, concepto): | |
| if concepto in self.memory: | |
| del self.memory[concepto] | |
| def add_string(self, concepto, string, prioridad): | |
| if concepto not in self.memory: | |
| self.memory[concepto] = [] | |
| self.memory[concepto].append((string, prioridad)) | |
| def delete_string(self, concepto, string): | |
| if concepto in self.memory: | |
| self.memory[concepto] = [(s, p) for s, p in self.memory[concepto] if s != string] | |
| def search_concept_pattern(self, patron): | |
| resultados = {} | |
| for concepto, strings in self.memory.items(): | |
| for string, _ in strings: | |
| if re.search(patron, string,re.IGNORECASE): | |
| if concepto not in resultados: | |
| resultados[concepto] = [] | |
| resultados[concepto].append(string) | |
| return resultados | |
| def get_concepts_substrings(self, espacio_disponible): | |
| memoria_ordenada = sorted(self.memory.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 = MemoryRobotNLP(max_size=100) | |
| memoria_robot.add_concept("animales", [("perro", 0.8), ("gato", 0.7), ("pájaro", 0.5)]) | |
| memoria_robot.add_concept("colores", [("rojo", 0.9), ("verde", 0.6), ("azul", 0.7)]) | |
| print("Memoria completa:") | |
| print(memoria_robot.memory) | |
| memoria_robot.add_string("animales", "pez", 0.6) | |
| memoria_robot.delete_string("colores", "verde") | |
| memoria_robot.delete_concepto("colores") | |
| print("\nMemoria después de modificaciones:") | |
| print(memoria_robot.memory) | |
| conceptos_acotados = memoria_robot.get_concepts_substrings(50) | |
| print("\nConceptos acotados a un tamaño máximo de memoria:") | |
| print(conceptos_acotados) | |