2 puntos por GN⁺ 2025-12-15 | 1 comentarios | Compartir por WhatsApp
  • Inspirado en el programa Mark V. Shaney de los años 80, se creó Mark V. Shaney Junior, un generador de texto de Markov sencillo implementado con unas 30 líneas de código en Python
  • Este modelo predice probabilísticamente la siguiente palabra con base en tres palabras (trigram) y usa como datos de entrenamiento más de 200 publicaciones de blog (unas 200 mil palabras)
  • Las oraciones generadas se producen como frases sin sentido (gibberish) que mezclan palabras sobre temas del blog como Lisp, Emacs, matemáticas y programación
  • Si se aumenta el orden (order) del modelo, las oraciones se vuelven más consistentes, pero a partir de 5 empieza a citar el texto original tal cual y desaparece la creatividad
  • Incluso en la era de los modelos de lenguaje de gran escala (LLM), la claridad estructural de estos modelos de Markov simples se presenta como un buen punto de partida para entender los principios de la generación de lenguaje

Resumen del programa Mark V. Shaney Junior

  • Mark V. Shaney Junior es un generador de texto que imita al usuario ficticio de Usenet de los años 80 Mark V. Shaney
    • El original era un programa que generaba publicaciones automáticamente usando un modelo de Markov
    • Esta implementación es una versión minimalista que simplifica esa idea y fue publicada en GitHub
  • Todo el código está compuesto por unas 30 líneas de Python y prioriza la simplicidad por encima de la eficiencia
    • Está en un nivel que incluso alguien que ve por primera vez un modelo de Markov puede entender en menos de 20 minutos

Programación experimental como pasatiempo

  • El autor disfruta programar para explorar ideas, no para resolver un problema específico
    • Ha experimentado varias veces con cadenas de Markov de distintos espacios de estado
    • Luego organiza ese código experimental y lo comparte en GitHub o Codeberg
  • Mark V. Shaney Junior también es uno de esos experimentos, y en este caso fue refinado y publicado

Generación de texto usando datos del blog

  • Después de probar el modelo entrenándolo con "A Christmas Carol" de Charles Dickens,
    se usaron como datos de entrada 24 años de publicaciones del blog (más de 200 textos, unas 200 mil palabras)
    • Se excluyeron los comentarios (unas 40 mil palabras)
  • Las oraciones generadas aparecen como frases ilógicas donde se mezclan comandos de programación, términos matemáticos y órdenes de editor
    • Ejemplo: oraciones que combinan al azar comandos de Emacs, código Lisp y términos matemáticos
  • Algunas frases toman palabras de publicaciones concretas del blog para formar combinaciones sin sentido
    • Ejemplo: “Lisp source file” y “self-esteem” extraídas de publicaciones distintas y unidas en una sola frase

Propiedad de Markov y estructura del algoritmo

  • La configuración básica usa trigram (3 palabras) y emplea una estructura de mapa que guarda las dos palabras anteriores como clave (key) y la tercera como valor (value)
  • Proceso de generación de texto
    • Se elige un par de palabras al azar → se selecciona con probabilidad uniforme una de las posibles palabras siguientes
    • Se forma un nuevo par con la palabra recién elegida y la anterior, y se repite
    • El proceso termina cuando ya no hay palabra siguiente o se alcanza el límite de 100 palabras
  • Si el mismo trigram aparece varias veces, esa palabra siguiente se guarda repetida en la lista correspondiente, por lo que se realiza una selección probabilística proporcional a la frecuencia de aparición
  • Este proceso consiste en transiciones probabilísticas que dependen solo del estado actual,
    y en forma matemática se expresa como P(Xₙ₊₁ | Xₙ, Xₙ₋₁, …, X₁) = P(Xₙ₊₁ | Xₙ)
    • Esta característica de falta de memoria (memoryless) es el núcleo de la propiedad de Markov

Experimentos adicionales y ajuste del orden del modelo

  • El orden (order) predeterminado es 2 y puede cambiarse con un argumento de línea de comandos
    • Si se sube el orden a 3 o 4, las oraciones se vuelven más consistentes y naturales
    • Ejemplo: se generan frases relativamente lógicas que mezclan comandos de IRC y conceptos matemáticos
  • Sin embargo, si el orden sube a 5, aparece una tendencia a copiar textualmente el original, por lo que desaparece el sinsentido creativo (gibberish)
  • También es posible generar texto dando un prompt inicial
    • Por ejemplo, si se ingresa una frase que empieza con “Finally we”, se genera una oración larga que mezcla palabras como Emacs, MATLAB y GNU bash

Importancia de un modelo simple

  • En 2025, los modelos de lenguaje de gran escala (LLM) dominan el panorama,
    pero los modelos de Markov no pueden capturar la estructura global ni las dependencias de largo plazo
  • Aun así, gracias a la claridad de su diseño e implementación,
    siguen teniendo valor como modelo introductorio para aprender los principios de la generación de lenguaje
  • El autor lo describe como el “Hello, world” de los modelos de lenguaje

1 comentarios

 
GN⁺ 2025-12-15
Comentarios en Hacker News
  • Un modelo de Markov es la versión estadística de una máquina de estados que genera probabilísticamente el siguiente token solo con el estado actual
    Para que haya una discusión con sentido, hay que definir con claridad la relación entre estado y token
    Por ejemplo, si el estado es una función de las últimas k observaciones, se le llama una cadena de Markov de orden k
    Un RNN puede verse como una extensión que define el estado como una función de estados previos y de los tokens recientes
    Las probabilidades de transición de estado pueden ser deterministas o probabilísticas, y la longitud del contexto también puede definirse de forma variable
    Pero no todos los modelos de Markov son aprendibles

    • Me pregunto qué significa exactamente “que sea aprendible”
  • Recuerdo haber comprado un programa así en 1992 en Egghead Software por 3 dólares
    Le metí textos como mis diarios de 5 años y me reí viendo los resultados
    Como ejemplo antiguo, se puede ver Babble 1.0.20 y este hilo del foro relacionado: Software Spotlight: Babble

  • Después de leer el post, yo también probé con modelos de Markov
    Empecé a nivel de caracteres, pero incluso al pasar a un modelo de orden 2 no hubo mucha diferencia
    Con orden 3 (trigramas), el resultado sí se volvió un poco más natural
    Luego apliqué un modelo de Markov de orden 1 a texto tokenizado con BPE (Byte Pair Encoding), y el resultado fue un poco más consistente
    Pero al subir a orden 2 empezó a copiar el texto original tal cual — porque BPE eliminó los tokens repetidos y las transiciones se volvieron deterministas
    Al limitar la cantidad de tokens (por ejemplo, de 894 a 800), volvió a ser no determinista y el texto se sintió un poco más natural
    Si subes demasiado el orden (por ejemplo, orden 5), el texto queda seco y como una simple enumeración de hechos
    Al final, los modelos de Markov son simples, pero bastante divertidos para experimentar

    • Yo también hice algo parecido, y el resultado era mitad disparates graciosos y mitad copia pegada del original
      Quitar las cadenas que solo tienen un token siguiente probablemente ayudaría, pero existe el riesgo de borrar también la estructura gramatical
      Sigo buscando una mejor forma de evitar las cadenas únicas largas
    • Para evitar resultados “secos”, el truco es ajustar de forma flexible el límite de 5 palabras
      Por ejemplo, si solo hay una ruta posible, bajarlo a 4 palabras
    • Al ver estos resultados, da una sensación inquietante, como si algo estuviera tratando de comunicarse
      O quizá solo estemos solos y sea la mente intentando encontrar orden en el caos
  • Hace tiempo hice un experimento parecido
    Metí en un modelo de Markov unas 500 mil palabras de textos de fantasía y ciencia ficción escritos a lo largo de 20 años, y lo ajustaba con un control deslizante de 2 a 5 gramos
    Era como una especie de pozo de sueños al que volvía cada vez que necesitaba inspiración
    Se sentía como una continuación del hábito que tenía de niño de abrir una página cualquiera del diccionario para encontrar ideas para escribir

    • Me pregunto si alguna vez participaste en NaNoGenMo
      Experimentar con un corpus así podría dar lugar a un proyecto bastante divertido
    • Yo también entrené un bot de Twitter en 2015 con 20 mil de mis tuits usando un modelo de Markov
      Incluso hay un video de la charla
    • Yo también tengo 30 años de borradores inconclusos de novelas, y creo que sería interesante correrlos de esta forma
    • Recuerdo que Terry Davis también intentó algo parecido
    • Me pregunto cómo se haría algo así con un LLM
      ¿Se puede entrenar con todos mis textos personales para crear un modelo propio?
      Quisiera saber qué modelos y herramientas usar, y si podría escribir con mi estilo sin prompt de sistema
      Más allá de eso, también me pregunto si podría responder de forma natural llamadas telefónicas o mensajes de Discord
  • Existe un fanfic de Harry Potter hecho con una cadena de Markov
    Se llama Harry Potter and the Portrait of What Looked Like a Large Pile of Ash
    Se puede leer en este enlace de botnik.org

    • No entiendo por qué alguien querría leer algo así
      Desde la primera frase se siente como texto vacío
      Creo que tiene menos emoción o significado que incluso el peor libro escrito por un humano
  • Intentos como “I Fed 24 Years of My Blog Posts to a Markov Model” son algo que varios LLM ya han venido repitiendo

  • Un autor como Barbara Cartwright, que escribió más de 700 novelas románticas muy parecidas, parece alguien que podría reproducirse con un modelo de Markov

    • Pero no sé si de verdad se podría distinguir
      A veces hasta mi esposa vuelve a comprar y leer una novela que ya había leído
  • Recuerdo haber visto bots de cadenas de Markov en IRC a mediados de los 2000
    Hasta que apareció GPT, no hubo nada mejor que eso

    • Probablemente te refieres a MegaHAL o, algo después, a Cobe
    • Yo también hice uno por mi cuenta en bitlbee en los 2000; de verdad fueron tiempos muy divertidos
  • En realidad, esto se parece más a un modelo de trigramas que a un modelo de Markov
    Si se extendiera a 4-gramas o más, saldrían oraciones mucho más naturales
    Hace tiempo hubo investigaciones sobre un modelo gigantesco de n-gramas llamado “infini-gram”, y escuché que en ciertos dominios mostró un rendimiento cercano al de los LLM

  • Gracias por compartir 24 años de experiencias y pensamientos
    En una época como esta, tan llena de consumo y estímulos, este tipo de intercambio sincero se siente especial