Chat GPT-3: programamos una visualización de datos en R con la IA del momento
Fecha de la noticia: 17-02-2023
Hablar estos días de GPT-3 no es lo más original del mundo, lo sabemos. Toda la comunidad tecnológica está publicando ejemplos, realizando eventos y pronosticando el final del mundo del lenguaje y la generación de contenidos tal y cómo la conocemos actualmente. En este post, le pedimos a ChatGPT que nos eche una mano para programar un ejemplo de visualización de datos con R partiendo de un conjunto de datos abiertos disponible en datos.gob.es.
Introducción
Nuestro anterior post hablaba sobre Dall-e y la capacidad de GPT-3 para generar imágenes sintéticas partiendo de una descripción de lo que pretendemos generar en lenguaje natural. En este nuevo post, hemos realizado un ejercicio completamente práctico en el que le pedimos a la inteligencia artificial que nos ayude a realizar un sencillo programa en R que cargue un conjunto de datos abierto y genere algunas representaciones gráficas.
Hemos escogido un conjunto de datos abiertos de la plataforma datos.gob.es. En concreto, un conjunto de datos sencillos de uso de portales madrid.es. La descripción del repositorio explica que se incluye la información relativa a usuarios, sesiones y número de visitas a páginas de los siguientes portales del Ayuntamiento de Madrid: Portal Web municipal, Sede Electrónica, Portal de Transparencia, Portal de Datos Abiertos, Bibliotecas y Decide Madrid.
El fichero se puede descargar en formato .csv o .xslx y si lo pre-visualizamos tiene el siguiente aspecto:
Vale, comencemos a co-programar con ChatGPT!
Primero accedemos a la web y nos identificamos con nuestro usuario y contraseña. Es necesario estar registrado en el sitio web de openai.com para poder acceder a las capacidades de GPT-3, entre otras ChatGPT.
Iniciamos nuestra conversación:
Durante este ejercicio hemos intentado mantener una conversación de la misma forma que la tendríamos con un compañero de programación. Así que lo primero que hacemos es saludar y enunciar el problema que tenemos. Cuándo le pedimos a la IA que nos ayude a crear un pequeño programa en R que represente gráficamente unos datos, nos ofrece algunos ejemplos y ayuda con la explicación del programa:
Puesto que no tenemos datos, no podemos hacer nada práctico por el momento, así que le pedimos si nos ayuda a generar unos datos sintéticos.
Como decimos, nos comportamos con la IA como lo haríamos con una persona (tiene buena pinta).
Una vez que parece que la IA responde con facilidad a nuestras preguntas, vamos con el siguiente paso, vamos a darle nosotros los datos. Y aquí empieza la magia… Hemos abierto el fichero de datos que nos hemos bajado de datos.gob.es y hemos copiado y pegado una muestra.
Nota: ChatGPT no tiene conexión a Internet y por lo tanto no puede acceder a datos externos, así que lo único que podemos hacer es darle un ejemplo de los datos reales con los que queremos trabajar. |
Con los datos copiados y pegados tal cual se los hemos dado, nos escribe el código en R para cargarlos manualmente en un dataframe denominado “datos”. A continuación, nos proporciona el código de ggplot2 (la librería gráfica más conocida en R) para graficar los datos junto con una explicación del funcionamiento del código.
¡Genial! Es espectacular este resultado con un lenguaje totalmente natural y nada adaptado para hablar con una máquina. Veamos que pasa a continuación:
Pero resulta que al copiar y pegar el código en un entorno de RStudio comprobamos que este falla.
Así que le decimos lo que pasa y que nos ayude a solucionarlo.
Probamos de nuevo y ¡en este caso funciona!
Sin embargo, el resultado es un poco tosco. Así que se lo decimos.
A partir de aquí (y tras varios intentos de copiar y pegar más y más filas de datos) la IA cambia ligeramente el enfoque y me proporciona instrucciones y código para cargar mi propio fichero de datos desde mi ordenador en lugar de introducir manualmente los datos en el código.
Le hacemos caso y copiamos un par de años de datos en un fichero de texto en nuestro ordenador. Fijaos, en lo que ocurre a continuación:
Probamos de nuevo:
Como veis, funciona, pero el resultado no es del todo acertado.
Y veamos lo que ocurre.
¡Por fin parece que ya nos ha entendido! Es decir, tenemos un gráfico de barras con las visitas a la web por mes, para los años 2017 (azul) y 2018 (rojo). Sin embargo, no me convencen ni el formato del título del eje ni tampoco se distingue bien la numeración del mismo eje.
Veamos el resultado ahora.
Tiene mucha mejor pinta, ¿verdad? Pero ¿qué tal si todavía le damos una vuelta de tuerca más?
Sin embargo, se ha olvidado de decirnos que debemos instalar el paquete o librería plotly en R. Así que se lo recordamos.
Veamos el resultado:
Como podéis ver, ahora tenemos los controles del gráfico interactivo, de tal modo que podemos seleccionar un año concreto de la leyenda, hacer zoom, etc.
Conclusión
Puede que seas de esos escépticos, conservadores o prudentes que piensan que las capacidades demostradas por GPT-3 hasta el momento (ChatGPT, Dall-E2, etc) son todavía muy infantiles y poco prácticas en la vida real. Todas las consideraciones a este respecto son legítimas y, muchas, probablemente bien fundamentadas.
Sin embargo, algunos hemos pasado buena parte de la vida escribiendo programas, buscando documentación y ejemplos de código que pudiéramos adaptar o en los que inspirarnos; depurando errores, etc. Para todos nosotros (programadores, analistas, científicos, etc.) poder experimentar este nivel de interlocución con una inteligencia artificial en modo beta, puesta a disposición del público de forma gratuita y siendo capaz de demostrar esta capacidad de asistencia en la co-programación, es, sin duda, un salto cualitativo y cuantitativo en la disciplina de la programación.
No sabemos qué va a pasar, pero probablemente estemos a las puertas de un gran cambio de paradigma en la ciencia de la computación, hasta el punto que, quizás, haya cambiado para siempre la forma de programar y aún no nos hayamos dado cuenta.
Contenido elaborado por Alejandro Alija, experto en Transformación Digital.
Los contenidos y los puntos de vista reflejados en esta publicación son responsabilidad exclusiva de su autor.