En el vertiginoso mundo de la Inteligencia Artificial (IA) Generativa, encontramos diversos conceptos que se han convertido en fundamentales para comprender y aprovechar el potencial de esta tecnología. Hoy nos centramos en cuatro: los Modelos de Lenguaje Pequeños (SLM, por sus siglas en inglés), los Modelos de Lenguaje Grandes (LLM), la Generación Aumentada por Recuperación (RAG) y el Fine-tuning. En este artículo, exploraremos cada uno de estos términos, sus interrelaciones y cómo están moldeando el futuro de la IA generativa.
Empecemos por el principio. Definiciones.
Antes de sumergirnos en los detalles, es importante entender brevemente qué representa cada uno de estos términos. Los dos primeros conceptos (SLM y LLM) que abordamos, son lo que se conoce cómo modelos del lenguaje. Un modelo de lenguaje es un sistema de inteligencia artificial que entiende y genera texto en lenguaje humano, como lo hacen los chatbots o los asistentes virtuales. Los siguientes dos conceptos (Fine Tuning y RAG), podríamos definirlos cómo técnicas de optimización de estos modelos del lenguaje previos. En definitiva, estás técnicas, con sus respectivos enfoques, que veremos más adelante, mejoran las respuestas y el contenido que devuelven al que pregunta. Vamos a por los detalles:
- SLM (Small Language Models): Modelos de lenguaje más compactos y especializados, diseñados para tareas específicas o dominios concretos.
- LLM (Large Language Models): Modelos de lenguaje de gran escala, entrenados con vastas cantidades de datos y capaces de realizar una amplia gama de tareas lingüísticas.
- RAG (Retrieval-Augmented Generation): Una técnica que combina la recuperación de información relevante con la generación de texto para producir respuestas más precisas y contextualizadas.
- Fine-tuning: El proceso de ajustar un modelo pre-entrenado para una tarea o dominio específico, mejorando su rendimiento en aplicaciones concretas.
Ahora, profundicemos en cada concepto y exploremos cómo se interrelacionan en el ecosistema de la IA Generativa.
Figura 1. Pilares de la IA genrativa. Elaboración propia.
SLM: La potencia en la especialización
Mayor eficiencia para tareas concretas
Los Modelos de Lenguaje Pequeños (SLM) son modelos de IA diseñados para ser más ligeros y eficientes que sus contrapartes más grandes. Aunque tienen menos parámetros, están optimizados para tareas específicas o dominios concretos.
Características clave de los SLM:
- Eficiencia computacional: requieren menos recursos para su entrenamiento y ejecución.
- Especialización: se centran en tareas o dominios específicos, logrando un alto rendimiento en áreas concretas.
- Rápida implementación: ideal para dispositivos con recursos limitados o aplicaciones que requieren respuestas en tiempo real.
- Menor huella de carbono: al ser más pequeños, su entrenamiento y uso consumen menos energía.
Aplicaciones de los SLM:
- Asistentes virtuales para tareas específicas (por ejemplo, reserva de citas).
- Sistemas de recomendación personalizados.
- Análisis de sentimientos en redes sociales.
- Traducción automática para pares de idiomas específicos.
LLM: El poder de la generalización
La revolución de los Modelos de Lenguaje Grandes
Los LLM han transformado el panorama de la IA Generativa, ofreciendo capacidades sorprendentes en una amplia gama de tareas lingüísticas.
Características clave de los LLM:
- Vastas cantidades de datos de entrenamiento: se entrenan con enormes corpus de texto, abarcando diversos temas y estilos.
- Arquitecturas complejas: utilizan arquitecturas avanzadas, como Transformers, con miles de millones de parámetros.
- Capacidad de generalización: pueden abordar una amplia variedad de tareas sin necesidad de entrenamiento específico para cada una.
- Comprensión contextual: son capaces de entender y generar texto considerando contextos complejos.
Aplicaciones de los LLM:
- Generación de texto creativo (historias, poesía, guiones).
- Respuesta a preguntas complejas y razonamientos.
- Análisis y resumen de documentos extensos.
- Traducción multilingüe avanzada.
RAG: Potenciando la precisión y relevancia
La sinergia entre recuperación y generación
Como ya exploramos en nuestro artículo anterior, RAG combina la potencia de los modelos de recuperación de información con la capacidad generativa de los LLM. Sus aspectos fundamentales son:
Características clave de RAG:
- Mayor precisión en las respuestas.
- Capacidad de proporcionar información actualizada.
- Reducción de "alucinaciones" o información incorrecta.
- Adaptabilidad a dominios específicos sin necesidad de reentrenar completamente el modelo.
Aplicaciones de RAG:
- Sistemas de atención al cliente avanzados.
- Asistentes de investigación académica.
- Herramientas de fact-checking para periodismo.
- Sistemas de diagnóstico médico asistido por IA.
Fine-tuning: Adaptación y especialización
Perfeccionando modelos para tareas específicas
El fine-tuning es el proceso de ajustar un modelo pre-entrenado (generalmente un LLM) para mejorar su rendimiento en una tarea o dominio específico. Sus elementos principales son los siguientes:
Características clave del fine-tuning:
- Mejora significativa del rendimiento en tareas específicas.
- Adaptación a dominios especializados o nichos.
- Reducción del tiempo y recursos necesarios en comparación con el entrenamiento desde cero.
- Posibilidad de incorporar conocimientos específicos de la organización o industria.
Aplicaciones del fine-tuning:
- Modelos de lenguaje específicos para industrias (legal, médica, financiera).
- Asistentes virtuales personalizados para empresas.
- Sistemas de generación de contenido adaptados a estilos o marcas particulares.
- Herramientas de análisis de datos especializadas.
Pongamos algunos ejemplos
A muchos de los que estéis familiarizados con las últimas noticias en IA generativa os sonarán estos ejemplos que citamos a continuación.
SLM: La potencia en la especialización
Ejemplo: BERT para análisis de sentimientos
BERT (Bidirectional Encoder Representations from Transformers) es un ejemplo de SLM cuando se utiliza para tareas específicas. Aunque BERT en sí es un modelo de lenguaje grande, versiones más pequeñas y especializadas de BERT se han desarrollado para análisis de sentimientos en redes sociales.
Por ejemplo, DistilBERT, una versión reducida de BERT, se ha utilizado para crear modelos de análisis de sentimientos en X (Twitter). Estos modelos pueden clasificar rápidamente tweets como positivos, negativos o neutros, siendo mucho más eficientes en términos de recursos computacionales que modelos más grandes.
LLM: El poder de la generalización
Ejemplo: GPT-3 de OpenAI
GPT-3 (Generative Pre-trained Transformer 3) es uno de los LLM más conocidos y utilizados. Con 175 mil millones de parámetros, GPT-3 es capaz de realizar una amplia variedad de tareas de procesamiento de lenguaje natural sin necesidad de un entrenamiento específico para cada tarea.
Una aplicación práctica y conocida de GPT-3 es ChatGPT, el chatbot conversacional de OpenAI. ChatGPT puede mantener conversaciones sobre una gran variedad de temas, responder preguntas, ayudar con tareas de escritura y programación, e incluso generar contenido creativo, todo ello utilizando el mismo modelo base.
Ya a finales de 2020 introducimos en este espacio el primer post sobre GPT-3 como gran modelo del lenguaje. Para los más nostálgicos, podéis consultar el post original aquí.
RAG: Potenciando la precisión y relevancia
Ejemplo: El asistente virtual de Anthropic, Claude
Claude, el asistente virtual desarrollado por Anthropic, es un ejemplo de aplicación que utiliza técnicas RAG. Aunque los detalles exactos de su implementación no son públicos, Claude es conocido por su capacidad para proporcionar respuestas precisas y actualizadas, incluso sobre eventos recientes.
De hecho, la mayoría de asistentes conversacionales basados en IA generativa incorporan técnicas RAG para mejorar la precisión y el contexto de sus respuestas. Así, ChatGPT, la citada Claude, MS Bing y otras similares usan RAG.
Fine-tuning: Adaptación y especialización
Ejemplo: GPT-3 fine-tuned para GitHub Copilot
GitHub Copilot, el asistente de programación de GitHub y OpenAI, es un excelente ejemplo de fine-tuning aplicado a un LLM. Copilot está basado en un modelo GPT (posiblemente una variante de GPT-3) que ha sido específicamente ajustado (fine-tuned) para tareas de programación.
El modelo base se entrenó adicionalmente con una gran cantidad de código fuente de repositorios públicos de GitHub, lo que le permite generar sugerencias de código relevantes y sintácticamente correctas en una variedad de lenguajes de programación. Este es un claro ejemplo de cómo el fine-tuning puede adaptar un modelo de propósito general a una tarea altamente especializada.
Otro ejemplo: en el blog de datos.gob.es, también escribimos un post sobre aplicaciones que utilizaban GPT-3 como LLM base para construir productos concretos ajustados específicamente.
Interrelaciones y sinergias
Estos cuatro conceptos no operan de forma aislada, sino que se entrelazan y complementan en el ecosistema de la IA Generativa:
- SLM y LLM: Mientras que los LLM ofrecen versatilidad y capacidad de generalización, los SLM proporcionan eficiencia y especialización. La elección entre uno u otro dependerá de las necesidades específicas del proyecto y los recursos disponibles.
- RAG y LLM: RAG potencia las capacidades de los LLM al proporcionarles acceso a información actualizada y relevante. Esto mejora la precisión y utilidad de las respuestas generadas.
- Fine-tuning y LLM: El fine-tuning permite adaptar LLM genéricos a tareas o dominios específicos, combinando la potencia de los modelos grandes con la especialización necesaria para ciertas aplicaciones.
- RAG y Fine-tuning: Estas técnicas pueden combinarse para crear sistemas altamente especializados y precisos. Por ejemplo, un LLM con fine-tuning para un dominio específico puede utilizarse como componente generativo en un sistema RAG.
- SLM y Fine-tuning: El fine-tuning también puede aplicarse a SLM para mejorar aún más su rendimiento en tareas específicas, creando modelos altamente eficientes y especializados.
Conclusiones y futuro de la IA
La combinación de estos cuatro pilares está abriendo nuevas posibilidades en el campo de la IA Generativa:
- Sistemas híbridos: combinación de SLM y LLM para diferentes aspectos de una misma aplicación, optimizando rendimiento y eficiencia.
- RAG avanzado: implementación de sistemas RAG más sofisticados que utilicen múltiples fuentes de información y técnicas de recuperación más avanzadas.
- Fine-tuning continuo: desarrollo de técnicas para el ajuste continuo de modelos en tiempo real, adaptándose a nuevos datos y necesidades.
- Personalización a escala: creación de modelos altamente personalizados para individuos o pequeños grupos, combinando fine-tuning y RAG.
- IA Generativa ética y responsable: implementación de estas técnicas con un enfoque en la transparencia, la verificabilidad y la reducción de sesgos.
SLM, LLM, RAG y Fine-tuning representan los pilares fundamentales sobre los que se está construyendo el futuro de la IA Generativa. Cada uno de estos conceptos aporta fortalezas únicas:
- Los SLM ofrecen eficiencia y especialización.
- Los LLM proporcionan versatilidad y capacidad de generalización.
- RAG mejora la precisión y relevancia de las respuestas.
- El Fine-tuning permite la adaptación y personalización de modelos.
La verdadera magia ocurre cuando estos elementos se combinan de formas innovadoras, creando sistemas de IA Generativa más potentes, precisos y adaptables que nunca. A medida que estas tecnologías continúen evolucionando, podemos esperar ver aplicaciones cada vez más sofisticadas y útiles en una amplia gama de campos, desde la atención médica hasta la creación de contenido creativo.
El desafío para los desarrolladores e investigadores será encontrar el equilibrio óptimo entre estos elementos, considerando factores como la eficiencia computacional, la precisión, la adaptabilidad y la ética. El futuro de la IA Generativa promete ser fascinante, y estos cuatro conceptos estarán sin duda en el centro de su desarrollo y aplicación en los años venideros.
Contenido elaborado por Alejandro Alija,experto en Transformación Digital e Innovación. Los contenidos y los puntos de vista reflejados en esta publicación son responsabilidad exclusiva de su autor.
La era de la digitalización en la que nos encontramos ha llenado nuestra vida diaria de productos de datos o productos basados en datos. En este post te descubrimos en qué consisten y te mostramos una de las tecnologías de datos clave para diseñar y construir este tipo de productos: GraphQL.
Introducción
Empecemos por el principio, ¿qué es un producto de datos? Un producto de datos es un contenedor digital (una pieza de software) que incluye, datos, metadatos y ciertas lógicas funcionales (qué y cómo manejo los datos). El objetivo de este tipo de productos es facilitar la interacción de los usuarios con un conjunto de datos. Algunos ejemplos son:
- Cuadro de mando de ventas: Los negocios online cuentan con herramientas para conocer la evolución de sus ventas, con gráficos que muestran las tendencias y rankings, para ayudar en la toma de decisiones
- Apps de recomendaciones: Los servicios de TV en streaming disponen de funcionalidades que muestran recomendaciones de contenidos basándose en los gustos históricos del usuario.
- Apps de movilidad. Las aplicaciones móviles de los nuevos servicios de movilidad (como Cabify, Uber, Bolt, etc.) combinan datos y metadatos de usuarios y conductores con algoritmos predictivos, como el cálculo dinámico del precio del viaje o la asignación óptima de conductor, con el fin de ofrecer una experiencia única al usuario.
- Apps de salud: Estas aplicaciones hacen un uso masivo de los datos capturados por gadgets tecnológicos (como el propio dispositivo, los relojes inteligentes, etc.) que se pueden integrar con otros datos externos como registros clínicos y pruebas diagnósticas.
- Monitoreo ambiental: Existen apps que capturan y combinan datos de servicios de predicción meteorológica, sistemas de calidad del aire, información de tráfico en tiempo real, etc. para emitir recomendaciones personalizadas a los usuarios (por ejemplo, la mejor hora para programar una sesión de entrenamiento, disfrutar al aire libre o viajar en coche).
Como vemos, los productos de datos nos acompañan en el día a día, sin que muchos usuarios se den siquiera cuenta. Pero, ¿cómo se captura esa gran cantidad de información heterogénea de diferentes sistemas tecnológicos y se combina para proporcionar interfaces y vías de interacción con el usuario final? Aquí es donde GraphQL se posiciona como una tecnología clave para acelerar la creación de productos de datos, al mismo tiempo que mejora considerablemente su flexibilidad y la capacidad de adaptación a las nuevas funcionalidades deseadas por los usuarios.
¿Qué es GraphQL?
GraphQL vio la luz en Facebook en 2012 y se liberó como Open Source en 2015. Puede definirse como un lenguaje y un intérprete de ese lenguaje, de forma que un desarrollador de productos de datos puede inventarse una forma de describir su producto en base a un modelo (una estructura de datos) que hace uso de los datos disponibles mediante APIs.
Antes de la aparición de GraphQL, teníamos (y tenemos) la tecnología REST, que utiliza el protocolo HTTPs para hacer preguntas y obtener respuestas en base a los datos. En 2021, introducimos un post donde presentamos la tecnológica y realizamos un pequeño ejemplo demostrativo sobre su funcionamiento. En él, explicamos REST API como la tecnología estándar que soporta el acceso a datos por programas informáticos. También destacamos cómo REST es una tecnología fundamentalmente diseñada para integrar servicios (como un servicio de autenticación o login).
De forma sencilla, podemos utilizar la siguiente analogía. Es como si REST fuera el mecanismo que nos da acceso a un diccionario completo. Es decir, si necesitamos buscar cualquier palabra, tenemos un método de acceso al diccionario que es la búsqueda alfabética. Es un mecanismo general para encontrar cualquier palabra disponible en el diccionario. Sin embargo, GraphQL nos permite, previamente, crear un modelo de diccionario para nuestro caso de uso (lo que conocemos como “modelo de datos”). Así por ejemplo, si nuestra aplicación final es un recetario, lo que hacemos es seleccionar un subconjunto de palabras del diccionario que estén relacionadas con recetas de cocina.
Para utilizar GraphQL los datos tienen que estar siempre disponibles mediante una API. GraphQL facilita una descripción completa y comprensible de los datos de dicha API, ofreciendo a los clientes (humanos o aplicación) la posibilidad de solicitar exactamente lo que necesitan. Tal y como citan en este post, GraphQL es como un API al que le añadimos una sentencia “Dónde” al estilo SQL.
A continuación, analizamos en detalle las virtudes de GraphQL cuando el foco se pone en el desarrollo de productos de datos.
Beneficios de usar GraphQL en productos de datos:
- Con GraphQL se optimiza de forma considerable la cantidad de datos y consultas sobre las APIs. Las APIs de acceso a determinados datos no están pensadas para un producto (o un caso de uso) específico sino como una especificación general de acceso (véase el ejemplo anterior del diccionario). Esto hace que, en muchas ocasiones, para acceder a un subconjunto de datos disponibles en un API, tengamos que realizar varias consultas encadenadas, descartando la mayor parte de información por el camino. GraphQL optimiza este proceso, puesto que define un modelo de consumo predefinido (aunque adaptable a futuro) por encima de una API técnica. Reducir la cantidad de datos solicitados impacta positivamente en la racionalización de recursos informáticos, como el ancho de banda o el almacenamiento transitorio (cachés), y mejora la velocidad de respuesta de los sistemas.
- Lo anterior, tiene un efecto inmediato sobre la estandarización de acceso a datos. El modelo definido gracias a GraphQL crea un estándar de consumo de datos para una familia de casos de uso. De nuevo, en el contexto de una red social, si lo que queremos es identificar conexiones entre personas, no nos interesa un mecanismo general de acceso a todas las personas de la red, sino un mecanismo que nos permita indicar aquellas personas con las que tengo algún tipo de conexión. Esta especie de filtro en el acceso a los datos, se puede pre-configurar gracias a GraphQL.
- Mejora de seguridad y rendimiento: A través de la definición precisa de consultas y la limitación de acceso a datos sensibles, GraphQL puede contribuir a una aplicación más segura y de mejor rendimiento.
Gracias a estas ventajas, el uso de este lenguaje representa una evolución significativa en la manera de interactuar con datos en aplicaciones web y móviles, ofreciendo ventajas claras sobre enfoques más tradicionales como REST.
La Inteligencia Artificial generativa. Un nuevo superhéroe en la ciudad.
Si el uso del lenguaje GraphQL para acceder a los datos de forma mucho más eficiente y estándar es una evolución significativa para los productos de datos, ¿qué pasará si podemos interactuar con nuestro producto en lenguaje natural? Esto es ahora posible gracias a la explosiva evolución en los últimos 24 meses de los LLMs (Modelos Grandes del Lenguaje) y la IA generativa.
La siguiente imagen muestra el esquema conceptual de un producto de datos, integrado con LLMS: un contenedor digital que incluye datos, metadatos y funciones lógicas que se expresan como funcionalidades para el usuario, junto con las últimas tecnologías para exponer información de forma flexible, como GraphQL y las interfaces conversacionales construidas sobre Modelos Grandes del Lenguaje (LLMs).
¿Cómo se pueden beneficiar los productos de datos de la combinación de GraphQLy el uso de los LLMs?
- Mejora de la experiencia de usuario. Mediante la integración de LLMs, las personas puedan hacer preguntas a los productos de datos usando lenguaje natural. Esto representa un cambio significativo en cómo interactuamos con los datos, haciendo que el proceso sea más accesible y menos técnico. De forma práctica sustituiremos los clicks por frases en el momento de pedir un taxi.
- Mejoras en la seguridad a lo largo de la cadena de interacción en el uso de un producto de datos. Para que esta interacción sea posible, se necesita un mecanismo que conecte de manera eficaz el backend (donde residen los datos) con el frontend (donde se hacen las preguntas). GraphQL se presenta como la solución ideal debido a su flexibilidad y capacidad para adaptarse a las necesidades cambiantes de los usuarios, ofreciendo un enlace directo y seguro entre los datos y las preguntas realizadas en lenguaje natural. Es decir, GraphQL puede pre-seleccionar los datos que se van a mostrar en una consulta, evitando así que la consulta general pueda hacer visibles algunos datos privados o innecesarios para una aplicación particular.
- Potenciando las consultas con Inteligencia Artificial: La inteligencia artificial no solo juega un papel en la interacción en lenguaje natural con el usuario. Se puede pensar en escenarios donde el propio modelo que se define con GraphQL esté asistido por la propia inteligencia artificial. Esto enriquecería las interacciones con los productos de datos, permitiendo una comprensión más profunda y una exploración más rica de la información disponible. Por ejemplo, le podemos pedir a una IA generativa (como ChatGPT) que tome estos datos del catálogo que se exponen como un API y que nos cree un modelo y un endpoint de GraphQL.
En definitiva, la combinación de GraphQL y los LLMs, supone una auténtica evolución en la forma en la que accedemos a los datos. La integración de GraphQL con los LLMs apunta hacia un futuro donde el acceso a los datos puede ser tan preciso como intuitivo, marcando un avance hacia sistemas de información más integrados, accesibles para todos y altamente reconfigurables para los diferentes casos de uso. Este enfoque abre la puerta a una interacción más humana y natural con las tecnologías de información, alineando la inteligencia artificial con nuestras experiencias cotidianas de comunicación usando productos de datos en nuestro día a día.
Contenido elaborado por Alejandro Alija,experto en Transformación Digital e Innovación. Los contenidos y los puntos de vista reflejados en esta publicación son responsabilidad exclusiva de su autor.
La estandarización es fundamental para mejorar la eficiencia y la interoperabilidad en el gobierno y la gestión de datos. La adopción de estándares proporciona un marco común para organizar, intercambiar e interpretar los datos, facilitando la colaboración y garantizando la consistencia y calidad de los mismos. Los estándares ISO, elaborados a nivel internacional y las normas UNE, desarrolladas específicamente para el mercado español, son ampliamente reconocidos en este ámbito. Ambos catálogos de buenas prácticas, aunque comparten objetivos similares, difieren en su alcance geográfico y enfoque de desarrollo, permitiendo a las organizaciones seleccionar las normas más adecuadas para sus necesidades y contexto específico.
Ante la publicación, hace unos meses, de las especificaciones UNE 0077, 0078, 0079, 0080, y 0081 sobre gobierno, gestión, calidad, madurez, y evaluación de calidad de datos, los usuarios pueden tener dudas sobre cómo se relacionan estas y las normas ISO que ya tienen implementadas en su organización. Con este post se busca contribuir a paliar estas dudas. Para ello, se presenta un resumen de los principales estándares relacionados con las TIC, poniendo el foco en dos de ellos: ISO 20000 sobre gestión del servicio, e ISO 27000, sobre seguridad y privacidad de la información, y se establece la relación entre estos y las especificaciones UNE.
Normas ISO más habituales relacionadas con el dato
Los estándares ISO tiene la gran ventaja de ser abiertos, dinámicos y agnósticos a las tecnologías subyacentes. Del mismo modo, se encargan de aunar las mejores prácticas consensuadas y decididas por distintos grupos de profesionales e investigadores en cada uno de los campos de actuación. Si ponemos el foco en los estándares relacionados con las TIC, ya existe un marco de estándares sobre gobierno, gestión y calidad de los sistemas de información donde destacan, entre otras:
A nivel de gobierno:
- ISO 38500 para el gobierno de TI.
A nivel de gestión:
- ISO 8000 para sistemas de gestión de datos y datos maestros.
- ISO 20000 para la gestión de los servicios.
- ISO 25000 para la calidad del producto generado (tanto software como datos).
- ISO 27000 e ISO 27701 para la gestión de la seguridad y privacidad de la información.
- ISO 33000 para la evaluación de procesos.
A estos estándares hay que sumar otros que también son de uso habitual en las empresas como:
- Sistema de gestión de calidad basado en ISO 9000
- Sistema de gestión medioambiental propuesto en ISO 14000
Estas normas se usan desde hace años para el gobierno y gestión de las TIC y tienen la gran ventaja de que, al basarse en los mismos principios, pueden usarse perfectamente de manera conjunta. Así, por ejemplo, es muy útil reforzar mutuamente la seguridad de los sistemas de información basados en la familia de normas ISO/IEC 27000 con la gestión de servicios basados en la familia de normas ISO/IEC 20000.
La relación entre las normas ISO y las especificaciones UNE sobre el dato
Las especificaciones UNE 0077, 0078, 0079, 0080 y 0081 complementan las normas ISO existentes sobre gobierno, gestión y calidad de datos al proporcionar directrices específicas y detalladas que se enfocan en los aspectos particulares del entorno español y las necesidades del mercado nacional.
Cuando se plantearon las especificaciones UNE 0077, 0078, 0079, 0080, y 0081, se basaron en los principales estándares ISO, con el fin de integrarse fácilmente en los sistemas de gestión ya disponibles en las organizaciones (mencionados anteriormente), como puede verse en la siguiente figura:
Figura 1. Relación de las especificaciones UNE con los diferentes estándares ISO para las TIC.
Ejemplo de aplicación de la norma UNE 0078
A continuación, se presenta un ejemplo para ver cómo se integran de una forma más clara las normas UNE y las ISO que muchas organizaciones ya tienen implantadas desde hace años, tomando como referencia la UNE 0078. Aunque todas las especificaciones UNE del dato se encuentran entrelazadas con la mayoría de las normas ISO de gobierno, gestión y calidad de TI, la especificación UNE 0078 de gestión de datos está más relacionada con los sistemas de gestión de seguridad de la información (ISO 27000) y gestión de los servicios de TI (ISO 20000). En la Tabla 1 se puede ver la relación para cada proceso con cada estándar ISO.
Proceso UNE 0078: Gestión de Datos | Relacionado con ISO 20000 | Relacionado con ISO 27000 |
---|---|---|
(ProcDat) Procesamiento del dato | ||
(InfrTec) Gestión de la infraestructura tecnológica | X | X |
(ReqDat) Gestión de requisitos del dato | X | X |
(ConfDat) Gestión de la configuración del dato | ||
(DatHist) Gestión de datos histórico | X | |
(SegDat) Gestión de la seguridad del dato | X | X |
(Metdat) Gestión del metadato |
X | |
(ArqDat) Gestión de la arquitectura y diseño del metadato |
X |
|
(CIIDat) Compartición, intermediación e integración del dato |
X |
|
(MDM) Gestión del dato maestro |
|
|
(RRHH) Gestión de recursos humanos |
|
|
(CVidDat) Gestión del ciclo de vida del dato |
X |
|
D(AnaDat) Análisis del dato esigualdad |
|
Tabla. 1. Relación de procesos de UNE 0078 con ISO 27000 e ISO 20000.
Relación de la norma UNE 0078 con ISO 20000
En cuanto a la interrelación ISO 20000-1 con la especificación UNE 0078 a continuación se presenta un caso de uso en el que una organización quiere poner a disposición datos relevantes para su consumo en toda la organización a través de distintos servicios. La implementación integrada de UNE 0078 e ISO 20000-1 permite a las organizaciones:
- Asegurar que los datos críticos para el negocio son gestionados y protegidos adecuadamente.
- Mejorar la eficiencia y efectividad de los servicios de TI, asegurando que la infraestructura tecnológica respalda las necesidades del negocio y de los usuarios finales
- Alinear la gestión de datos y la gestión de servicios de TI con los objetivos estratégicos de la organización, mejorando la toma de decisiones y la competitividad en el mercado
La relación entre ambas se manifiesta en cómo la infraestructura tecnológica gestionada según la UNE 0078 soporta la entrega y gestión de servicios de TI conforme a ISO 20000-1.
Para ello, es necesario contar, al menos, con:
- En primer lugar, para el caso de puesta a disposición de datos como un servicio, es necesario contar con una infraestructura de TI bien gestionada y segura. Esto es esencial, por un lado, para la implementación efectiva de procesos de gestión de servicios de TI, como los incidentes y problemas, y por otro, para asegurar la continuidad del negocio y la disponibilidad de los servicios de TI.
- En segundo lugar, una vez se dispone de la infraestructura, y se es consciente de que el dato va a ser dispuesto para su consumo en algún momento, es necesario gestionar los principios de compartición e intermediación de dicho dato. Para ello, en la especificación UNE 0078, se cuenta con el proceso de Compartición, intermediación e integración del dato. Su principal objetivo es habilitar su adquisición y/o entrega para su consumo o compartición, observando si fuese necesario el despliegue de mecanismos de intermediación, así como la integración del mismo. Este proceso de la UNE 0078 estaría relacionado con varios de los planteados en ISO 20000-1, tales como el proceso de Gestión de relaciones con el negocio, gestión de niveles de servicio, la gestión de la demanda y la gestión de la capacidad de los datos que son puestos a disposición.
Relación de la norma UNE 0078 con ISO 27000
Así mismo, la infraestructura tecnológica creada y gestionada para un objetivo específico debe asegurar unos mínimos en materia de seguridad y privacidad de datos, por lo tanto, será necesaria la implantación de buenas prácticas incluidas en ISO 27000 e ISO 27701 para gestionar la infraestructura desde la perspectiva de la seguridad y privacidad de la información, mostrando así un claro ejemplo de interrelación entre los tres sistemas de gestión: servicios, seguridad y privacidad de la información, y datos.
No solo es primordial que el dato sea puesto al servicio de las organizaciones y ciudadanos de una forma óptima, sino que es necesario además prestar especial atención a la seguridad del dato a lo largo de todo su ciclo de vida durante la puesta en servicio. Es en este punto donde el estándar ISO 27000 aporta todo su valor. El estándar ISO 27000, y en particular ISO 27001 cumple los siguientes objetivos:
- Especifica los requisitos para un sistema de gestión de seguridad de la información (SGSI).
- Se centra en la protección de la información contra accesos no autorizados, la integridad de los datos y la confidencialidad.
- Ayuda a las organizaciones a identificar, evaluar y gestionar los riesgos de seguridad de la información.
En esta línea, su interrelación con la especificación UNE 0078 de Gestión de Datos viene marcada a través del proceso de Gestión de seguridad del dato. A través de la aplicación de los distintos mecanismos de seguridad, se comprueba que la información manejada en los sistemas no tiene accesos no autorizados, manteniendo su integridad y confidencialidad a lo largo de todo el ciclo de vida del dato. Del mismo modo, se puede construir una terna en esta relación con el proceso de gestión de seguridad de datos de la especificación UNE 0078 y con el proceso de UNE 20000-1 de Operación SGSTI- Gestión de Seguridad de la Información.
A continuación, en la Figura 2 se presenta como la especificación UNE 0078 complementa a las actuales ISO 20000 e ISO 27000 aplicado al ejemplo comentado anteriormente.
Figura 2. Relación de procesos UNE 0078 con ISO 20000 e ISO 27000 aplicados al caso de compartición de datos.
A través de los casos anteriores se puede vislumbrar que la gran ventaja de la especificación UNE 0078 es que se integran perfectamente con los sistemas de gestión de seguridad y de gestión de servicios existentes en las organizaciones. Lo mismo ocurre con el resto de las normas UNE 0077, 0079, 0080, y 0081. Por lo tanto, si una organización que ya tiene implantados ISO 20000 o ISO 27000 quiere llevar a cabo iniciativas de gobierno, gestión y calidad de datos, se recomienda el alineamiento entre los distintos sistemas de gestión con las especificaciones UNE, puesto que se refuerzan mutuamente desde el punto de vista de la seguridad, de los servicios y de los datos.
Contenido elaborado por Dr. Fernando Gualo, Profesor en UCLM y Consultor de Gobierno y Calidad de datos. Los contenidos y los puntos de vista reflejados en esta publicación son responsabilidad exclusiva de su autor.
Enseñar a los ordenadores a entender cómo hablan y escriben los humanos es un viejo desafío en el campo de la inteligencia artificial, conocido como procesamiento de lenguaje natural (PLN). Sin embargo, desde hace poco más de dos años, estamos asistiendo a la caída de este antiguo bastión con la llegada de los modelos grandes del lenguaje (LLM) y los interfaces conversacionales. En este post, vamos a tratar de explicar una de las técnicas clave que hace posible que estos sistemas nos respondan con relativa precisión a las preguntas que les hacemos.
Introducción
En 2020, Patrick Lewis, un joven doctor en el campo de los modelos del lenguaje que trabajaba en la antigua Facebook AI Research (ahora Meta AI Research) publica junto a Ethan Perez de la Universidad de Nueva York un artículo titulado: Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks en el que explicaban una técnica para hacer más precisos y concretos los modelos del lenguaje actuales. El artículo es complejo para el público en general. Sin embargo, en su blog, varios de los autores del artículo explican de manera más asequible cómo funciona la técnica del RAG. En este post vamos a tratar de explicarlo de la forma más sencilla posible.
Los modelos grandes del lenguaje o Large Language Models (hay cosas que es mejor no traducir…) son modelos de inteligencia artificial que se entrenan utilizando algoritmos de Deep Learning sobre conjuntos enormes de información generada por humanos. De esta manera, una vez entrenados, han aprendido la forma en la que los humanos utilizamos la palabra hablada y escrita, así que son capaces de ofrecernos respuestas generales y con un patrón muy humano a las preguntas que les hacemos. Sin embargo, si buscamos respuestas precisas en un contexto determinado, los LLM por sí solos no proporcionarán respuestas específicas o habrá una alta probabilidad de que alucinen y se inventen completamente la respuesta. Que los LLM alucinen significa que generan texto inexacto, sin sentido o desconectado. Este efecto plantea riesgos y desafíos potenciales para las organizaciones que utilizan estos modelos fuera del entorno doméstico o cotidiano del uso personal de los LLM. La prevalencia de la alucinación en los LLMs, estimada en un 15% o 20% para ChatGPT, puede tener implicaciones profundas para la reputación de las empresas y la fiabilidad de los sistemas de IA.
¿Qué es un RAG?
Precisamente, las técnicas RAG se han desarrollado para mejorar la calidad de las respuestas en contextos específicos, como por ejemplo, en una disciplina concreta o en base a repositorios de conocimiento privados como bases de datos de empresas.
RAG es una técnica extra dentro de los marcos de trabajo de la inteligencia artificial, cuyo objetivo es recuperar hechos de una base de conocimientos externa para garantizar que los modelos de lenguaje devuelven información precisa y actualizada. Un sistema RAG típico (ver imágen) incluye un LLM, una base de datos vectorial (para almacenar convenientemente los datos externos) y una serie de comandos o preguntas. Es decir, de forma simplificada, cuándo hacemos una pregunta en lenguaje natural a un asistente cómo ChatGPT, lo que ocurre entre la pregunta y la respuesta es algo como:
- El usuario realiza la consulta, también denominada técnicamente prompt.
- El RAG se encarga de enriquecer ese prompt o pregunta con datos y hechos que ha obtenido de una base de datos externa que contiene información relevante relativa a la pregunta que ha realizado el usuario. A esta etapa se le denomina retrieval.
- El RAG se encarga de enviar el prompt del usuario enriquecido o aumentado al LLM que se encarga de generar una respuesta en lenguaje natural aprovechando toda la potencia del lenguaje humano que ha aprendido con sus datos de entrenamiento genéricos, pero también con los datos específicos proporcionados en la etapa de retrieval.
Entendiendo RAG con ejemplos
Pongamos un ejemplo concreto. Imagina que estás intentando responder una pregunta sobre dinosaurios. Un LLM generalista puede inventarse una respuesta perfectamente plausible, de forma que una persona no experta en la materia no la diferencia de una respuesta con base científica. Por el contrario, con el uso de RAG, el LLM buscaría en una base de datos de información sobre dinosaurios y recuperaría los hechos más relevantes para generar una respuesta completa.
Lo mismo ocurría si buscamos una información concreta en una base de datos privada. Por ejemplo, pensemos en un responsable de recursos humanos de una empresa. Éste desea recuperar información resumida y agregada sobre uno o varios empleados cuyos registros se encuentran en diferentes bases de datos de la empresa. Pensemos que podemos estar tratando de obtener información a partir de tablas salariales, encuestas de satisfacción, registros laborales, etc. Un LLM es de gran utilidad para generar una respuesta con un patrón humano. Sin embargo, es imposible que ofrezca datos coherentes y precisos puesto que nunca ha sido entrenado con esa información debido a su carácter privado. En este caso, RAG asiste al LLM para proporcionarle datos y contexto específico con el que poder devolver la respuesta adecuada.
De la misma forma, un LLM complementado con RAG sobre registros médicos podría ser un gran asistente en el ámbito clínico. También los analistas financieros se beneficiarían de un asistente vinculado a datos actualizados del mercado de valores. Prácticamente, cualquier caso de uso se beneficia de las técnicas RAG para enriquecer las capacidades de los LLM con datos de contexto específicos.
Recursos adicionales para entender mejor RAG
Cómo os podéis imaginar, tan pronto como nos asomamos por un momento a la parte más técnica de entender los LLM o RAG, las cosas se complican enormemente. En este post hemos tratado de explicar con palabras sencillas y ejemplos cotidianos cómo funciona la técnica de RAG para obtener respuestas más precisas y contextualizadas a las preguntas que le hacemos a un asistente conversacional como ChatGPT, Bard o cualquier otro. Sin embargo, para todos aquellos que tengáis ganas y fuerzas para profundizar en el tema, os dejamos una serie de recursos web disponibles para tratar de entender un poco más cómo se combinan los LLM con RAG y otras técnicas como la ingeniería de prompts para ofrecer las mejores apps de IA generativa posibles.
Videos introductorios:
Artículos de contenido de LLMs y RAG para principiantes:
- DEV - LLM for dummies
-
Digital Native - LLMs for Dummies
-
Hopsworks.ai - Retrieval Augmented Generation (RAG) for LLMs
-
Datalytyx - RAG For Dummies
¿Quieres pasar al siguiente nivel? Algunas herramientas para probar:
- LangChain. LangChain es un marco (framework) de desarrollo que facilita la construcción de aplicaciones usando LLMs, como GPT-3 y GPT-4. LangChain es para desarrolladores de software y permite integrar y gestionar varios LLMs, creando aplicaciones como chatbots y agentes virtuales. Su principal ventaja es simplificar la interacción y orquestación de LLMs para una amplia gama de aplicaciones, desde análisis de texto hasta asistencia virtual.
-
Hugging Face. Hugging Face es una plataforma con más de 350 mil modelos, 75 mil conjuntos de datos y 150 mil aplicaciones de demostración, todos ellos de código abierto y disponibles públicamente online donde la gente puede colaborar fácilmente y construir modelos de inteligencia artificial.
-
OpenAI. OpenAI es la plataforma más conocida en lo que a modelos de LLM e interfaces conversacionales se refiere. Los creadores de ChatGTP ponen a disposición de la comunidad de desarrolladores un conjunto de librerías para utilizar el API de OpenAI y poder crear sus propias aplicaciones utilizando los modelos GPT-3.5 y GPT- 4. Como ejemplo, os proponemos visitar la documentación de la librería de Python para entender cómo, con muy pocas líneas de código, podemos estar usando un LLM en nuestra propia aplicación. Aunque las interfaces conversacionales de OpenAI como ChatGPT, utilizan su propio sistema RAG, también podemos combinar los modelos GPT con nuestra propia RAG, como por ejemplo, lo que proponen en este artículo.
Contenido elaborado por Alejandro Alija,experto en Transformación Digital e Innovación. Los contenidos y los puntos de vista reflejados en esta publicación son responsabilidad exclusiva de su autor.
La transformación digital afecta a todos los sectores, desde la agricultura al turismo o la educación. Entre sus objetivos está la optimización de los procesos, la mejora de la experiencia del cliente e incluso el impulso de nuevos modelos de negocio.
El sector legal no es una excepción y por ello en los últimos años hemos visto un auge de soluciones y herramientas encaminadas a ayudar al jurista a realizar de una manera más eficiente su trabajo. Es lo que se conoce como LegalTech.
¿Qué es el LegalTech?
El concepto LegalTech hace referencia al uso de nuevos procesos y herramientas tecnológicas para ofrecer servicios jurídicos más eficientes. Es por tanto un concepto extenso, que aplica tanto a herramientas que facilitan la ejecución de tareas (por ejemplo, la gestión financiera) como a servicios que aprovechan las ventajas de tecnologías disruptivas como la inteligencia artificial o el blockchain.
En ocasiones se utiliza el término LawTech como sinónimo de LegalTech. Aunque algunos juristas dicen que son términos distintos y que no hay que confundirlos, no existe consenso y en algunos lugares, como Reino Unido, está extendido el uso de LawTech en sustitución de LegalTech.
Ejemplos de herramientas de LegalTech o LawTech
A través de la aplicación de distintas tecnologías, estás herramientas pueden realizar distintas funciones, como por ejemplo:
- Localizar información en grandes volúmenes de información legal. Existen herramientas capaces de extraer este contenido jurídico, utilizando técnicas de Procesamiento del Lenguaje Natural (PLN). Con ellas se busca facilitar el filtrado y localización de información de interés, así como ponerla a disposición del usuario de una manera visual. De esta forma se ayuda a los juristas a realizar una mejor investigación y, en consecuencia, reducir el tiempo de preparación de los casos y definir estrategias procesales más sólidas. Un ejemplo de herramienta en este ámbito es Ross Intelligence.
- Realizar análisis predictivos. En el mercado también encontramos herramientas dirigidas a analizar información legal y elaborar predicciones que anticipan los comportamientos y resultados de, utilizando inteligencia artificial. Estas herramientas tratan de responder a preguntas como cuánto va a durar un proceso judicial, cuál es la sentencia más probable o si existe posibilidad de recurso. Herramientas de este tipo son LexMachina, Blue J, Watson de IBM o Jurimetria.
- Resolver consultas legales. Utilizando asistentes conversacionales (chatbots) basados en Inteligencia artificial se puede dar respuesta a diversas preguntas, como por ejemplo: cómo superar las multas de aparcamiento, cómo recurrir las comisiones bancarias o cómo poner una denuncia. Este tipo de herramientas liberan a los abogados de tareas sencillas, pudiendo dedicar su tiempo a actividades de mayor valor. Un ejemplo de chatbots legal es DoNotPay.
- Ayudar en la redacción de contratos y demandas. Las herramientas de LegalTech también pueden ayudar a automatizar y simplifica determinadas tareas, generando ahorros de tiempo y costes. Es el caso de Contract Express que automatiza la redacción de documentos jurídicos estándar.
- Resolver disputas legales. Existen algunos litigios que se pueden resolver de manera sencilla utilizando herramientas tecnológicas de código abierto como Kleros, un protocolo de resolución de litigios online o. Kleros utiliza blockchain para resolver conflictos de la forma más justa posible.
El papel de los datos abiertos en el LegalTech
Para que todas estas herramientas funcionen adecuadamente, optimizando la labor de los juristas, es necesario contar con datos de valor. En este sentido, los datos abiertos son una gran oportunidad.
Según la iniciativa de Legal Data Vision, que utiliza datos de Reino Unido y fue lanzada en marzo de 2022, por LawtechUK and the Open Data Institute el 67% de las empresas de innovación asegura necesitar acceso a datos para desarrollar soluciones jurídicas transformadoras y sólo el 20% de los abogados afirma que su organización capta los datos de forma eficaz. Esta iniciativa tiene como fin promover el acceso y uso responsable de los datos jurídicos para impulsar la innovación en el sector y obtener resultados que beneficien a la sociedad.
Según Gartner, las áreas legales van a aumentar el gasto en soluciones tecnológicas en un 200% para 2025. En países como Francia, ya estén surgiendo gran cantidad de start-ups centradas en este ámbito, muchas de las cuales reutilizan datos abiertos. En España también estamos viviendo una expansión del sector, que permitirá implantar mejoras en los procesos y servicios de las empresas legales. En 2021 había más de 400 compañías operativas en este ámbito y, a nivel mundial, según cifras de Stadista, el sector generó más de 27.000 millones de euros.
Sin embargo, para que este campo tenga un mayor avance es necesario impulsar el acceso a información jurídica en formatos que puedan ser leídos por máquinas y que permitan un tratamiento masivo.
En definitiva, nos encontramos ante un mercado en auge, gracias a la irrupción de tecnologías disruptivas. Las empresas legales necesitan acceder a información actualizada y de calidad, que les permita realizar su trabajo de una manera más eficiente. Uno de los métodos para lograrlo es aprovechar el potencial de los datos abiertos.
(Haz clic aquí para acceder a la versión accesible)
Contenido elaborado por el equipo de datos.gob.es.
Pocas habilidades son tan características del ser humano como el lenguaje. Según la escuela Aristotélica, los humanos somos animales racionales que perseguimos el conocimiento por el mero hecho de saber. Sin entrar en profundas consideraciones filosóficas que exceden, con mucho, el propósito de este espacio de divulgación, podemos decir que esa búsqueda del saber y la acumulación de conocimiento no serían posibles sin la intervención del lenguaje humano. De ahí, que en este siglo XXI - el siglo de la explosión de la Inteligencia Artificial (IA)- buena parte de los esfuerzos se centren en soportar, complementar y aumentar las capacidades humanas relacionadas con el lenguaje.
Introducción
En este espacio, hemos hablado repetidamente de la disciplina del procesamiento del lenguaje natural (o NLP en inglés). La hemos abordado desde diferentes puntos de vista, todos ellos desde un enfoque práctico, técnico y relacionado con los datos - textos - que son el verdadero combustible de las tecnologías que sirven de apoyo a esta disciplina. Hemos realizado monográficos sobre el tema, introduciendo las bases de la tecnología e incluyendo ejemplos prácticos. También hemos comentado la actualidad y analizado las últimas tendencias tecnológicas, así como los últimos logros importantes en procesamiento del lenguaje natural. En casi todas las publicaciones sobre el tema, hemos mencionado herramientas, librerías y productos tecnológicos que, de una u otra manera, ayudan y soportan los diferentes procesos y aplicaciones del lenguaje natural. Desde la creación de resúmenes razonados de obras y textos largos, hasta la generación artificial de publicaciones o código para programadores, todas las aplicaciones utilizan librerías, paquetes o frameworks para el desarrollo de aplicaciones de inteligencia artificial aplicadas en el campo del procesamiento del lenguaje natural.
En anteriores ocasiones describimos el algoritmo GPT-3 de la compañía OpenAI o el Megatron-Turing NLG de Microsoft, como algunos de los exponentes actuales en cuanto a potencia de análisis y precisión en la generación de resultados de calidad. Sin embargo, en la mayoría de las ocasiones, tenemos que hablar de algoritmos o librerías que, dada su complejidad, quedan reservados a una pequeña comunidad técnica, de desarrolladores, académicos y profesionales, dentro de la disciplina del NLP. Es decir, si queremos emprender un nuevo proyecto relacionado con el procesamiento del lenguaje natural, debemos de partir de unas librerías de bajo nivel, para posteriormente ir añadiendo capas de funcionalidad a nuestro proyecto u aplicación hasta que esta esté lista para su uso. Normalmente, las librerías de NLP, se enfocan sobre una pequeña parte del recorrido de un proyecto de software (fundamentalmente la tarea de codificación), siendo los desarrolladores o equipos de software, los que deben de contemplar y añadir el resto de capas funcionales y técnicas (testing, empaquetado, publicación y puesta en producción, operaciones, etc.) para convertir los resultados de esa librería de NLP en un producto o aplicación tecnológica completa.
El reto de poner en marcha una aplicación
Pongamos un ejemplo. Supongamos que queremos construir una aplicación que, en base a un texto de partida, por ejemplo, nuestra factura de la luz, nos haga un resumen sencillo del contenido de nuestra factura. Todos sabemos que las facturas de la luz o las nóminas de los trabajadores no son documentos, precisamente, sencillos de entender para el común de la sociedad. La dificultad se encuentra, normalmente, en el empleo de una terminología muy técnica y, por qué no decirlo, en el bajo interés de algunas organizaciones en simplificar la vida de los ciudadanos facilitando el entendimiento de informaciones básicas como lo que pagamos por la electricidad o nuestras retribuciones como empleados por cuenta ajena. Volviendo al tema que nos ocupa. Si queremos construir una aplicación de software con este propósito, tendremos que utilizar un algoritmo que entienda nuestra factura. Para esto, los algoritmos de NLP, tienen que, primero de todo, realizar un análisis del texto y detectar las palabras clave y sus relaciones (lo que en terminología técnica se llama, detectar entidades y reconocerlas en el contexto). Es decir, el algoritmo tendrá que detectar las entidades clave, como el consumo de energía, sus unidades en kWh, los periodos temporales relevantes (consumo de este mes, del mes anterior, consumo diarios, histórico de consumo pasado, etc.). Una vez detectadas esas entidades relevantes (y descartadas las demás) y sus relaciones, todavía queda mucho por hacer. En términos de un proyecto de software en el campo del NLP, el reconocimiento de entidades (en inglés NER - Named-Entity-Recognition) es solo una pequeña parte de una aplicación lista para su uso por una persona o un sistema. Es aquí donde os presentamos la librería de software SpaCy.
Ejemplo de flujo o pipeline de NLP desde que partimos del texto original que queremos analizar hasta que obtenemos el resultado final, bien sea un texto enriquecido o una página web con ayudas o explicaciones al usuario. Fuente original: https://SpaCy.io/
Ejemplo del uso de la pipeline (flujo) de Spacy es_core_news_sm para identificar entidades en una frase en español.
¿Qué es Spacy?
SpaCy tiene como objetivo facilitar la puesta en producción (hacer una aplicación lista para su uso por el consumidor final) de las aplicaciones de software en el ámbito del lenguaje natural. SpaCy es una librería de software de código abierto diseñada para facilitar tareas de procesamiento avanzado del lenguaje natural. SpaCy está escrita en Python y Cython (extensiones del lenguaje C para Python que permiten realizar una programación de bajo nivel muy eficiente). Es una librería open-source bajo la licencia MIT y todo el proyecto es accesible a través de su cuenta de Github.
Las ventajas de Spacy
Pero, ¿qué hace diferente a SpaCy? SpaCy se creó con el objetivo de facilitar la creación de productos reales. Es decir, la librería no es tan solo una librería con la que nos quedamos en el plano más técnico y de más bajo nivel dentro de las capas que componen una aplicación de software, desde los algoritmos más internos hasta las interfaces más visuales. La librería contempla los aspectos prácticos de un producto de software real, en el que es necesario tener en cuenta aspectos tan importantes como:
- Las grandes cargas de datos que se requieren procesar (imagina lo que implica, cargar los comentarios de productos completos de un gran e-commerce en Internet, por ejemplo).
- La velocidad de ejecución, puesto que cuando tenemos una aplicación real, necesitamos que la experiencia sea lo más fluida posible y no podemos soportar largos tiempos de espera entre ejecuciones de los algoritmos.
- El empaquetamiento de funcionalidades de NLP (como NER) listas para desplegar en uno o varios servidores de producción. SpaCy, no solo proporciona herramientas de código de bajo nivel, sino que soporta los procesos desde que creamos (compilamos y construimos una parte de una aplicación de software) hasta que integramos esta parte algorítmica con otras partes de la aplicación como las bases de datos o las interfaces de usuario final.
- La optimización de modelos de NLP para que puedan ejecutarse fácilmente en servidores estándar (basados en CPU) sin necesidad de usar procesadores gráficos (GPU)
- Las herramientas de visualización gráficas integradas para facilitar la depuración o el desarrollo de nuevas funcionalidades.
- Importante mencionar también, su fantástica documentación, desde su web más introductoria hasta su comunidad en Github. Esto facilita enormemente la rápida adopción entre la comunidad de desarrollo.
- El gran número de modelos y flujos pre-entrenados (73 flujos) en 22 idiomas diferentes. Además del soporte para más de 66 idiomas. En particular, en el caso del español, es complicado encontrar en otras librerías y herramientas, modelos optimizados para el idioma español.
Ejemplo de visualizador gráfico de entidades. Fuente original: https://SpaCy.io/
Como conclusión de este post. Si eres principiante y estás arrancando en el mundo del NLP, SpaCy te facilita el comienzo y viene con una amplia documentación, que incluye una guía 101 para principiantes, un curso interactivo gratuito en línea y una variedad de tutoriales en video. Si eres un desarrollador experimentado o formas parte de un equipo de desarrollo de software consolidado y quieres construir una aplicación de producción final, SpaCy está diseñado específicamente para uso en producción y te permite crear y entrenar flujos de datos (textos) potentes de NLP y empaquetarlas para una fácil implementación. Finalmente, si estás buscando alternativas a tu solución ya existente de NLP (buscas nuevos modelos de NLP, necesitas mayor flexibilidad y agilidad en tus despliegues a producción o buscas mejoras en rendimiento), SpaCy te permite personalizar probar diferentes arquitecturas y combinar, fácilmente, frameworks existentes y populares como PyTorch o TensorFlow.
Contenido elaborado por Alejandro Alija,experto en Transformación Digital e Innovación.
Los contenidos y los puntos de vista reflejados en esta publicación son responsabilidad exclusiva de su autor.
Nuestro lenguaje, tanto escrito como hablado, constituye un tipo muy particular de datos. El lenguaje es el medio de comunicación humana por excelencia y su principal característica es la ambigüedad y la complejidad. Su procesamiento, debido a que se trata de datos no estructurados, ha constituido tradicionalmente un desafío a las máquinas, dificultando su uso en los procesos de análisis de la información. Con la explosión de las redes sociales y el avance de la supercomputación y la analítica de datos en campos tan dispares como la medicina o los call-centers, no es extraño que buena parte de los subcampos de la inteligencia artificial se dediquen a desarrollar estrategias y algoritmos para procesar y generar lenguaje natural.
Introducción
En el dominio del análisis de datos aplicado al procesamiento del lenguaje natural se distinguen dos grandes metas: Comprender y Generar
- Comprender: existen un conjunto de técnicas, herramientas y algoritmos cuyo principal objetivo es el de procesar y comprender el lenguaje natural para, finalmente, convertir esta información en datos estructurados que puedan ser explotados/utilizados por una máquina. Existen diferentes niveles de complejidad, dependiendo de si el mensaje que se transmite en lenguaje natural se encuentra en forma escrita o hablada. Además, el idioma en el que se transmite el mensaje incrementa de forma notoria la complejidad de su procesamiento, pues los algoritmos de reconocimiento habrán de estar entrenados en ese idioma u otro similar.
- Generar: encontramos algoritmos que tratan de generar mensajes en lenguaje natural. Es decir, algoritmos que consumen datos clásicos o estructurados para generar una comunicación en lenguaje natural, ya sea escrita o hablada.
En la Figura 1. Procesado de lenguaje natural y sus dos enfoques asociados, se muestra un diagrama para entender mejor estas tareas que forman parte del campo del procesado del lenguaje natural.
Para entender estas técnicas de forma práctica, pongamos algunos ejemplos:
Comprensión de lenguaje natural
En el primer grupo, se encuentran aquellas aplicaciones en las que un humano, solicita una determinada información o realiza una descripción de algo y una máquina es la encargada de recibir y procesar ese mensaje con el objetivo de resolver o atender dicha petición. Por ejemplo, cuando llamamos al teléfono de información de casi cualquier compañía de servicios, nos responde un contestador automático que, a través de un diálogo guiado o asistido, intenta dirigirnos al servicio o departamento más adecuado. En este ejemplo concreto, la dificultad es doble, ya que, por un lado, el sistema ha de convertir nuestro mensaje hablado en escrito y almacenarlo, para posteriormente pasarlo por una rutina o algoritmo de procesamiento del lenguaje natural que interprete la petición y tome la decisión correcta en base a un árbol de decisión pre-establecido.
Otro ejemplo de aplicación de este tipo de técnicas, son aquellas situaciones en las que se cuenta con mucha información escrita en texto libre procedente de informes rutinarios. Por ejemplo, un informe médico tras una consulta en atención primaria, o un informe policial que se genera al poner una denuncia en una comisaría. Este tipo de informes, suelen contener una cantidad de datos estructurados en campos en las respectivas aplicaciones software en las que se generan - por ejemplo, fecha, asunto, nombre del declarante o paciente, etc.- sin embargo, también suelen contener uno o varios campos para introducir texto libre donde se narran los hechos acontecidos.
En la actualidad, ese texto libre (introducido de forma digital) se almacena, pero no se procesa para interpretar su contenido. En el campo de la Sanidad, para cambiar esta situación se podría utilizar, por ejemplo, la herramienta Apache CTAKES, un framework de desarrollo software que permite la interpretación y extracción de términos clínicos en informes médicos para su posterior uso en forma de asistente al diagnóstico o la creación de diccionarios médicos (más información en este interesante video que explica el funcionamiento de CTAKES).
Generación de lenguaje natural
Por otro lado, las aplicaciones y ejemplos que demuestran el potencial de la generación de lenguaje natural, ya sea en forma de texto o habla, son múltiples y muy variadas. Uno de los ejemplos más conocidos en este sentido es el de la generación de resúmenes meteorológicos. La mayor parte de los resúmenes e informes meteorológicos que se encuentran en la Web han sido generados con un motor de generación de lenguaje natural a partir de los datos cuantitativos de predicción que ofrecen las agencias y organismos oficiales. De forma muy simplificada, un algoritmo de generación de lenguaje natural, generaría la expresión "El tiempo está empeorando" como descripción lingüística de la siguiente variable cuantitativa (∆P=Pt0-Pt1), que es un cálculo que muestra que la presión atmosférica está bajando. Los cambios en la presión atmosférica son un indicador bien conocido de la evolución del tiempo a corto plazo. La pregunta evidente ahora es cómo determina el algoritmo lo que ha de escribir. La respuesta es simple en primera aproximación. La mayoría de estas técnicas utilizan plantillas para generar el lenguaje natural. Plantillas que utilizan frases que se van combinando en función de las salidas que determine el algoritmo. Dicho así, esto podría parecer sencillo, sin embargo, el sistema puede alcanzar un alto grado de complejidad si se introduce lógica difusa para determinar (en el ejemplo) en qué grado el tiempo está empeorando.
Otros ejemplos típicos donde se encuentra comúnmente generación de lenguaje natural es en los resúmenes de encuentros deportivos o en informes periódicos de algunos mercados como el bursátil o el inmobiliario. Por ejemplo, haciendo uso de una herramienta sencilla para generar lenguaje natural a partir del siguiente conjunto de datos estructurados (en formato JSON):
Obtendremos el siguiente resumen en lenguaje natural (en el ejemplo, en inglés) junto con algunos detalles adicionales en cuanto a la legibilidad y métricas del texto devuelto:
Otro ejemplo es la traducción automática, una de las aplicaciones con más impacto en el ámbito del procesamiento del lenguaje natural. Abarca tanto la comprensión como la generación con la complejidad añadida de que la comprensión y el procesamiento es sobre la lengua de origen y la generación del mensaje es en la lengua destino.
Todos estos ejemplos demuestran que los beneficios del uso de herramientas para procesado de lenguaje natural son múltiples. Estas herramientas permiten un escalado que posibilita a algunas empresas generar del orden de 10.000 o 100.000 narrativas semanales que dan valor a sus clientes. Sin estas herramientas de generación y automatización sería imposible alcanzar esas cotas. Estas herramientas permiten democratizar determinados servicios para usuarios no expertos en el manejo de variables cuantitativas. Este es el caso de narrativas que resumen nuestro consumo de electricidad sin necesidad de ser un experto conocedor de variables como los kWh. Desde el punto de vista del procesamiento del lenguaje natural, estas tecnologías han cambiado radicalmente la forma de entender el servicio posventa al cliente. Combinadas con tecnologías como los chatbots o robots conversacionales, permiten mejorar la experiencia del cliente al ser atendido rápidamente y sin necesidad de horarios. Ejecutadas por máquinas, estas tecnologías de procesamiento del lenguaje natural, pueden además, consultar datos del cliente de forma eficiente mientras se le guía a través del diálogo (asistido) en su lenguaje natural.
Ante todas estas posibilidades de futuro, no es de extrañar que cada vez más empresas y organismos estén apostando por desarrollar el procesamiento del lenguaje natural, un campo que puede aportar grandes beneficios a nuestra sociedad. Cabe destacar la iniciativa de la Secretaría de Estado para el Avance Digital que ha diseñado un plan específico para el impulso de las tecnologías del lenguaje (www.PlanTL.es), entendiendo por tales, el procesamiento del lenguaje natural, la traducción automática y los sistemas conversacionales.
Contenido elaborado por Alejandro Alija,experto en Transformación Digital e Innovación.
Los contenidos y los puntos de vista reflejados en esta publicación son responsabilidad exclusiva de su autor.
qMe-Aporta, tercer premiado en el Desafío Aporta 2017, es un prototipo para la construcción intuitiva de consultas, en lenguaje natural guiado, sobre la base de conocimiento de datos.gob.es. Se trata de un sistema que guía al usuario en la construcción de la pregunta, mostrando múltiples alternativas para iniciar y continuar la pregunta. No sólo utiliza términos del sistema (metadatos), también los datos y sus sinónimos. Estas preguntas se pueden hacer en varios idiomas.
Hablamos con Mariano Rico Almodóvar, investigador de la Universidad Politécnica de Madrid (UPM) y responsable de esta iniciativa, para que nos cuente cómo está llevando a cabo este proyecto.
¿En qué punto del desarrollo de qMe-Aporta te encuentras actualmente?
Estamos a la espera de financiación. Es una lástima que un sistema tan útil desde nuestro punto de vista para la reutilización de los datos de las administraciones públicas esté parado, pero así es. Hicimos el esfuerzo, a coste cero, de analizar la aplicación del sistema Dylan-Q (el núcleo de qMe-Aporta) a los datasets del Desafío Aporta (datos.gob.es) pero aún no hemos podido crear el sistema.
Estoy aplicando Dylan-Q a un proyecto europeo llamado SlideWiki, y por ahí esperamos lograr la visibilidad necesaria para lograr financiación privada. También confiamos en que el Catálogo de Tecnologías UPM, del que forma parte la tecnología Dylan-Q, nos dé suficiente visibilidad como para atraer clientes o inversores.
¿En qué fuentes de información, públicas o privadas, se basa su proyecto?
La tecnología Dylan-Q se aplica a datasets RDF, el formato estándar de datos semánticos. En el caso del Desafío Aporta nos centramos en los datasets RDF que hay en datos.gob.es, donde hay datos de todo tipo: comercio, demografía, educación, y un largo etcétera. De los 2018 datasets que había disponibles en la fecha del concurso, la mayoría no eran datasets RDF. Pero conviene destacar que disponemos de herramientas para convertir a RDF datasets (ficheros y bases de datos) en cualquier formato.
Las tecnologías semánticas nos permiten una integración de información mucho más sencilla que con las técnicas tradicionales. Si unimos a esto la lexicalización de las ontologías y un poco de magia (tenemos un informe positivo de patente de la tecnología Dylan-Q), logramos sistemas que permiten hacer consultas guiadas en lenguaje natural sobre cualquier conjunto de datos RDF.
¿Cree que iniciativas como el Desafío Aporta 2017 pueden ayudar a empresas y emprendedores a poner en marcha sus proyectos de reutilización de datos abiertos? ¿Qué otras iniciativas de este tipo cree que deberían ponerse en práctica?
La visibilidad que nos proporcionan estos premios es muy importante, pero son necesarios otros elementos para poder materializar estos proyectos. Es frecuente que las empresas se interesen por proyectos que conocen a través de premios como éste, pero suelen exigir el desarrollo a coste cero de un prototipo (lo que en la jerga se denomina, “prueba de concepto”). Además, aunque los resultados del prototipo sean buenos, no se garantiza la implementación completa del proyecto. También es habitual que los potenciales inversores exijan dedicación exclusiva y sin sueldo por un periodo de hasta dos años. Se tiende a concebir la innovación como una lotería en la que se sabe que una de cada diez start-ups tendrá éxito y permitirá multiplicar considerablemente su inversión, pero, por lo general, no se siguen criterios de inversión a largo plazo y solo se pretende rentabilizar la inversión en un plazo típico de dos años. En estas condiciones es muy difícil emprender.
En países como Alemania o Estados Unidos está más extendida entre las empresas la idea de inversión a fondo perdido. Entienden que para ganar hay que arriesgar, y están dispuestas a asumir el coste del riesgo. No hay miedo al “fracaso”, que se ve como algo natural en los procesos de innovación. Por el contrario, está muy extendido en las empresas de nuestro país que el riesgo lo debe asumir la Administración o, como es nuestro caso, los investigadores. Un siglo después de la frase de Unamuno “¡Qué inventen ellos!”, la situación parece no haber cambiado. Y no creo que sea una cuestión de mayor o menor economía, o de mayor o menor crisis económica, excusas tradicionales para condicionar la inversión en I+D+i, sino de una mayor cultura de inversión en innovación. De hecho, sabemos desde hace tiempo que es la inversión en I+D+i lo que hace que los países sean más o menos prósperos, y no al revés.
Pero no desfallecemos. Seguimos presentándonos a todas las reuniones que nos solicitan. Soñamos con una empresa que esté dispuesta a arriesgar una pequeña cantidad, digamos 30 mil euros, para que le hagamos un prototipo adaptado a su negocio y a una muestra de sus datos, durante 6 meses. Si ese prototipo le convence, haríamos un nuevo proyecto usando todos sus datos y todo su modelo de negocio. ¿Quién quiere ser el primero?.
Pero pese a todo lo dicho, debo insistir en que Iniciativas como Aporta, o como las que promueve el Centro de Apoyo a la Innovación Tecnológica (CAIT) de la UPM, son excelentes para acercar a tecnólogos y empresas. Debería haber encuentros de este tipo con más frecuencia.
Como usuario de datos abiertos, ¿qué retos se ha encontrado a la hora de reutilizar la información pública? ¿Cómo los ha solucionado?
El reto principal ha sido, y sigue siendo, encontrar el dataset más adecuado a nuestras necesidades. A veces es un único dataset, pero la mayoría de las veces queremos varios datasets inicialmente no relacionados entre sí. Creo que se ilustra con la frase “en un mar de datos, pescamos con una caña”. Necesitamos herramientas más potentes para poder pescar de forma más eficiente.
La búsqueda de información es un problema difícil cuando el volumen de datos aumenta, no tanto por el número de datos de un tipo dado como por el número de tipos de datos y las relaciones que hay entre ellos. Las tecnologías semánticas nos permiten relacionar los tipos de datos y dotarles de significado, por lo que podemos abordar este problema con más probabilidades de éxito.
¿Qué actuaciones considera que España debe priorizar en materia de disposición de datos?
Creo que hay que repartir claramente las tareas. Por una parte, las administraciones locales deben recopilar los datos. Por otra, la Administración general debe proporcionar las herramientas necesarias para que las administraciones locales incorporen de forma sencilla y eficiente los datos recopilados. La iniciativa datos.gob.es trabaja en esta línea, pero aún se puede ir más allá. Por ejemplo, es necesaria la integración de los datos recopilados por las administraciones locales, esto es, relacionar los tipos de datos con otros tipos de datos de otros datasets. Podría facilitarse mediante el uso de las tecnologías semánticas. Una vez integrada la información, la Administración podría ofrecer nuevos servicios a los usuarios, como el que proporcionaría qMe-Aporta, y muchos otros que todavía no imaginamos.
Para terminar, ¿cuáles son sus planes de futuro? ¿Están inmersos o tienen en mente algún otro proyecto de reutilización de datos abiertos?
En nuestro grupo de investigación tenemos varios proyectos que utilizan datos abiertos, en lo que se ha denominado “ciencia ciudadana”, como Farolapp (http://farolapp.linkeddata.es), o Stars4All (http://stars4all.eu), pero quizás nuestra principal contribución es la DBpedia del español (es.dbpedia.org). Tenemos un proyecto con la multinacional española TAIGER para aumentar la calidad de los datos de la DBpedia del español, y hemos desarrollado varias técnicas con muy buenos resultados. En junio (2018) hemos organizado el primer congreso internacional de grafos de conocimiento aplicados a turismo y viajes, donde hemos constatado la importancia que tiene este sector que representa el 14% del PIB español y el 10% mundial. Pensamos que la información almacenada en la DBpedia del español puede ser de mucha utilidad para este sector económico. Hay que saber que el 40% de los datos de la DBpedia del español sólo se encuentran en nuestra DBpedia.
La mayor parte de las técnicas que hemos aplicado sobre la DBpedia se pueden aplicar a otros conjuntos de datos, por lo que los datos abiertos se pueden beneficiar de estas técnicas.
Afortunadamente, seguimos investigando y desarrollando proyectos donde aplicar nuestros conocimientos sobre tecnologías semánticas, procesamiento de lenguaje natural y aprendizaje automático (machine learning). Querría aprovechar para agradecer a los responsables del grupo de investigación, Asunción Gómez Pérez y Oscar Corcho, la confianza que han depositado en nosotros, y el tiempo que nos han permitido dedicar a este concurso.