23/04/2019

Crean un bot capaz de escribir en el estilo de Luis Alberto Spinetta

Todo el algoritmo tiene música hoy.

Costhanzo
Luis Alberto Spinetta

¿Y qué onda si tu computadora puede componer la próxima “Muchacha (ojos de papel)”? Un bot fue forzado a leer todas las letras de Luis Alberto Spinetta y luego a escribir una canción.

Así es. Alex Ingberg, ingeniero en informática de la UBA, actualmente radicado en Tel Aviv (Israel), experimentó con diversas herramientas de Inteligencia Artificial hasta dar con un bot que puede escribir canciones en el estilo del exlíder de Almendra.

“Para crear la base de datos, me enfoqué en todas las letras escritas por el Flaco desde el primer disco de Almendra hasta el póstumo titulado Los amigo, explica Ingberg, especializado en la Ciencia de Datos, en su sitio web, donde pormenoriza cada detalle técnico. “Solo tomé como referencias los temas compuestos, en parte al menos, por Luis y no los que notan exclusivamente como autores a Del Guercio, Molinari, Lebón, etcétera”.

El algoritmo spinetteano tuvo dos versiones distintas. La primera, creada a partir de un proceso denominado Cadena de Markov, no arrojó resultados demasiado originales, ya que el mecanismo funciona en base a probabilidades. “En lo que concierne a este proyecto, uno puede entender un texto como un proceso de Markov, donde cada palabra tiene una probabilidad de aparecer según cual fue la palabra anterior”, dice Ingberg. Para que la cohesión de los versos fuese mayor y las predicciones más precisas, utilizó bigramas, una suerte de upgrade de la Cadena de Markov en las que “la siguiente palabra en una oración se predice con las dos palabras anteriores en vez de la única palabra anterior”.

Aquí, algunos versos:

Así, mientras la luna se oculta / No quiere decir que no hablaron jamas / Pues habla en mi, late en mi alma no está, no, no 
Al fin / Yo no tengo un solo rastro tuyo en mi vida”

“Sí, no sigas fingiendo, nena no no!…”

“Siéntate a ver / Si acaso gano algo en la espalda de un expreso que quedó en el paraíso… jugando y perdiendo”

“Madre-selva / Estoy entusiasmado con tu cielo me envuelve / Yo se que sigue viva / Y tengo sed en la eternidad…”

“Márcame el mandarín / Se descentró / Sus manos ya no toca un libro de sal, 
 valle de eterna sal…”

Como bien señala Ingberg, el resultado final parece más “un copy-paste de su obra, un collage entre distintas letras para crear una canción nueva”. De hecho, advierte que: “Varias frases son idénticas a las escritas por Luis Alberto Spinetta”.

El bot definitivo

La segunda versión, en cambio, implicó mayor desarrollo y arrojó resultados más llamativos. En este casó, Ingberg trabajó con lo que se conoce como Redes Neuronales Recurrentes (RNN, según sus iniciales en inglés), un tipo de Inteligencia Artificial que “reconoce patrones en secuencias de datos como texto, genomas, escritura a mano, lenguaje oral” y, además añade la dimensión temporal. Es decir, puede recordar.

“Así que las redes recurrentes tienen dos fuentes de input: el presente y el reciente pasado, quienes se combinan para determinar como responder a nueva data . Justo como un cerebro humano”, explica Ingberg. El modelo, entonces, funcionó calculando todos los caracteres únicos y sus correspondientes frecuencias, y los tensores se crearon reemplazando cada caracter por su frecuencia indicada. El largo del output (la canción), por su parte, fue definido por un parámetro fijo.

Aquí, parte del proceso según lo consignó el propio Ingberg, con observaciones al final de cada etapa:

Iteración 0

Moe7jn0a”qdQü9(SlB¿5j
yó(eéWkL üEvYLb6LHr2PIaDzI.jzMéTc
LlRg( wSóFó3yOÚÚa4,me
Zy
9″t¡oU:yL7¿mv
pSbc)ñBct¿é AuWQy9Oxd2áÁU.B-p1wdñ
ÚñL OjxdnsGÉÁgggJM,xr¿ézn3¿xwZvA5zNGgüLñfPÁYzÁ¿mq?SwkB32lY9íoxNúGa”ñ1H’EuY
“ÚlDñIúau¿9iyDJó¿RR9WBSpfy5zÚHm¡m)l
MkÁ’D
.návRÁBdcÉoBYáz
iw;ufé?éy9B0RVHcr¡ILRyJRR0Cxy-á¿Nt?úcb4Ú .wM7O
Úl-4Mkr01NWaWx’E:BÚf60rf-É(nCLáPISéHdqrlóc7BpY7I¡C1Q(óZg3R
t CzkÚéYéH.;99óÉlílrHS9Jít7óiOIíwrz4′
ZqhOíUGOGkvl7VkáséATn9jyoS”7pW5T?kzüuñ)
Ww5,iVy(WS¡.2mh5ÚD1É5(
OuWg¿Z0op0jÉ-Á TiCP4a’Cq’!VTgtH

Observación: Después de un cold-start, el modelo se inicializa con basura y caracteres random.

Iteración 1000

owl
Por mirades
Bute pasos deo puerto
Con ustando que se ha lo ta debo
Ah
Harces las gris…
Prillos color huzar terdimenso
A la luz ásculles tal hosta la imarifte como el munto
Suberdo más, llevanta
Entre la trajas
Se si cosas,
y quedo,
lo robo penes tutión
Y buentas nena
Min luz le murá
Reurane lo son lo que lleva
Tu caaras refríos del
El amor las mañancia
Conmeteril en la soja distancicuda
Para está
Ya no se llegar puerte qué dar…
Ah lo hay así que si es ti…

Observación: El modelo aprendió, en unas pocas iteraciones, cuales son los caracteres indicados para crear una canción de Spinetta. También que forma tiene: los tamaños de los versos y las reglas de puntuación básicas como mayúsculas al arrancar las palabras, algunas comas y puntos suspensivos.

Iteración 2000

un cuerpo que mi…
Una mañana del destita
Blán de estante en el enerocienza
Hacia que ya no están
Dolo de mi hermosa…
Y la luz de moncer
sin mas de reloj
De gasa una biensanza, se se abrirás,
quiero un flote más son estas cosas,
de la vida en arropsego
Y cuando sinmonillas y su lejá cercas y mimos ardienda juiva en los magros
Quien solo estás antillas, a to…
Nostro ve que te encuentro ya
Día que no encuentrticias asi se siempre, campia
A igros y el reloj, un rílen las refas con m

Observación: Algunas palabras son ya verdaderas y se empieza a ver la relación morfológica entre las palabras: adjetivos y artículos como modificadores directos de sustantivos. Circunstanciales, objetos y predicativos después de verbos.

Iteración 3000

sus ojos ser tiempo
De mí…
esta esperanza, ni el dibulle
Y si no hay aquí soco dijes guirte
si hadas voy a ajos
Y my quedama
Los que me caso
Todas las murallas super la fibra
Como vida sus callé drájare
Cuando quiso te espero se quedas vida
Esta vez, que se abrigo todas cosas más de aquí
Y algo nada pruedas
Es espejos no hay me has niño
Tu cara sus ojos verdesidad…
Vis y hasta fretarnado
Dónde tu esperar a desverló con
Sólo supo como eterno están
En el duñol” prueba de

Observación: Los errores en las predicciones de las palabras empiezan a ser menos frecuentes: hay menos errores de vocabulario.

Iteración 30000

mundo
Duende un círculo
Por eso tu freno
Supersamente un bañan
O en la equiera están
Mi alma es infuervo
Sobre la armonía de tinio y ya no está en aire
Nunca me explato
Siento que se a la nada es la mañana
Eterno se contralfin quedó como un sombrir
No recurinate no hay una sepan.
Mil canso de blanco inconserlo ¿Desafando la carazón me va
Y la distancia no me llegará
Entonces es como vengó
Vuelve del cuento feroz
Su amor se agitan y seguir
Ya no te alejes de tantas cosas que se

Observación: Alcanza un entendimiento morfológico de los versos excelente: si bien las letras aún no tienen mucho sentido y las palabras no son correctas, tiene forma de poesía o de letra de canción.

Iteración 93000

luz es tomar una daga del amanecer,
no quiero verte bien tu mano y su ropa se dedo mis pies,
por tu livió, ¡¡sí !!!
Esto es suspensar a su circa de la mañana sin contar?
Qué vivir de este mundo
y como pasa…
Cruzando por amor… !
Por tus ojos,
que me perdí
Sin tu amor…
Que dulce bien un jardín del likiti
Esta es mi feroz canción sin saber porque vi
Si mi tierra mamá
Mirá el eco de esta luz
Alguien sobre presa
Amanecen a mi amigo chaudado
Veo en ella llegar aquí…
Di

Observación: La cantidad de errores en las palabras decreció notablemente. Definitivamente parece que la escribió un humano. Tal vez ese humano esté por arriba del nivel recomendado de ansiolíticos, pero humano al fin.

Iteración 184000

mundo
Y que placer
tu ave que ya no es así, en tí
si hay para vivir de felicidad.
Todo el mundo del trueno
Y corto lejos del aire
El cristales muertas de aquellos muros
Ni luna…
se trimbo el barco rimentame;
El úlsitó
Tu corazón por el fuego y alli más frío,
que fui
Tan sólo estando así
Te dan a madrepen
Perdida su cama igual
Y si las nubes recrearan…
Y como fue su vano en el viento mortal
Las palabras del diluvio
Y yo te acercas impacio para el sol
Muchacio insompa…

Observación: Nuestra red aprendió a hacer canciones como Spinetta.

OK: está bien, lo acepto. Todavía tiene algunos errores de vocabulario y las letras tal vez no tengan mucho sentido. Aunque las letras generadas por una inteligencia artificial tengan estos pequeños defectos, podemos definitivamente observar que el modelo aprendió correctamente a copiar el estilo del dataset provisto.

Si consideramos el hecho de que la red aprendió todo desde cero, y que en un principio no tenía ningún entendimiento de lo que es una letra o una palabra (ni hablar de las reglas gramaticales del español), podemos estar de acuerdo que los resultados son sorprendentes. Fuimos capaces de detectar patrones lógicos en un dataset y reproducirlos: y en ningún momento se le dio a la red como input el idioma, las reglas de éste, o si lo que se estaba procesando eran imágenes de radiografías o las obras de Shakespeare.