Bullshit Generator en castellano
Tras el éxito del Harry Potter Generator, hoy presento una nueva aplicación del generador que intentará ayudar a quienes necesiten ideas frescas para vender su negocio puntocom o pensar un título con gancho para su presentación multimedia. Tras un comentario de pseudópodo en el que descubrí los «bullshit generators», comprendí que el concepto de bullshit empresarial no estaba del todo extendido en castellano. Así que ahí queda mi granito de arena:
Fundamentos del Bullshit Generator
Desde siempre me ha gustado todo lo relacionado con la lingüística y el procesamiento lenguaje natural y este blog suele tratar a menudo temas que de una forma u otra tocan estos conceptos: traducciones, significados ocultos, erratas, etc. En el último post se me ocurrió parodiar la estructura repetitiva de las novelas de Harry Potter, inspirado por el ejemplo del generador de novelas de Dan Brown (que sigue siendo el mejor y más divertido generador aleatorio en castellano, en mi opinión). Sin embargo, me pareció que, aunque la parte creativa era difícil (elegir la estructura, los textos, darle humor, relacionarlo con las novelas), la parte técnica se convertiría en un infierno si quería que fuera flexible, fácilmente ampliable y que respetase las reglas del castellano.
Mi objetivo era poder seleccionar nombres de personajes y objetos, fijando al azar su género y número al mismo tiempo, y que estas selecciones determinaran el género y número de todos los elementos de la frase que hicieran referencia a ellos. También necesitaba que el añadir nuevas palabras y frases a la gramática fuese sencillo y separado del código. Para todo esto decidí crear mi propio generador de producciones. El generador aún está en fase de desarrollo y aunque tiene mucho por solucionar, ya permite crear rápidamente gramáticas bastante complejas (su nombre técnico sería «redes de transición recursiva») en un fichero aparte y generar frases recorriendo las producciones de forma recursiva.
Este sería un ejemplo teórico de este tipo de gramáticas (la sintaxis no es la que utilizo sino una más simplificada para el ejemplo):
Nombre, Artículo, Verbo, Adjetivo
Producciones de la gramática. Cada una de ellas puede tomar valores de forma aleatoria. Estos valores son cadenas normales a las que se añade código para añadir las terminaciones de género y número.
Por ejemplo: (no se muestra el código que ajusta género y número)
Frase = Artículo Nombre «que» («no») Verbo «a» [Frase | Artículo Nombre (Adjetivo)]
Artículo = «el» | «la» | «los» | «las»
Nombre = «hombre» | «mujer» | «caballo» | «yegua»
Verbo = «amaba» | «susurraba» | «admiraba»
Adjetivo = «rápido»
Reglas implícitas
– Primera letra de frase en mayúscula
– «a el» -> «al»
– «de el» -> «del»
– No repetición de nombres ni verbos
Ejemplos de frases que puede generar esta gramática
– «Los hombres que no amaban a las mujeres»
– «El hombre que susurraba a los caballos rápidos»
– «La mujer que susurraba a los hombres que no amaban a las yeguas»
– «Los caballos que no admiraban al hombre que amaba a la yegua que no susurraba a las mujeres rápidas»
La gramática consiste en una serie de identificadores, que son los nodos o «entidades» de la red, por cada uno de los cuales se definen los valores que pueden tomar aleatoriamente, que serán listas de palabras y/o otros nodos. No he intentado crear un motor de generación universal sino uno orientado a textos en castellano con atajos para añadir a las entidades de la frase los atributos de género y número, definir si se deben instanciar cada vez o mantener el primer valor que tomen, y utilidades que he ido añadiendo a medida que las necesitaba, como la posibilidad de agrupar entidades (para tratarlas como grupo y en plural), definir producciones opcionales que sólo se pueden elegir si se cumple una condición predefinida, o asignar valores a variables para usarlos posteriormente como parte de una condición o como atributo de género o número de otra entidad. El Harry Potter Generator es el mejor ejemplo de aplicación de todas estas funciones. En suma, un pequeño Frankenstein demasiado descosido todavía como para mostrar su código a la luz.
Muy bueno, Ni!. Enlazado quedas…