Por jose siroshvicepresidente corporativo y CTO de AI, y Sumit Gulwani, gerente de investigación de socios de Microsoft.
Se estima que hay 250 millones de “trabajadores del conocimiento” en el mundo, un término que abarca a cualquiera que se dedique a ocupaciones profesionales, técnicas o gerenciales. Son personas que, en su mayoría, realizan trabajos no rutinarios que requieren el manejo de información y el ejercicio del intelecto y el juicio. Nosotros, los autores de esta publicación de blog, nos contamos entre ellos. También la mayoría de ustedes que leen esta publicación, independientemente de si es desarrollador, científico de datos, analista de negocios o gerente.
Aunque la mayoría del trabajo del conocimiento tiende a no ser rutinario, hay, sin embargo, muchas situaciones en las que los trabajadores del conocimiento nos encontramos realizando tareas tediosas y repetitivas como parte de nuestro trabajo diario, especialmente en torno a tareas que involucran la manipulación de datos.
En esta publicación de blog, echamos un vistazo a Microsoft PROSA, una tecnología de IA que puede producir automáticamente fragmentos de código de software en el momento justo y en las situaciones adecuadas para ayudar a los trabajadores del conocimiento a automatizar tareas rutinarias que implican la manipulación de datos. Por lo general, estas son tareas que la mayoría de los usuarios encontrarían extremadamente tediosas o demasiado lentas para siquiera contemplarlas.
Los detalles de Microsoft PROSE se pueden obtener de GitHub aquí: https://microsoft.github.io/prose/.
Ejemplos de tediosas tareas diarias del trabajador del conocimiento
Tomemos un par de ejemplos del mundo familiar de las hojas de cálculo para motivar este problema.
Figuras 1a (arriba), 1b (abajo): un par de ejemplos de tareas de “limpieza de datos”,
y cómo Excel “Flash Fill” le ahorra al usuario una tonelada de tediosa entrada manual de datos.
Mire la tarea que está realizando el usuario en la pantalla de Excel en la Figura 1a anterior. Si ve el texto que el usuario está ingresando en la celda B2, parece que ha modificado los datos en la columna A correspondiente, para ajustarse a un cierto formato deseado para los números de teléfono. También puede verlos comenzando a intentar una transformación idéntica manualmente en la siguiente celda a continuación, es decir, la celda B3.
De manera similar, en la celda E2 de la Figura 1b anterior, parece que el usuario está transformando los campos de nombre y apellido disponibles en las columnas C y D, cambiándolos a un formato con solo el apellido seguido de una coma y la primera inicial en mayúscula. Luego intentan realizar una transformación idéntica, manualmente, en la celda E3 que está justo debajo.
Excel reconoce que los datos ingresados por el usuario en las celdas B2 y B3 representan su “salida” deseada (es decir, para un determinado formato de números de teléfono) y que corresponde a los datos de “entrada” disponibles en la columna A. De manera similar, Excel reconoce que el Los datos ingresados por el usuario en las celdas E2 y E3 representan una salida transformada de los datos de entrada correspondientes presentes en las columnas C y D. Habiendo reconocido el patrón de transformación deseado, Excel puede mostrar el [likely] salida de usuario deseada, que se muestra en fuente gris en las imágenes de arriba, en todo las celdas de las columnas B y E, en estos dos ejemplos.
Los usuarios regulares de Excel entre ustedes reconocerán fácilmente esto como Relleno Flash de Excel – una función que lanzamos hace cinco años y que colectivamente les ha ahorrado a nuestros usuarios millones de tediosas horas de trabajo de recopilación de datos.
Introducción a Microsoft PROSA
PROSE es la abreviatura de Síntesis de Programación usando Ejemplos, y es la base tecnológica de Excel Flash Fill.
PROSE ha pasado por muchas mejoras importantes desde su lanzamiento inicial en Excel. Desde entonces, estas nuevas capacidades se han lanzado en muchos otros productos, incluidos Power BI, PowerShell y SQL Server Management Studio, y se están abriendo camino cada vez más en muchos escenarios que involucran big data e IA, incluso en Azure Log Analytics y Azure Machine Learning, donde PROSE- los scripts generados se pueden ejecutar en conjuntos de datos muy grandes, incluso a través del tiempo de ejecución de Azure Spark.
En esta publicación, describimos cómo funciona PROSE y algunos de los nuevos y emocionantes escenarios en los que se está aplicando. En muchos casos, PROSE ofrece ganancias de productividad que superan con creces las 100 veces.
¿Cómo funciona Microsoft PROSE?
PROSE funciona mediante la generación automática de programas de software basados en ejemplos de entrada y salida que se proporcionan en tiempo de ejecución, generalmente por un usuario que solo realiza sus tareas cotidianas.
Dados tales ejemplos de entrada y salida, PROSE genera un conjunto clasificado de programas de software que son consistentes con los ejemplos proporcionados. Luego aplica la salida de su “mejor” programa, con miras a ayudar al usuario a completar su tarea más amplia. Este flujo de trabajo se ilustra a continuación.
Figura 2: Cómo funciona Microsoft PROSE, bajo las sábanas.
Volviendo a los ejemplos de la Figura 1, lo que hace Excel es mostrar el resultado del mejor programa generado por PROSE utilizando la fuente de color gris. El usuario de Excel puede aceptar estas sugerencias simplemente presionando la tecla Intro. En este punto, el usuario podría proporcionar ejemplos adicionales, como una corrección que pueda aplicar a una de las salidas generadas automáticamente. En tal situación, PROSE intentará perfeccionar aún más su programa final, adaptándolo al ejemplo más reciente proporcionado. Una vez más, actualizará toda la columna de salida para reflejar el ‘mejor programa’ actualizado.
Un desafío técnico clave para PROSE es buscar programas en un lenguaje específico de dominio subyacente que sea coherente con los ejemplos proporcionados por el usuario. Nuestra metodología de búsqueda en tiempo real aprovecha las técnicas de razonamiento lógico y la heurística guiada por neuronas para resolver este problema.
Otro desafío es resolver la ambigüedad que puede estar presente en los ejemplos proporcionados por el usuario, ya que muchos programas pueden satisfacer unos pocos ejemplos. Nuestras técnicas de clasificación basadas en Machine Learning a menudo nos ayudan a seleccionar un programa previsto entre los muchos que satisfacen los ejemplos. También utilizamos modelos de interacción del usuario basados en el aprendizaje activo que se asemejan a una conversación interactiva con el usuario, para iterar y llegar al resultado deseado.
El SDK de Microsoft PROSE expone estos algoritmos genéricos de búsqueda y clasificación, lo que permite a los desarrolladores avanzados construir capacidades PROSE para nuevos dominios de tareas.
En el resto de esta publicación, analizamos algunos escenarios adicionales en los que los científicos de datos, los desarrolladores y los trabajadores del conocimiento pueden usar la tecnología PROSE para realizar sus tareas más rápido y de una manera mucho más agradable. También puedes mirar un vídeo resumen de estos escenarios.
Casos de uso de clientes y beneficios de Microsoft PROSE
En esta sección, destacamos el beneficio de usar PROSE en los siguientes escenarios:
- En la preparación de datos, para uso de los científicos de datos.
- En Python Code Accelerator, para uso de científicos de datos.
- Para generar fragmentos de código, para uso de los desarrolladores de software.
- En la transformación de código, para uso de los desarrolladores de software.
- Para la extracción de tablas de archivos PDF, para uso de los trabajadores del conocimiento.
Escenario 1. Preparación de datos
Aunque todavía puede ser el el trabajo mas sexy de los 21calle siglo, ser un científico de datos sin duda implica dedicar mucho tiempo a la organización y el análisis de datos mundanos. De hecho, se estima que los científicos de datos terminan dedicando hasta el 80 % de su tiempo a transformar datos en formatos más adecuados para el aprendizaje automático y la IA.
Aquí es donde PROSA viene al rescate. PROSE puede automatizar varias tareas de manipulación de datos, incluidas las transformaciones de cadenas (ya vistas en el ejemplo de Excel anterior), la división de columnas, la extracción de campos de archivos de registro y páginas web, y la normalización de datos semiestructurados en datos estructurados. Para tomar un ejemplo, considere el conjunto de datos en la Figura 3a a continuación, que informa mediciones de temperatura sin procesar.
Figura 3a: Mediciones de temperatura sin procesar
En lugar de utilizarlos tal cual, un científico de datos puede desear asignar estas temperaturas a diferentes contenedores como parte del ejercicio de caracterización. A diferencia del mundo de Excel, hacerlo manualmente en el mundo de los grandes datos es casi imposible, por lo tanto, su mejor opción es escribir un script personalizado complejo.
Ahora tienen una alternativa mucho más fácil y rápida, que es usar PROSE para derivar la nueva columna en función de un ejemplo proporcionado por el usuario, como se muestra en la Figura 3b a continuación.
Figura 3b: Transformación de mediciones de temperatura sin procesar en intervalos
bandas a través del poder de Microsoft PROSE más un par de ejemplos proporcionados por el usuario.
Como se ve en la figura, tan pronto como el usuario escribe el resultado deseado (o ejemplo) en la segunda columna de la fila 2, PROSE determina la intención del usuario, genera automáticamente el fragmento de código relevante y lo usa para completar correctamente todas las filas restantes. , con la salida del fragmento de código generado por PROSE que se muestra en una fuente de color gris. ¡Voila!
Escenario 2. Acelerador de código Python en portátiles
PROSA, en general, requiere la intención del usuario y datos de muestra para generar código. Los cuadernos, debido a su capacidad de ejecución parcial, son excelentes plataformas para la síntesis de programas interactivos utilizando PROSE. Por lo general, un usuario desarrolla una secuencia de comandos en Notebook en una celda a la vez, ejecuta y evalúa la celda y decide los próximos pasos a medida que avanza. Después de la ejecución de cada celda, se crean nuevos estados o se actualizan los estados antiguos. En ese momento, el usuario puede decidir escribir el código para la siguiente celda por su cuenta o invocar el Acelerador de código PROSE, que toma la intención del usuario y el estado actual del Notebook para sintetizar el código en nombre del usuario. El código es legible y modificable, como lo que el usuario podría haber escrito quizás después de pasar mucho más tiempo.
Figura 4a: Microsoft PROSE -powered Python Code Accelerator generando código para cargar un archivo CSV.
Observe en la figura anterior cómo PROSE analiza el contenido del archivo y genera código Python utilizando bibliotecas con las que el usuario ya puede estar familiarizado. Al usar PROSE, el usuario ha ahorrado varios minutos de frustración y esfuerzo que ahora puede dedicar a tareas más útiles.
Figura 4b: Acelerador de código de Python con tecnología PROSE de Microsoft que genera código para corregir los tipos de datos en un marco de datos de Python.
Los usuarios de Python a menudo luchan con el tipo de datos incorrecto en los marcos de datos. PROSE analiza de manera inteligente los datos y genera código para analizar los valores en los tipos de datos correctos y manejar casos de excepción. Dependiendo de la cantidad de columnas, puede ser un gran ahorro de tiempo para los científicos de datos.
Escenario 3. Generación de fragmentos de código para transformaciones de texto
Considere a un desarrollador que necesita escribir una función para transformar entradas de texto, pero, en lugar de escribir código, solo quiere mostrar la transformación deseada a través de un ejemplo. Digamos, por ejemplo, que necesitan transformar los nombres del formato [First name] [Last name] a [Last name], [First initial]. Por ejemplo, si “Joseph Sirosh” fue la entrada proporcionada, querrían “Sirosh, J” como la salida deseada.
Hicimos una implementación divertida de este escenario en asociación con Desbordamiento de pila donde creamos un chatbot para desarrolladores, uno que usa PROSE detrás de escena para generar muchos programas diferentes y descubre el mejor ajuste para un ejemplo dado proporcionado por el desarrollador. La Figura 5 a continuación muestra una sesión de chatbot de desbordamiento de pila que captura dicha interacción.
Figura 5: bot de desbordamiento de pila, con tecnología de Microsoft PROSE. El bot proporciona fragmentos de código en respuesta a los patrones de transformación de entrada/salida solicitados.
Este ejemplo mostró pseudocódigo, pero podríamos emitir Python o Java con la misma facilidad.
Escenario 4. Para transformación de código a gran escala
PROSE tiene una amplia aplicabilidad en escenarios que implican transformaciones de código repetitivas, incluido el reformateo y la refactorización de código. En ciertos escenarios de migración de aplicaciones, se estima que los desarrolladores podrían terminar gastando hasta el 40 % de su tiempo en refactorizar código antiguo.
Tome el ejemplo en la Figura 6a a continuación, donde una consulta SQL escrita por otro desarrollador usa una convención diferente para nombrar una columna que la que prefiere su organización (esto se llama alias). Por ejemplo, el alias de la columna para ExpectedShipDate se realiza mediante el operador “=” (igual a), pero su preferencia es utilizar “AS” para el mismo.
Figura 6a: código antiguo que debe reformatearse.
Afortunadamente, tiene la extensión PROSE en su IDE (Entorno de desarrollo integrado) y, al dar un solo ejemplo de la transformación de SQL que desea realizar, es decir, al corregir solo una línea de código con ExpectedShipDate como se muestra a continuación:
DATEADD(DAY, 15, OrderDate) AS ExpectedShipDate,
… el IDE llama a PROSE para que se encargue del resto, como se muestra en la Figura 6b.
Figura 6b: Código transformado. Microsoft PROSE ha interpretado correctamente la intención del desarrollador,
transformando correctamente todos los alias de columna para usar AS en lugar del operador “=” (igual a).
Escenario 5. Extracción de tablas de imágenes y archivos PDF
Como trabajadores del conocimiento, con frecuencia nos encontramos con datos tabulares que se representan como una imagen o aparecen en un archivo PDF, lo que los vuelve inútiles para cualquier análisis de datos nuevos.
Afortunadamente para nosotros, PROSE no se limita a texto y puede tomar una variedad de formatos de entrada, incluidas imágenes y archivos PDF.
Figura 7a: Tabla en un archivo PDF.
PROSE es compatible con OCR, lo que le permite procesar este tipo de escenarios sin problemas. Todo lo que el usuario debe hacer es realizar una operación de selección para indicar los límites de la tabla y, usando una técnica llamada síntesis predictiva, PROSE extrae la tabla en una hoja de cálculo “en vivo” correspondiente, como se muestra en la Figura 7b. Esta es una capacidad proporcionada por el conector PDF en Microsoft Power BI. Permite a los usuarios realizar cálculos y análisis que eran inaccesibles o que habrían requerido un tedioso reingreso manual de datos.
Figura 7b: Tabla de la Figura 7a extraída mediante el conector de PDF en Microsoft Power BI.
Conclusión
Microsoft PROSE, o Program Synthesis by Example, es un conjunto predefinido de tecnologías aplicables en una variedad de tareas, incluida la limpieza y el preprocesamiento de datos en formatos que se pueden analizar.
El SDK de Microsoft PROSE incluye:
- El ejemplo de Flash Fill descrito anteriormente, actualmente disponible en Excel y PowerShell.
- Extracción de datos de archivos de texto por ejemplos, disponible en PowerShell y Azure Log Analytics.
- Extracción de datos y transformación de JSON, por ejemplos.
- Tecnología predictiva de división de archivos, que divide un archivo de texto en columnas estructuradas sin ningún ejemplo.
Como humanos, prosperamos en tareas que ejercitan nuestra creatividad e intelecto y preferimos evitar tareas que son extremadamente tediosas y repetitivas. Al predecir con éxito la intención del usuario y generar automáticamente fragmentos de código para automatizar las tareas cotidianas que involucran datos, Microsoft PROSE ha ahorrado a nuestros usuarios millones de horas de trabajo manual.
Es posible que lo hayamos llamado PROSA, pero para los trabajadores del conocimiento que ahorran toneladas de tiempo y aumentan su productividad, ¡esta tecnología de IA es más como una dulce poesía!
Joseph
@josephsirosh