Generación de texto con LSTM sobre el Quijote

Procesamiento de Lenguaje Natural · Semana 7

10 de agosto de 2026 · NRC-8774 · 2 entregables

El docente compartió 2 cuadernos y informes esta semana. No los subo: son suyos.

De qué iba

El proyecto pedía una LSTM de 128 unidades internas con una Dense softmax para predecir texto. Como el enunciado hablaba de caracteres mientras el cuaderno de la clase trabajaba por palabras, hice los dos modelos con la misma arquitectura y los comparé. Cambié el corpus de 60 filas del ejemplo por el Quijote descargado de Project Gutenberg y escribí un callback propio que, al terminar cada época, imprimía las métricas y generaba texto con cuatro temperaturas, así que el informe muestra cómo va mejorando la escritura época a época. El resultado más útil no fue el texto sino las curvas: el modelo de palabras siguió bajando la pérdida de entrenamiento mientras la de validación dejaba de mejorar en la época 9.

  • Sustituí el mini-corpus de clase por el Quijote de Project Gutenberg: 403.247 caracteres, 73.974 palabras y 12.479 formas distintas
  • Modelo por palabras: 30 épocas, 1.673.584 parámetros, pérdida de 6.4233 a 4.1717 y mínimo de val_loss de 5.5484 en la época 9
  • Modelo por caracteres: 28 épocas, 89.194 parámetros, vocabulario de 42 símbolos, pérdida de 2.5678 a 1.2034 y 0.4957 de accuracy en validación
  • Encontré que el mini-corpus de la clase tenía 60 filas pero solo 30 frases: la segunda mitad repetía la primera con la misma coletilla, y eso explicaba las cadenas repetitivas de la demostración

Lo que costó. El primer armado del dataset por palabras se me cayó por memoria: generar prefijos crecientes y codificar la etiqueta con one-hot no se sostiene cuando el vocabulario tiene miles de clases y hay decenas de miles de ejemplos. Lo resolví con etiquetas enteras y sparse_categorical_crossentropy, que da el mismo resultado matemático consumiendo órdenes de magnitud menos.

Qué pedían

El enunciado y la rúbrica, tal cual los publicaron.

MA Evaluación 7.pdfdocumento · 81,9 KB
MA Semana 7_ NRC-8774-Procesamiento Natural Lenguaje.pdfdocumento · 263,5 KB

Qué entregué

Lo que salió de esa semana.

Oviedo_Alexander_Proyecto_Integrador_S7.docxinforme · 309,9 KB · 4 855 palabras
Oviedo_Alexander_Proyecto_Integrador_S7.ipynbcuaderno · 433,7 KB · 35 celdas

Lo que usé por el camino

Notas sueltas, datos y código de apoyo.

Qué son las Redes Neuronales Recurrentes.pdfdocumento · 139,9 KB
clima.csvconjunto de datos · 1,2 KB
quijote.csvconjunto de datos · 188 B
quijote_mini_corpus.csvconjunto de datos · 48,4 KB
quijote_mini_corpus_.csvconjunto de datos · 9,1 KB
quijote_mini_corpus_utf8sig.csvconjunto de datos · 56,0 KB
Procesamiento Natural del Lenguaje_S7_Proyecto integrador_03032023.pdfdocumento · 386,4 KB
fig_curvas_caracter.pngimagen · 93,4 KB
fig_curvas_palabra.pngimagen · 86,3 KB
fig_temperaturas.pngimagen · 104,2 KB
generar_notebook_s7.pyscript · 44,0 KB
generar_reporte_s7.pyscript · 44,2 KB
resultados_s7.jsonconjunto de datos · 68,5 KB

Seguir leyendo

Esa misma semana, en las otras materias: