1 of 43

CuarteNet: Un modelo de lenguaje cuartetero

Theo Alkibiades Collias y Santiago Marro - FaMAF, 2017

2 of 43

Objetivo

  • Desarrollar un modelo de lenguaje que genere letras de canciones de cuarteto

3 of 43

Objetivo

  • Desarrollar un modelo de lenguaje que genere letras de canciones de cuarteto
  • Que tenga en cuenta los factores que influyen en la calidad de las letras:
  • Coherencia semántica
  • Largo de los versos generados
  • Rima

4 of 43

Objetivo

  • Desarrollar un modelo de lenguaje que genere letras de canciones de cuarteto
  • Que tenga en cuenta los factores que influyen en la calidad de las letras:
  • Coherencia semántica
  • Largo de los versos generados
  • Rima
  • Profundizar los conceptos vistos en la materia

5 of 43

Objetivo

  • Desarrollar un modelo de lenguaje que genere letras de canciones de cuarteto
  • Que tenga en cuenta los factores que influyen en la calidad de las letras:
  • Coherencia semántica
  • Largo de los versos generados
  • Rima
  • Profundizar los conceptos vistos en la materia
  • Aplicarlos a una temática divertida, observable y autóctona como lo es el cuarteto cordobés

6 of 43

Problemas esperados

7 of 43

Corpus

Composición:

  • Canciones de cuarteto
  • Canciones de artistas latinos

8 of 43

Corpus

Composición:

  • Canciones de cuarteto
  • Canciones de artistas latinos

Problemas:

  • Obtención de las letras por medios convencionales
  • Errores (horrores!) de ortografía
  • Versos mal separados
  • Estructura de la canción en la letra.

Ejemplos: (bis), (x2), (coro), Estribillo

9 of 43

Ejemplo

10 of 43

Conceptuales

  1. Sistema de clasificación -> Sistema de generación

11 of 43

Conceptuales

  • Sistema de clasificación -> Sistema de generación
  • Modelo Markoviano: parámetros

12 of 43

Conceptuales

  • Sistema de clasificación -> Sistema de generación
  • Modelo Markoviano: parámetros
  • Modelo neuronal: hiper parámetros y capas

13 of 43

Conceptuales

  • Sistema de clasificación -> Sistema de generación
  • Modelo Markoviano: parámetros
  • Modelo neuronal: hiper parámetros y capas
  • Evaluar rima, coherencia semántica y estructura

14 of 43

Conocimiento Ideal

Lograr un modelo de lenguaje tal que genere letras de canciones coherentes, es decir, que sigan una métrica, se mantenga la rima, la estructura y no cambien de tema. Para ello necesitaremos clasificadores compatibles completamente con el idioma español.

15 of 43

Conocimiento Ideal

Lograr un modelo de lenguaje tal que genere letras de canciones coherentes, es decir, que sigan una métrica, se mantenga la rima, la estructura y no cambien de tema. Para ello necesitaremos clasificadores compatibles completamente con el idioma español.

Optimización de los modelos de generación

16 of 43

Conocimiento Ideal

Lograr un modelo de lenguaje tal que genere letras de canciones coherentes, es decir, que sigan una métrica, se mantenga la rima, la estructura y no cambien de tema. Para ello necesitaremos clasificadores compatibles completamente con el idioma español.

Optimización de los modelos de generación

Herramientas para desarrollar los modelos de clasificación compatibles con la lengua castellana

17 of 43

Conocimiento Ideal

Lograr un modelo de lenguaje tal que genere letras de canciones coherentes, es decir, que sigan una métrica, se mantenga la rima, la estructura y no cambien de tema. Para ello necesitaremos clasificadores compatibles completamente con el idioma español.

Optimización de los modelos de generación

Herramientas para desarrollar los modelos de clasificación compatibles con la lengua castellana

Integración de lo anterior en el pipeline

18 of 43

Aproximación

Generación de versos:

  • Markoviano
  • Neuronal

Filtros/Clasificadores:

Rima:

  • Diferentes alternativas exploradas

Largo de verso:

  • Heurística

19 of 43

Lo que hicimos hasta ahora

20 of 43

Dataset: Proceso

Primera instancia: Obtención

  • Script propio usando API de Genius
  • Copy-paste de CMTV y Musica.com
  • Tamaño: 386 canciones, 94344 palabras

Segunda instancia: Formato

  • Una canción por línea
  • Estrofas separadas por “|”

Tercera instancia: Corrección

  • Errores de ortografía
  • Estrofas mal separadas
  • Detalles de la estructura de la canción

21 of 43

Dataset: Artistas

Cuarteto

  • La Mona Jiménez
  • Rodrigo
  • Ulises Bueno
  • Trulalá
  • Chébere
  • Sebastián
  • Gary
  • Damián Córdoba
  • Banda XXI
  • Banda Express

Artistas latinos

  • Franco de Vita
  • Juan Luis Guerra
  • Camilo Sesto

22 of 43

Generador neuronal

Estructura

23 of 43

Generador Markoviano

  • Basado en un generador de Rap.

24 of 43

Generador Markoviano

  • Basado en un generador de Rap.
  • Entrena un modelo oculto de Markov con el dataset descrito.

25 of 43

Rima

¿Cómo lograr que el modelo genere canciones con rima?

Diferentes aproximaciones:

26 of 43

Rima

¿Cómo lograr que el modelo genere canciones con rima?

Diferentes aproximaciones:

  • Entrenar un clasificador de rima, donde extraemos solamente características de la misma.

27 of 43

Rima

¿Cómo lograr que el modelo genere canciones con rima?

Diferentes aproximaciones:

  • Entrenar un clasificador de rima, donde extraemos solamente características de la misma.
  • A partir de los versos generados, arreglar la rima.

28 of 43

Rima

RhymerFinder

  • Predice la última palabra de cada verso tal que la misma rime.

29 of 43

Rima

RhymerFinder

  • Predice la última palabra de cada verso tal que la misma rime.
  • Input: Verso sin la última palabra + palabra con la cual se quiere que rime.

30 of 43

Rima

RhymerFinder

  • Predice la última palabra de cada verso tal que la misma rime.
  • Input: Verso sin la última palabra + palabra con la cual se quiere que rime.
  • Se encarga de separar en fonemas para analizar la rima.

31 of 43

Rima

RhymerFinder

  • Predice la última palabra de cada verso tal que la misma rime.
  • Input: Verso sin la última palabra + palabra con la cual se quiere que rime.
  • Se encarga de separar en fonemas para analizar la rima.
  • A partir de esto busca palabras que tengan la misma terminación fonéticamente y finalmente, utilizando word2vec, elige una palabra entre las encontradas que tenga sentido con el verso dado.

http://johnchuckcase.com/rhymerfinder/

32 of 43

Rima

RhymerFinder

Problemas encontrados:

  • Soporte solo para inglés.

33 of 43

Rima

RhymerFinder

Problemas encontrados:

  • Soporte solo para inglés.
  • Utiliza el CMU Pronouncing Dictionary, diccionario el cual provee los fonemas para las palabras en inglés.

34 of 43

Rima

RhymerFinder

Problemas encontrados:

  • Soporte solo para inglés.
  • Utiliza el CMU Pronouncing Dictionary, diccionario el cual provee los fonemas para las palabras en inglés.
  • La rima en el español sigue reglas distintas al inglés.

35 of 43

Rima

Spanish Poetry Generation From Picture to Poem: Spanish Sonnet Generation from Image Inputs using RNNs

  • Se utiliza para generar sonetos en español a partir de imágenes.

36 of 43

Rima

Spanish Poetry Generation From Picture to Poem: Spanish Sonnet Generation from Image Inputs using RNNs

  • Se utiliza para generar sonetos en español a partir de imágenes.
  • Generan palabras relacionadas, las cuales son divididas en diferentes clases de rima.

https://github.com/stevenly/poembot

37 of 43

Nuestra idea

  • Combinar las ideas de los proyectos anteriores.

38 of 43

Nuestra idea

  • Combinar las ideas de los proyectos anteriores.
  • Generar versos, donde a partir del segundo, generamos la última palabra del mismo, que rime con el primero y a su vez tenga coherencia semántica con el verso.

39 of 43

Nuestra idea

  • Combinar las ideas de los proyectos anteriores.
  • Generar versos, donde a partir del segundo, generamos la última palabra del mismo, que rime con el primero y a su vez tenga coherencia semántica con el verso.
  • Utilizando el clasificador de rimas dado en poembot.

40 of 43

Nuestra idea

  • Combinar las ideas de los proyectos anteriores.
  • Generar versos, donde a partir del segundo, generamos la última palabra del mismo, que rime con el primero y a su vez tenga coherencia semántica con el verso.
  • Utilizando el clasificador de rimas dado en poembot.
  • Y algún word embedding (word2vec) entrenado con el corpus de cuarteto.

41 of 43

Ejemplos producidos:Markoviano

hoy seis las toditas a vas me que quiero

te fernet un es si épale

traicionera maliciosa vida la en vio morgue

la a va y desierto al inmune

corazon tu en ahora y envició se

ahora justa es cómo atrevida atrevida

mía la hasta ser a hables le él

hoy ti en encontrarte de llevado ha y alma

el comí me que aventurera fábula

de luz hay no vanos son quien

morena esa apareció noche la pasó

qué por vida la

como pregunten me mal

hice mambo dale

lante pa’ lante pa’ voy hoy seis las

dejen suyas las

yo hoy sueños tuve pero sí el y

soñaremos pasto y metirosa engañadora

entero cuerpo tu

bendita quieren mujeres las pierde te ahora

y york nueva de

terminemos ya son días luis pobre diablo pobre un

mirando amigo su es puro

corazon el en sol el tenerle de

noche la dice que creo y pecho

frío pecho mi con todo que

dios ay recuerdo soy caravanero soy desafinada guitarra

una en turno de contigo sólo

tan canto fuerza la a gracias muchisimas

quemando está diego olé (improv.) ¡eh! tierra

42 of 43

Ejemplos producidos: Neuronal

el reloj eran casi las diez

ella escuchó sus pasos

subiendo la escalera

y se vistió de orgullo

para no llorar

él se quedó en la vida

nunca he estado

a veces se me pierde y vuelve al rato

entre, calido y frio

este amor es tuyo y mio..

este amor..

y a veces me confunde el cielo

si por usted me muero

me muero cuando ríe corazón

no olvide que la quiero

no quiera que la olvide

si cada vez que puedo

trabajo sería internado venir cosa,

me invento

soy lo que ha quedado de mi voz

por el asco de aguantar

tanta procesión por dentro

soy así soy lo que soy

y destino todo

43 of 43

¿Preguntas?

Gracias por venir