#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 04 — El olvido y el eco ======================= Episodio «¿Cómo se le da memoria a una IA?» — Punto 7 del guion, «No hay botón de olvidar» (acto IV — Lo que falta) y cierre. La idea del episodio -------------------- Lo que el asistente **no puede olvidar**. Hoy no hay un botón de «olvida esto»: no existe forma de decirle «aquello del dentista, bórralo». La memoria solo crece. El único botón para empezar de nuevo es brutal: borra **todo**. Entre «lo recuerdo absolutamente todo» y «no recuerdo nada de ti» no hay término medio. Y hay un hallazgo precioso en el tramo final del episodio: cuando el sistema borra, borra el texto… pero a veces **el eco se queda**. Una huella que el buscador todavía puede «oler» pero que ya no tiene texto detrás. Como esa palabra en la punta de la lengua: sabes que estaba ahí, no la alcanzas. Qué hace este ejemplo --------------------- Monta una memoria de juguete con unos recuerdos y una lista de «huellas» (lo que el buscador tiene anotado para poder encontrarlos) y prueba tres cosas: 1. Intentar olvidar **un** recuerdo → no existe ese botón. Se niega. 2. Un borrado chapucero que se lleva el texto pero deja la huella → aparece **el eco**: el buscador lo huele, pero no hay nada que leer. 3. El botón brutal de «empezar de nuevo» → borra todo de verdad. No necesita nada instalado (solo Python 3). Uso: python3 04-el-olvido-y-el-eco.py """ # ───────────────────────────────────────────────────────────────────────────── # La memoria de juguete. Cada recuerdo tiene su texto… y el buscador guarda # aparte una "huella" para poder encontrarlo por significado (como en el # ejemplo 02). Texto y huella viven juntos pero no son lo mismo: ahí está la # trampa del eco. # ───────────────────────────────────────────────────────────────────────────── class Memoria: def __init__(self): self.recuerdos = { 1: { "texto": "Corrí 9,00 km con 119 m de desnivel y ritmo medio de 6:44 min/km.", "huella": "deporte running entrenamiento kilómetros", }, 2: { "texto": "Cené fuera.", "huella": "social cena fuera", }, 3: { "texto": "Corregí el nombre en la ficha de Valet.", "huella": "sistema asistente ficha nombre", }, } def buscar(self, consulta): """Buscador de andar por casa: mira las huellas, no el texto.""" resultados = [] for rid, r in self.recuerdos.items(): if consulta.lower() in r["huella"].lower(): resultados.append((rid, r)) return resultados def titulo(texto): print("\n" + "=" * 68) print(f" {texto}") print("=" * 68) def main(): memoria = Memoria() titulo("1. Intentar olvidar UN recuerdo concreto") print("\n Le pedimos: «olvida lo de la salida de ayer, bórralo».\n") print(" …") print(" No hay un botón de «olvida esto». No existe.") print(" La memoria solo crece: lo único que caduca solo son las estadísticas.") print(" Y el único botón para empezar de nuevo borra TODO, no un recuerdo.") titulo("2. El eco: borrar el texto y dejar la huella") print("\n Imaginemos un borrado chapucero: se lleva el texto del recuerdo,") print(" pero la huella del buscador se queda. Mirad lo que pasa.\n") # Borrado chapucero: quitamos el texto pero dejamos la huella. del memoria.recuerdos[1]["texto"] print(" Recuerdo 1 después del borrado chapucero:") print(f" texto : {memoria.recuerdos[1].get('texto', '(ya no hay texto)')}") print(f" huella : {memoria.recuerdos[1]['huella']}") print("\n Ahora el buscador intenta encontrarlo por «running»:\n") for rid, r in memoria.buscar("running"): print( f" · recuerdo {rid}: huele a «{r['huella']}»… " f"pero texto = {r.get('texto', '(nada que leer)')}" ) print("\n Ahí está el eco: una huella que el buscador puede oler, pero que") print(" ya no tiene texto detrás. Un recuerdo al que has dejado de poder") print(" llegar, pero que sabes que estaba ahí.") print(" Como la palabra en la punta de la lengua.") titulo("3. El botón brutal: empezar de nuevo") print("\n No hay término medio. El único «empezar de nuevo» borra la memoria") print(" entera. Como si acabaras de instalar el asistente y nunca le") print(" hubieras contado nada.\n") memoria.recuerdos.clear() print(f" Recuerdos que quedan: {len(memoria.recuerdos)}.") print(" Ni el eco: nada. Eso sí es olvidar… demasiado.") titulo("Para llevarse") print("\n Un asistente que lo recuerda todo pero no sabe olvidar nada no es") print(" un buen asistente: es alguien que nunca te perdona nada.") print(" Y si esto algún día sale de tu máquina, el primer cambio no sería") print(" una capa nueva: sería un botón de OLVIDAR DE VERDAD.\n") if __name__ == "__main__": main()