viernes, mayo 24, 2019

Algoritmos de Texto Predictivo para que crees tus novelas de Harry Potter, Drácula o Don Quijote de la Mancha

Botnik Studios, es una comunidad abierta de escritores, desarrolladores y artistas en general, los cuales han tenido una gran idea. Utilizando una Inteligencia Artificial (IA), han logrado crear unas pocas páginas con algo que parece una nueva aventura de Harry Potter llamada “Harry Potter and the Portrait of what looked like a Large Pile of Ash” (Harry Potter y el cuadro que parecía un montón de ceniza).

Figura 1: Algoritmos de Texto Predictivo para que crees tus novelas de
Harry Potter, Drácula o Don Quijote de la Mancha

Para conseguirlo, han utilizado un algoritmo de Texto Predictivo, y para conseguir esa similitud al estilo de J.K. Rowling, se le ha alimentado con siete libros originales de la autora dentro de la saga de Harry Potter, tal y como contaban nuestros compañeros de LUCA en este vídeo que hicieron para contarnos este hecho.


Figura 2: Noticia de la creación del capítulo de Harry Potter

Este algoritmo de Texto Predictivo no es nada excepcional, lo usamos muchas veces sin darnos cuenta. Por ejemplo, en los teclados de los teléfonos inteligentes, el cual aprende en base a las sugerencias que vamos aceptando. Pues justamente eso es lo que ha creado Botnik, dos teclados predictivos, uno para la parte de narración y otro para los diálogos.  Después, varios usuarios fueron tecleando frases mientras el teclado predictivo las iba corrigiendo siguiendo el patrón aprendido basado en el entrenamiento con los libros originales de Harry Potter.

El equipo de Botnik luego fue recopilando las mejores frases para más tarde unirlas y crear una estructura similar a la de un capítulo de la serie. La noticia ha creado bastante hype en Internet sobre todo por la forma de anunciarla, ya que más que decir que una IA ha creado un capítulo de Harry Potter, quizás se tendría que haber dicho que realmente ha sido fruto de una colaboración entre un ser humano y una Inteligencia Artificial.

Figura 3: Portada similar a un libro de la misma saga de este nuevo capítulo creado con texto predictivo

El texto completo final puedes leerlo aquí (además lo han recreado como si fuera un libro real, como puedes ver en la Figura 3) y como comprobarás, no es que sea especialmente genial. De hecho, no se parece demasiado a la escritura de J.K. Rowling pero sí ha sabido capturar en cierto modo el ritmo y el estilo de narración (por supuesto ha ayudado aquí la intervención humana).

También es bastante cómico y absurdo en algunas secciones, como por ejemplo una en la que Harry Potter literalmente se saca los ojos y los arroja a un bosque o la aparición de unos personajes aparentemente terribles llamados Death Eaters que se dedican a darse besos entre ellos y … ya está.

Figura 4: Ilustración de la escena que hemos descrito en el párrafo anterior

Un algoritmo predictivo no se utiliza únicamente en los teclados virtuales de teléfonos inteligentes o tabletas como antes hemos mencionado, de hecho los podemos encontrar prácticamente por todas partes. Como curiosidad, Amazon está trabajando también en ellos para anticipar si tiene que enviarte un producto antes incluso de comprarlo, según los gustos y compras realizadas anteriormente.

Alguno de los métodos predictivos más utilizados son los modelos lineales, árboles de decisión (Random Forest son muy comunes), Support Vector Machines (SVMs), Naive Bayes o los modelos de Markov (Markov model). En nuestro libro “Machine Learning aplicado a la Ciberseguridad: Técnicas y ejemplos en la detección de amenazas” puedes encontrar también información sobre alguno de estos algoritmos aplicados al mundo de ciberseguridad, como dice su titulo.

Figura 5: Libro “Machine Learning aplicado a la Ciberseguridad:
Técnicas y ejemplos en la detección de amenazas

Lo curioso es que esta noticia de la generación de un capítulo de Harry Potter no es algo nuevo. Ya en 2017, en la comunidad Botnik apareció parte de un guion de Expediente X creado de esta misma manera. Pero no queda aquí la cosa. También podemos encontrar letras de canciones de Bob Dylan, de los Strokes o incluso un álbum propio donde todas las letras de las canciones han sido generadas utilizando la misma técnica aplicada a la generación del capítulo de Harry Potter.

Figura 6: Fragmento del guión de Expediente X generado con texto predictivo

Es bastante divertido experimentar con esta técnica, sobre todo si mezclamos diferente estilos. En la página web oficial parece no estar disponible la aplicación pero sí el código fuente de otro teclado predictivo muy similar al utilizado para escribir la historia de Harry Potter. En este enlace puedes encontrar toda la información para instalarlo (Mac).

Por defecto, para alimentar el algoritmo predictivo, lleva una serie de textos almacenados como un fragmento de una historia de Batman o la letra de las canciones de Bowie. Si no quieres usar este teclado, en este otro enlace de GitHub puedes encontrar algunos programas para generar dichos textos predictivos. Este que usamos nosotros, escrito en nuestro querido Python.

Figura 7: pt-voicebox en GitHub

Pero nosotros queremos hacer algo distinto, así que desde la web del Proyecto Gutenberg, desde la cual puedes descargarte libros totalmente gratuitos y de dominio público, hicimos nuestra propia selección. Como somos seguidores de la obra de H.P. Lovecraft, este no podía faltar en la recopilación con la historia del Horror de Dunwich (The Dunwich Horror).

También elegimos El Mago de Oz (Wizard of Oz), La Guerra de los Mundos (War of the Worlds) y Drácula (hemos bajado también Romeo y Julieta también por si acaso para cambiar un poco de ambientación). Una vez instalado el programa, sólo hay que copiar los ficheros (en formato TXT) dentro de la carpeta /texts. En el siguiente vídeo se muestran algunas pruebas y sus resultados:


Figura 8: Demo de escritura de novelas con herramientas con texto predictivo

La primera prueba ha consistido en escribir alguna frase utilizando el contexto de El Mago de Oz. Estos son algunos de los resultados (no esperéis demasiado):
“Dorothy walked across the room and took back the emerald and said to the witch laughing …”
“… her slaves and Dorothy walked across the ditch again until they reached the emerald city and everyone seemed happy”
Para la siguiente prueba, esta vez mezclamos El Mago de Oz con El Horror de Dunwich:
“ … from the Necronomicon and the wild tales from Dunwich village it could hear strange people who lived in Kansas where Dorothy was afraid to give me courage to keep my promises and they walked through the glass to … “
“… as he saw into the shadowland of sentinel hillluther the scarecrow was thinking that the horror represented descended by dunwich route or any other city…”
Como en una buena historia de ciencia ficción nunca deben de faltar los marcianos, vamos añadir La Guerra de los Mundos a El Mago de Oz y también, por qué no, El Horror de Dunwich. Esto ha sido parte del resultado obtenido:
“… with the permission of the martians i will go to oz today however if …”
“ … in the middle of the emerald city is possible to tortured their brains but it certainly is not another dimension like something esoterically, and Dorothy entered another unknown dangers for her own country and especially in the Emerald City …”
Por cierto, dejamos como tarea adaptarlo al castellano, para conseguirlo será necesario jugar un poco con el código y modificar la gestión de los UnicodeEncodeError. Nosotros ya estamos trabajando en el libro “Don Lazarillo de la Mancha” ;) 

Figura 9: Don Lazarillo de la Mancha

Dejando de lado la curiosidad de este algoritmo predictivo, no tenemos que olvidar que ya ha habido casos más complejos incluso, donde esta vez el algoritmo no es predictivo como tal, sino que directamente genera todo el texto partiendo unas semillas iniciales.

De hecho, la primera novela escrita por una Inteligencia Artificial se llama “1 The Road” y es sencillamente inquietante. En este caso se utilizó como semilla inicial con toda la información posible recolectada durante un viaje largo de carretera. Es decir, activaron un micrófono, imágenes, ubicaciones, diálogos, etcétera, y todo eso lo utilizaron para entrenar una red neuronal tipo LSTM.

Figura 10: El texto de la novela “1 The Road” se imprimió al completo en rollos de recibos

En cuestión de poco tiempo será prácticamente imposible averiguar si un texto es o no obra directa de un autor concreto o si es real o no lo es. Y lo mismo pasará con las noticias, un tweet, un artículo en un blog, etcétera. Pero, además, esto no se queda en el ámbito del texto.

Mis compañeros Pablo González y Enrique Blanco nos mostraron una PoC en la RootedCon 2019 donde era posible suplantar la cara y aspecto de otra persona en tiempo real (aquí puedes encontrar un completo artículo sobre este tema). Será bastante complicado detectar en un futuro cercano si algún tipo de media (vídeo, texto, imágenes, etcetera) son reales o falsas.


Figura 11: Creando a Chema Alonso con una IA

Así que estamos ante el nacimiento de un nuevo campo en el mundo de la ciberseguridad, orientado a crear técnicas y herramientas capaces de detectar estos fakes. De hecho, en la misma charla, ellos mismos presentaron un pequeño algoritmo que era capaz de detectar un vídeo falso basándose en el número y la frecuencia de parpadeo del sujeto, simplemente espectacular. A nosotros se nos ocurre un nombre para esa nueva disciplina encargada de encontrar fakes: Voight-Kampff ;) 

Autor: Fran Ramírez, (@cyberhadesblog) es investigador de seguridad y miembro del equipo de Ideas Locas en CDO en Telefónica, co-autor del libro "Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)", del libro "Docker: SecDevOps", Machine Learning aplicado a la Ciberseguridad” además del blog CyberHades.

No hay comentarios:

Entrada destacada

Tu Latch "Hack Your Innovation Contest": Haz un PoC & Hack por 1.000 €

El pasado Telefónica Innovation Day 2024 lanzamos oficialmente el " Tu Latch Hack Your Innovation Contest " en el que repartimos ...

Entradas populares