#13 El ABC del procesamiento de lenguaje natural

  • Post author:
You are currently viewing #13 El ABC del procesamiento de lenguaje natural
Imagen de Manuel Velasco de Getty Images

Hace unos días dejé la historia del aprendizaje profundo en un cliffhanger al estilo de las mejores series de Netflix.

Y no me paré en cualquier sitio, no.

Me quedé en lo que para mí es uno de los avances más apasionantes de este siglo. Pero,

Todo llega a tiempo para aquel que sabe cómo esperar

León Tolstoy. Escritor ruso.

¡Buenos días y buenos datos!

Hoy aprenderás sobre el lenguaje natural y qué es lo que lo hace tan especial para que necesitemos los algoritmos de entrenamiento más potentes para procesarlo.

Mujer con cartel

Recuerda que este capítulo incluye muchos términos técnicos. Si te surge cualquier duda, pregúntame en comentarios o envíame un mensaje directo.

El lenguaje natural

En primer lugar ¿tienes claro qué es el lenguaje natural?

Dediquemos unos minutos a definirlo y a conocer sus características.

Personas del mundo hablando
Imágenes de olhahladiyportfolio y Marketplace Designers en Canva

El lenguaje natural es el lenguaje humano, la lengua que un grupo o comunidad de gente ha establecido de manera espontánea para comunicarse entre ellos, transmitir pensamientos, ideas y conceptos así como para referenciar el mundo que les rodea.

Ejemplos de lenguajes naturales son los idiomas como el español, el italiano, el inglés, el japonés, las lenguas de las tribus del Amazonas, etc.

Pero, aquí siempre hablamos de algoritmos y estos son ejecutados por procesadores que entienden otro “idioma”, el lenguaje formal.

Los lenguajes formales son artificiales, han sido diseñados por los seres humanos con unas reglas específicas para un uso concreto como por ejemplo, la notación matemática, utilizada para establecer relaciones entre números y símbolos.

Llegamos a una primera conclusión: procesar el lenguaje natural con una máquina implica una traducción del primero al lenguaje de la última.

El lenguaje nos distingue del resto de seres vivos

Tengo que hacer una confesión, ¡siento debilidad por los modelos analíticos del lenguaje, por la naturaleza de los problemas que resuelven!

Y es que el lenguaje humano es una de las características más relevante, si no la principal, que nos distingue a los humanos del resto de seres vivos.

El lenguaje es una ventana a la naturaleza humana. Una de las cosas más sorprendentes que hace la mente humana es adquirir el lenguaje. Buena parte de nuestras vidas está mediada por el lenguaje: a través de él explicamos lo que sabemos, compartimos nuestro conocimiento y emociones. El lenguaje también es una manera especialmente rigurosa de entender lo que nos impulsa.

Steven Pinker. Lingüista y escritor canadiense
Modelo del motor homunculus
Modelo del motor homunculus. Museo de Historia Natural. Londres.

No se sabe exactamente cuándo empezamos a diferenciarnos del resto de animales en la forma de comunicarnos.

Parece que el lenguaje oral pudo surgir con el Homo Sapiens (120.000-150.000 años A.C) gracias en parte a un sistema bucal más desarrollado y preparado para representar un número más rico de sonidos como ilustra la imagen. Por fea que sea la representación, muestra el aspecto que tendría un cuerpo humano si cada parte, tuviera un tamaño proporcional al área del córtex cerebral involucrado en su movimiento. Es grande la lengua ¿verdad?

Humano y robot
Imagen de Smashing Stocks en Canva.

La gran capacidad de movimiento de la lengua y músculos de la boca que sólo tenemos los humanos, facilitó biológicamente la riqueza de nuestra comunicación y nos dio “superpoderes” por encima del resto de las especies.

Posteriormente, los humanos inventaron la escritura, hace unos 5000 años, y fuimos capaces de comunicar ideas a lo largo del tiempo y del espacio.

De hecho, actualmente gran parte del conocimiento de las personas está escrito y por ello hay un volumen inmenso de datos y mucha capacidad para realizar aprendizaje automático.

Componentes del lenguaje

Componentes del lenguaje

Una de las principales características del lenguaje natural es que es composicional, como el LEGO.

A partir de un número finito de palabras podemos componer infinitas frases con significados variados para describir nuestras ideas y observaciones.

Los componentes principales de la lengua son:

  • Fonética: que comprende a los sonidos de una lengua.
  • Fonología: abarca los fonemas, los sonidos de sílabas, los signos de puntuación. En general, las inflexiones sonoras del lenguaje.
  • Morfología: se encarga de la estructura de las palabras y su proceso formativo. Por ejemplo: composiciones de género: niñ-o, niñ-a; singulares y plurales: casa, casa-s, prefijos/sufijos, etc…
  • Sintaxis: formaliza la composición de frases y oraciones a partir de las palabras.
  • Semántica: estudia los significados literales de las palabras, frases y oraciones así como sus cambios a lo largo del tiempo.
  • Por último, estaría la pragmática que analiza los diferentes usos del lenguaje según contexto y trata las correlaciones y el lenguaje figurado (metáfora, ironía, etc…). Por ejemplo, “Ya es tarde.” significa que ya no hay tiempo desde un punto de vista semántico pero podría significar “Tengo hambre.” desde un punto de vista pragmático.

Resumiendo, cada lengua tiene una serie de bloques y estructuras que regulan su uso y que componen lo que llamamos el corpus de ese lenguaje (corpora en plural).

Tenemos corpus de idiomas como el inglés, español, japonés, etc… pero, también tenemos corpus de campos profesionales o académicos específicos como puede ser el lenguaje legal, el médico, artículos sobre un tema concreto en reddit etc… e incluso de lenguajes-máquina formales.

El gran volumen de composiciones de una lengua necesita una gran capacidad de procesamiento y un proceso estructurado para tratarlo. Un corpus de lenguaje sí que se puede considerar Big Data.

Principales retos a la hora de procesar el lenguaje natural.

En todos y cada uno de sus niveles nos encontramos retos a la hora de procesar el lenguaje natural por sus ambiguedad.

1. El lenguaje natural es ambiguo

Cartel con flechas

Ambigüedad fonética y fonológica (“vaca/baca”; “es conde/esconde”).

Ambigüedad morfológica (“casa” como sustantivo o verbo; “escribimos” no se sabe si lo hemos escrito o si lo estamos escribiendo).

Ambigüedad sintáctica (“El otro día vi a Pedro pescando”. El que pescaba ¿era yo o Pedro? ¿Cuál es el sujeto, verbo o predicado?)

Ambigüedad semántica (“Lucas quiere ir a un cine”: ¿a cualquier cine o a uno en concreto); sinonimia (“casa” y “morada” es lo mismo en determinados contextos); homonimia (“jota” de baile y “jota” de letra) o polisemia (“banco” para sentarse o de dinero).

Ambigüedad del discurso (“Quiero eso”, donde el significado de “eso” depende de la situación).

Ambigüedad pragmática (Los manifestantes se alejaron de los violentos porque tenían miedo” vs “Los manifestantes se alejaron de los violentos porque gritaban mucho. Aunque ambas oraciones son similares, en el primer caso, los que “tenían miedo eran los manifestantes” mientras que en el segundo caso, los que “gritaban mucho” eran los violentos)

Los humanos minimizamos los malentendidos utilizando la información del contexto y/o palabras y expresiones redundantes. Pero, ¿cómo lo hacen las máquinas? No es fácil y es uno de los campos con más foco de investigación.

La ambigüedad del lenguaje es la característica más compleja y, por ello, el entendimiento del lenguaje es difícil de modelar.

2. Volumen de lenguajes y la brecha social

Mapa lenguas del mundo
Mapa de las lenguas del mundo. Imagen de Industrius en Wikipedia bajo licencia CC BY-SA 3.2.

Otra dificultad que nos encontramos a la hora de gestionar lenguajes es la gran cantidad que hay. En 2018 se estimaron más de 7.000 lenguas vivas.

Sin embargo, por intereses económicos, hasta el momento sólo se ha trabajado en una porción limitada de éstas, principalmente el inglés y aquellas habladas mayoritariamente (español, francés, alemán, chino,…).

Para que te hagas una idea, el traductor de Google soporta en torno a 100 idiomas mientras que Alexa, el asistente virtual de Amazon, entiende únicamente 8 idiomas (inglés, francés, alemán, hindi, italiano, japonés, portugués brasileño y español).

Si te interesa conocer más, Sebastian Ruder, un referente en procesamiento de lenguaje natural (PLN), mantiene este seguimiento del avance del procesamiento de lenguaje natural en el mundo. En la lista se ve claramente que el avance del inglés aunque personalmente me sorprende el bajo desarrollo del chino. Me atrevería a decir, y es una opinión personal, que el resto del mundo no tenemos toda la información de lo que están haciendo sobre esto.

Esta situación de bajo desarrollo en muchos idiomas es uno de los principales problemas elevados por los expertos. Como explica Ruder aquí, no sólo nos enfrentamos a un problema técnico sino a uno ético, social y cultural porque estamos incrementando las desigualdades con las personas y comunidades que hablan lenguas con pocos recursos.

El lenguaje que hablas determina tu acceso a información, educación e incluso conexiones humanas

Sebastian Ruder. Why you should do NLP Beyond English. 2020.

Parafraseando también a Ruder, tener en cuenta a todos los lenguajes en el avance de la inteligencia artificial es vital para preservar lenguas y dialectos, generar aplicaciones educativas, ampliar la expansión de conocimiento, monitorizar los procesos demográficos y políticos y para una mejor respuesta ante emergencias.

Debido a ello, asegurar que los algoritmos sirvan a toda la sociedad es un campo de desarrollo apasionante en torno a modelos de lenguaje universales y a los aprendizajes mediante transferencia entre lenguas.

3. Variedades del lenguaje, una evolución continua

Variedades del lenguaje

Por último, la lengua es un elemento vivo que evoluciona continuamente:

  • Por el paso del tiempo: por ejemplo, no es igual el español medieval que el contemporáneo.
  • Según el lugar o topografía: tenemos dialectos, hablas regionales o locales.
  • Dependiendo del nivel socio-cultural: culto, medio, vulgar, jergas, lenguaje técnico o sectorial.
  • Según la situación comunicativa o registro. No hablamos igual en el trabajo que con nuestra familia y amigos.

No basta con entrenar un algoritmo o una máquina para entender un lenguaje una vez y ya está. Con este tipo de datos tenemos que estar al día de cualquier cambio en la fuente de información.

El procesamiento del lenguaje natural es muy complejo

Como conclusión, el procesamiento del lenguaje natural es especialmente complicado.

Por un lado, el lenguaje natural es ambiguo, redundante, lleno de metáforas y de frases con segundos significados frente a las máquinas que son literales y concisas.

Por otro, hay muchos lenguajes y variedades del lenguaje. Como sociedad, tenemos que mirar más allá de los beneficios económicos para no trabajar sólo en unos pocos idiomas y evitar aumentar la brecha social con las comunidades menos desarrolladas o en peligro de extinción.

En definitiva, como no es posible resolver todo de golpe se suele descomponer en tareas que se tratan de manera independiente para luego integrar en sistemas más generales.

Pero, ¿qué es el procesamiento del lenguaje natural?

Definición y origen

Si yo tuviera que definir a alto nivel qué es el procesamiento del lenguaje natural a partir de lo que hemos visto hasta ahora sería algo así:

El procesamiento de lenguaje natural (PLN) es la ciencia que transforma el lenguaje de las personas en un lenguaje formal comprensible por las máquinas.

Sobre todo, se encarga de establecer los métodos y modelos necesarios para que las máquinas puedan analizar, entender y generar nuestro lenguaje.

Los primeros trabajos de PLN se originaron en el ejército a mediados de siglo XX, buscando un sistema de traducción automática (Machine Translation o MT en inglés) entre el ruso y el inglés.

Los primeros pasos del proceso

Para tratar el lenguaje natural lo primero que hay que hacer es prepararlo para extraer estructuras que la máquina entienda.

Este proceso de preparación del texto recibe el nombre de construcción del corpus y consta de tres bloques principales: normalización, estructuración y representación.

Procesamiento de texto
  1. Normalización del texto para homogeneizarlo en mayúsculas/minúsculas, elementos auxiliares, fórmulas, números.
  2. Estructuración, identificando todos los niveles del lenguaje:

– Primero, se tokeniza o divide el lenguaje en sus mínimos componentes

– Después, se realiza un análisis morfológico y léxico para extraer las unidades más pequeñas de significado e interpretarlas (lexemas o raíces, prefijos, sufijos, plurales, singulares)

– Seguimos con un análisis sintáctico o estructura gramatical de la oración donde identificamos el sujeto, verbo, predicado.

– Continuamos con un análisis semántico que establece posibles significados de las oraciones según las interacciones entre las palabras de la oración.

– Posteriormente integramos el discurso con el contexto interpretando lo que significa una palabra u otra según la situación.

– Por último, analizamos de forma pragmática el texto global entendiendo significado a partir de información no explícita.

3. Representación en un lenguaje numérico entendible por la máquina, normalmente vectores o tensores porque son los que permiten capturar mejor las características.

Estos tres pasos son comunes, en menor o mayor medida, a todos los enfoques del proceso que vamos a ver a continuación.

Enfoques del procesamiento del lenguaje

Tradicionalmente, el procesamiento de lenguaje natural ha sido realizado mediante sistemas de reglas o estadística aunque, actualmente vivimos una nueva era basada en redes neuronales.

Sistemas de reglas, expertos o basados en conocimiento:

Son sistemas donde el lenguaje natural es traducido mediante una serie de reglas codificadas manualmente.

PLN con sistema experto
Ejemplo de un traductor automático basado en un sistema experto.
Simulador de conversación ELISA

Las primeras aplicaciones basadas en reglas fueron sistemas de traducción sencillos, como el de ruso a inglés que vimos anteriormente, o simuladores de conversación como ELIZA en la imagen.

Enseguida se vio que daban resultados muy pobres porque no eran capaces de captar las ambigüedades.

Ejemplo de parsing
Ejemplo de análisis sintáctico (parsing).

Por ello, en años posteriores se trabajó en sistemas mejorados:

A través de definiciones de gramáticas o reglas para catalogar las estructuras sintácticas (parsing en inglés).

Red semántica
Ejemplo de ontología representadas por una red semántica. Imagen de Fernando Sánchez en Wikipedia

Mediante uso de ontologías, a partir de los 70’s, o reglas para definir vocabularios por dominio de discusión (medicina, animales, etc…) compuestos por palabras y sus relaciones.

Ejemplo de tokenización
Ejemplo de tokenización

Con representaciones simbólicas, desde los 80’s, donde el texto se divide en unidades más pequeñas sin significado (normalmente palabras y puntuación) que reciben el nombre de tokens (tokenization en inglés). Después, añadimos reglas para agrupar los token en bloques que luego relacionamos (de nuevo manualmente) entre sí.

Reglas, reglas y reglas. Cada vez surgían reglas más complejas, difíciles de codificar, procesar y de mantener por los expertos.

Sistemas basados en estadística:

La complejidad motivó que se buscaran otros enfoques como los sistemas basados en estadística o aprendizaje automático.

En estos sistemas hay dos fases: una de entrenamiento, donde la máquina aprende y otra de ejecución donde la máquina realiza la tarea.

PLN con aprendizaje automático
Ejemplo de flujo de entrenamiento de un sistema de procesamiento de texto basado en aprendizaje automático.

Inicialmente esta aproximación se llamó enfoque estadístico porque estaba basado en modelos probabilísticos. En estos sistemas, la máquina “extrae” patrones automáticamente a partir de grandes grupos de datos mediante cálculo de probabilidades u otras técnicas de aprendizaje automático o aprendizaje profundo que luego utiliza para realizar la tarea.

En decir, cambiamos alguna manualidades por información extraída automáticamente de los datos aunque, seguían necesitando soporte humano para construir corpus y para la validación, con lo que, aunque mejores, siguen siendo difíciles de implementar y mantener.

– Sistemas basados en redes neuronales

Con la reaparición de las redes neuronales en los 80’s y 90’s del siglo pasado empezaron a primar los sistemas basados en aprendizaje profundo que permiten realizar análisis más complejos, captar mejor las ambigüedades y variedades de la lengua y conseguir mejores métricas y rendimiento.

Por ello, es el enfoque usado mayoritariamente hoy en día.

– Sistemas híbridos

En cualquier caso, nada es blanco o negro y, al final, lo normal es encontrarnos con escenarios híbridos donde las redes neuronales se utilizan en la mayor parte del proceso, pero se apoyan en representaciones o reglas basadas en conocimiento para enriquecer el sistema global con:

Gramáticas y diccionarios base que complementan el punto de partida de aprendizaje de los sistemas.

– Soporte de los expertos del dominio que son los que conocen las especificidades de su área de conocimiento para anotación de datos y para validar los resultados inferidos por la máquina o para clasificar los textos que la máquina utiliza en su entrenamiento. Por ejemplo, siempre es mejor involucrar a los agentes del centro de soporte de llamadas de tu negocio cuando quieras diseñar un chatbot que conteste directamente las peticiones de los clientes.

Reglas para algunas tareas de procesamiento de texto como la tokenización o el análisis sintáctico de la conversación (nombres, artículos, verbos), etc…

Tareas del procesamiento de lenguaje natural

Independientemente del enfoque, para comernos el elefante que es el PLN hay que partirlo en elementos manejables o tareas.

Las tareas se agrupan en tres grandes bloques: procesamiento, entendimiento y generación de lenguaje.

NLP vs NLU vs NLG
Procesamiento, Entendimiento y Generación de lenguaje natural.

PLN – Procesamiento

Es el que da el nombre a esta disciplina en el sentido más amplio y además, comprende las tareas que se encargan de traducir el lenguaje natural a lenguaje máquina:

  • Análisis morfosintáctico (PoS tagging en inglés) que etiqueta las palabras según su papel sintáctico (adverbio, sustantivo, verbo)
  • Chunking o parseado poco profundo (shallow parsing) que asigna una etiqueta según los grupos relacionados sintácticamente en los que se divide el texto (sujeto, verbo, predicado).
  • Reconocimiento de entidades (Named Entity Recogition o NER) que identifica los elementos de las frases en clases de objetos (“persona”, “sitio”, “animal”, “compañía”).

ELN – Entendimiento

Ejemplo de intent and entity
Ejemplo de “intentos” y “entidades”.

El entendimiento del lenguaje natural o ELN (Natural Language Understanding o NLU en inglés) es un subconjunto del PNL enfocado en tareas de lectura e interpretación del lenguaje humano.

Reconoce “intentos” (verbos), “entidades” (nombres o contenido de una acción) y sentimientos/opiniones.

Los términos PLN y ELN se usan indistintamente en muchas ocasiones.

ELN incluye las tareas de estructuración semántica de las entidades y de desambiguación del significado del lenguaje:

  • Etiquetado semántico (semantic parsing)
  • Desambiguación semántica (word sense disambiguation)
  • Palabras relacionadas semánticamente o sintácticamente (similaridad): predice si dos palabras están relacionadas semánticamente o sintácticamente .
  • Traducción automática (machine translation). Este, junto con los modelos de lenguaje natural, es una de las tareas insignia en el desarrollo del PLN.
  • Búsqueda de respuestas (question understanding)
  • Reconocimiento del habla (automatic speech reconition)
  • Análisis de opiniones (sentiment analysis)
  • Extracción de información (information extraction)
  • Resumen de texto (text summarization)
  • Clasificación de textos (text clasification)

GLN – Generación

La generación del lenguaje (Natural Language Generation o NLG en inglés) es también un subconjunto de PLN y se encarga de escribir texto a partir de información estructurada en un proceso de ELN.

Las principales tareas que comprende son:

  • Generación automática de texto (text generation)
  • Bolsa de palabras (Bag of Words): es un modelo muy burdo de lenguaje que infiere palabras y relaciones independientemente de su posición en el texto.
  • Modelos de lenguaje (language models) que calculan la probabilidad de la siguiente palabra a partir de las palabras anteriores. Es otra de las tareas insignia de PLN. Seguro que se te han venido a la cabeza los teclados inteligentes, ¿verdad?
  • Respuesta a preguntas (question answering)

En definitiva, según el tipo de uso que estemos implementando, realizaremos una o varias tareas y el caso será más o menos complicado.

Pero antes de seguir te recomiendo que le vuelvas a echar un vistazo al seguimiento de Sebastian Ruder sobre el progreso de PLN aquí. ¿A que ya te van sonando las cosas un poco más?

Como puedes ver, los avances actuales van en la línea de realizar cada vez mejor las tareas que acabo de mencionar, junto con otras que van surgiendo según se van resolviendo las anteriores y evolucionando en la disciplina.

Y precisamente de esto voy a hablar a continuación, de evolución.

Historia contemporánea del procesamiento de lenguaje natural

Sin duda, los mayores impulsores del procesamiento del lenguaje natural han venido de la mano de las redes neuronales. Por ello, todos los métodos que vamos a ver a continuación se engloban dentro del campo del aprendizaje profundo y aparecen como hitos principales en el siguiente cronograma.

Historia de PLN con redes neuronales
Historia contemporánea del PLN. Basado en A Review of the Neural History of Natural Language Processing

Primer modelo de lenguaje basado en una red neuronal multicapa

El primer modelo basado en una red neuronal fue un modelo de lenguaje que se utilizó para predecir palabras en los teclados inteligentes o en respuestas automáticas a correos electrónicos.

Estaba basado en una red neuronal básica multicapa que calculaba la probabilidad de la siguiente palabra en función de las palabras previas utilizando cadenas de Markov:

La probabilidad de una secuencia de palabras es equivalente al producto de las probabilidades de cada palabra.

Los modelos de lenguaje son la base de otros avances como las representaciones de palabras mediante word embeddings y los transformers que veremos más adelante.

Aprendizaje multitarea

Entrenamiento multitarea
Entrenamiento multitarea. Imagen inspirada en An Overview of Multi-task Learning in Deep Neural Networks

El siguiente hito fue el aprendizaje multitarea (Multitask learning o MTL en inglés) que consiste en compartir parámetros entre modelos entrenados para realizar diferentes funciones y así generalizar mejor los resultados.

Como dice Rich Caruana en su publicación Aprendizaje multitarea: una fuente de sesgo inductivo basado en conocimiento:

El aprendizaje multitarea mejora la generalización apoyándose en la información del dominio específico obtenida entrenando tareas relacionadas.

Rich Caruana. Investigador senior en Microsoft Research

En realidad, cuando nos centramos únicamente en el entrenamiento de un modelo, podemos estar perdiendo información relevante que podríamos conseguir aprendiendo de otras tareas.

Si nos fijamos, esto tiene sentido porque los humanos aprendemos extrapolando información de tareas más pequeñas hacia otras más complejas. De hecho, lo vemos observando cómo aprenden los bebés, primero reconociendo caras y a partir de ahí, identificando otros objetos más complicados.

Y esto, es lo que busca resolver el aprendizaje multitarea, mejorar el conocimiento mediante transferencia inductiva de un modelo a otro (transfer learning en inglés).

El aprendizaje multitarea ha sido precursor de otros modelos de aprendizaje inductivo como las representaciones de palabras mediante word embeddings y los lenguajes universales.

Revolucionando el PLN con los modelos word2vec

La siguiente parada está el mundo de la representación del texto mediante word embeddings. Para entenderlo vamos a ver cómo se hacía antes y cómo se hace ahora.

El antes

Tradicionalmente, las representaciones de las palabras para que las entendieran una máquina se realizaban mediante conjuntos o vectores de “0s” y “1” donde la posición del “1” identifica la palabra.

One hot enconding
Ejemplo de representación vectorial de palabras localistas o discretas.

El problema es que es una solución poco eficiente porque necesita tantos “0s” y “1” como palabras en el diccionario y además no incluye información semántica o de relación con otras palabras (similaridad).

Para conseguir cierto conocimiento semántico, se utilizan diccionarios, ontologías o matrices de coocurrencia de términos. Pero, estos diccionarios los tienen que generar expertos y por ello son muy complicados de mantener, normalmente no están actualizados, no son completos y son ineficientes.

Ahora: word embeddings

Con el procesamiento profundo moderno se empiezan a utilizar otro tipo de representaciones de palabras que se basan en la propiedad de semántica distribuida, donde el significado de una palabra viene dado por grupos de palabras que aparecen frecuentemente cerca de ella en el espacio vectorial donde se representan.

Deberías conocer una palabra por la compañía que tiene.

J.R. Firth. Lingüista. 1957

Aparecen los word embeddings que reciben el nombre de su distribución (o embedding en inglés) en un espacio multidimensional.

En la práctica, los word embeddings son otro tipo de vectores que contienen, además, la probabilidad de que la palabra que estamos representando aparezca cerca de otras palabras como se ve en la imagen.

Word embedding
Ejemplo de word embedding.

El vector de la imagen es ilustrativo ya que normalmente tienen unas 300 dimensiones para asegurar mejores resultados. Puede parecer un tamaño grande pero si lo ponemos en contexto con las representaciones anteriores que necesitaban un tamaño mínimo del volumen del diccionario que estuvieran representando (por ejemplo 10.000 palabras en el de la RAE), son mucho más eficientes y con mayor información.

Word2vec

El auge de los word embeddings vino de la mano de word2vec que es la implementación propuesta por el equipo de Google liderado por Mikolov en 2013.

relaciones word2vec
Ejemplo de relaciones capturadas por word2vec. Inspirado en el estudio de Mikolov et al. con palabras equivalentes en inglés.

Su éxito radica en su mejor rendimiento y resultados por:

– Una arquitectura más óptima.

El uso de estos vectores como inicialización de otras tareas de PLN, mejora mucho el rendimiento en la red neuronal.

– Tiene en cuenta contexto adicional, ya que considera las palabras de antes y después para generar el vector.

– Puede inferir relaciones entre palabras similares porque se pueden calcular palabras a través de una simple fórmula aritmética.

Parece magia pero no lo es. Es la semántica distribuida.

Arquitecturas COBW y skip-gram
Arquitecturas COBW y skip-gram de Mikolov et al. (2013)

Estos modelos son del tipo “bolsa de palabras” porque se calculan sin tener en cuenta la posición de la palabra en el texto. Simplemente consideran las palabras anteriores y posteriores.

Hay dos tipos de arquitecturas de word2vec:

  • CBOW (Continuous Bag Of Words o bolsa continua de palabras en español) donde el objetivo es calcular la palabra central dentro de un grupo de palabras anteriores y posteriores.
  • skip-gram donde el objetivo es encontrar las palabras colindantes a partir de la palabra central.

Tras el éxito de word2vec aparecieron otras técnicas similares como GloVE de Pennington et al. que además del contexto cercano, tiene en cuenta la matriz de coocurrencia y mejora algo el resultado.

A pesar de que word2vec no es perfecto por problemas de sesgo, se sigue utilizando por la eficiencia que aporta al proceso global de aprendizaje.

Además, tiene algunas aplicaciones realmente interesantes para:

  • Aprender representaciones de frases, no solamente de palabras.
  • Transferir aprendizaje entre lenguas, extrapolando los valores del entrenamiento de un lenguaje a otro sin entrenar, lo que abre caminos interesantes para el desarrollo de lenguajes con pocos recursos y la traducción no supervisada.

Problemas de transducción

Los word embeddings es uno de los primeros y más simples modelos de aprendizaje de transferencia inductiva, pero, hay otro tipo de problemas también relevante, la transducción.

Un problema de transducción en el campo del aprendizaje automático (transduction en inglés) consiste en mapear una secuencia de entrada con una secuencia de salida.

La principal diferencia es que, mientras el aprendizaje inductivo es no supervisado y busca aprender de cero a partir de relaciones en los datos que nadie ha apuntado, con el aprendizaje por transducción construimos modelos supervisados, proporcionando patrones conocidos en los datos para que el algoritmo aprenda durante el entrenamiento y la pruebas.

Dentro de las aplicaciones de la transducción tenemos:

– La transliteración, que consiste en producir palabras en un formato objetivo a partir de un formato original.

– Los correctores ortográficos, que generan una palabra correcta gramaticalmente a partir de una palabra con errores ortográficos.

– La traducción automática, que produce una secuencia de palabras en un idioma dada una secuencia ejemplo en otro idioma original.

– El reconocimiento de voz, que genera secuencias de texto dada una secuencias de audio.

– La síntesis de voz, o text-to-speech que produce audio dada una secuencia en texto.

El método que veremos a continuación fue durante un tiempo la referencia para resolver problemas de transducción.

Modelos secuencia a secuencia

Estamos en 2014 y, de nuevo, un equipo de investigación de Google enfocado en mejorar los sistemas de traducción automática se apoya en los modelos de lenguaje para proponer un marco de trabajo para el aprendizaje secuencia a secuencia (sequence to sequence en inglés o seq2seq).

Modelo seq2seq
Modelo seq2seq inspirado en Understanding Encoder-Decoder Sequence to Sequence Model. Nota: tanto el codificador como el decodificador están compuestos por una única RNN cada uno. Cada caja representa un paso dentro del proceso de la RNN.

El modelo seq2seq consiste en ir procesando el lenguaje de “izquierda a derecha” a través de dos módulos:

– Un codificador que procesa la secuencia palabra a palabra y una vez termina, genera un último vector con toda la información.

– Un decodificador que predice y genera la salida también palabra a palabra a partir del vector que le envía el codificador.

– En cada paso, el modelo tiene en cuenta la palabra anterior para generar la siguiente.

Las redes neuronales usadas son las recurrentes (RNN), normalmente en sus versiones con memoria como la red LSTM o similares (Gated Recurrent Network o GRU en inglés).

Esta arquitectura codificador-decodificador ha resultado ser la óptima para resolver problemas de transducción y su ventaja es que la secuencia decodificada puede tener una longitud distinta que la de entrada con lo que consigue reproducir mejor el mundo real.

Además, el decodificador no está limitado a estructuras secuenciales. También puede tratar otro tipo de representaciones multimodales como imágenes, tablas, código y con ello sirve para aplicaciones como anotación de imágenes o generación de texto directamente de una tabla.

El problema es que las redes neuronales recurrentes tienen una serie de problemas

1) No funcionan bien para sentencias muy largas e interacciones no lineales.

Por un lado, los textos muy largos tienen problemas de desvanecimiento de gradiente que paran el entrenamiento del modelo.

Por otro lado, les cuesta aprender correferencias entre entidades muy distantes en un texto, es decir, no modelan bien el contexto real donde hablamos y pensamos de forma no-lineal.

En un ejemplo muy simplificado: predecir la siguiente palabra de la frase “las olas del …“, es fácil, no necesito más contexto. Se que la siguiente palabra va a ser “mar” porque el nombre inmediatamente anterior es “olas”.

Sin embargo, si quiero saber la última palabra del texto: “Vivo en Madrid en una casa orientada hacia el este. El momento del día en que tengo más luz es por las …” lo tengo más complicado. Sé que busco un momento del día porque está muy cercana a esas palabras pero para saber que la palabra que busco es “mañanas”, tengo que irme bastante hacia atrás para encontrar “Madrid” y “este” e identificarla correctamente. Esto es lo que llamamos un problema no lineal.

Las redes LSTM corrigen en parte los problemas de desvanecimiento de gradiente aunque siguen teniendo problemas en contextos muy largos con palabras muy distantes.

2) No son paralelizables con lo que complica el entrenamiento de corpus de datos muy grandes.

Afortunadamente los científicos de datos han encontrado una solución como veremos a continuación.

Todo lo que necesitas es atención

El mecanismo de atención nos resuelve la primera limitación y es la base de una arquitectura transformer que soluciona la segunda.

La atención (attention en inglés) aparece en 2015 de la mano de Bahdau et al e inmediatamente se convierte en uno de los avances clave dentro del campo del procesamiento de lenguaje natural.

Sin entrar en mucho detalle técnico, con este mecanismo, el decodificador tiene acceso a todos los estados ocultos del codificador, no solamente al último como ocurría en el modelo seq2seq.

La idea que hay detrás es que puede haber información relevante en cada palabra de la sentencia con lo que el decodificador tiene que tener en cuenta cada palabra de la entrada para ser preciso.

Giuliano Giacalia en How Transformers Work.

¿Cómo funciona?

Mecanismo de atención
Ejemplo de mecanismo de atención en un modelo seq2seq.

Primero, el decodificador pide al codificador toda la información relacionada con la palabra que está prediciendo en ese momento.

Para ello, el codificador calcula un valor, la atención, ponderando similitud y distribuciones de probabilidad de todos sus estados en relación con la palabra solicitada por el decodificador.

Cuando recibe la información solicitada, el decodificador compone un nuevo estado con su información inicial más la información de valor de atención recibido y genera la palabra de la secuencia de salida más probable.

Este proceso se repite iterando sobre toda la secuencia hasta el símbolo de fin de secuencia.

Es un mecanismo muy inteligente porque “rompe” la linealidad de la cadena y consigue incluir información de todos puntos de la cadena de entrada, independientemente de las distancia entre palabras.

¡Ya tenemos una forma de tratar secuencias largas y relaciones entre palabras distantes!

Google actualizó todo su traductor con un modelo seq2seq con mecanismo de atención en 2016.

Y es que el mecanismo de atención es maravilloso

  • Mejora significativamente los resultados de las predicciones porque consigue más información del contexto de la palabra.
  • Facilita un proceso de generación de lenguaje similar a como hablamos los humanos, no tan lineal.
  • Resuelve mejor el problema de desvanecimiento de gradiente ya que recorta los caminos hacia estados de la red más lejanos.
  • Proporciona cierta interpretabilidad. Es menos “caja negra” porque tenemos más información sobre relaciones entrada-salida del sistema.

En realidad podemos ver este mecanismo de atención como un tipo de gestión de la memoria dentro de la red neuronal donde las palabras son la memoria y el estado del decodificador junto con la atención componen el puntero donde buscar información en cada momento.

Además, la atención no está limitada al procesamiento del lenguaje y se ha convertido es una técnica de uso general dentro del aprendizaje profundo con aplicaciones en otros campos como el de la visión (computer vision en inglés) o biomedicina por ejemplo.

Transformers

El problema es que la atención no resuelve los problemas de rendimiento con grandes grupos de datos y, es aquí, donde llegamos al título de la sección anterior, que no me he inventado yo.

“Atención es todo lo que necesitas” es como el equipo de Google Brain nombró a la publicación que demostró que: una arquitectura secuencia a secuencia paralelizable llamada Transformer, consigue mejores resultados que otras con redes neuronales recurrentes o LSTM para tareas de transducción.

Nos volvemos a encontrar a Google detrás de esta innovación. Y es que la empresa californiana es especialmente activa en el ámbito de la transducción ya que es la base de muchas de sus aplicaciones como el traductor automático, el asistente virtual, el traductor simultáneo, el buscador, etc…

A continuación, te cuento de forma sencilla la arquitectura transformer aunque si quieres más detalle, no dejes de leer la publicación Attention is all you need.

Arquitectura transformer
Estructura codificador-decodificador de la arquitectura transformer.

La arquitectura transformer se basa en una estructura codificador-decodificador que permite la paralelización.

Está organizada en capas de codificadores y decodificadores donde cada nivel calcula unas características del lenguaje, desde el más bajo (morfológico o léxico) hasta el más abstracto (semántico y pragmático).

Es decir, cada capa va completando información del texto hasta completar los diferentes niveles lingüísticos.

En la publicación inicial que dio pie a esta arquitectura, el número de capas tanto de codificadores como de decodificadores era seis aunque no hay limitación y se pueden añadir muchas más para conseguir modelos más potentes.

Veamos los diferentes elementos de la arquitectura.

1. Tipos de atención

El elemento principal de codificadores y decodificadores es el mecanismo de atención que es de tres tipos a lo largo del transformer:

Tipos de atención
Tipos de atención.

Atención codificador-decodificador o atención cruzada: es equivalente a la que ya hemos visto y es la forma en que el decodificador le pide información de contexto al codificador.

Auto-atención del codificador (self-attention en inglés): cada palabra mira a todo el resto de representaciones de entrada para completar su información.

Auto-atención enmascarada del decodificador (Masked self-attention en inglés): cada palabra mira sólo a las palabras anteriores para completar su información. El resto de palabras posteriores se enmascaran porque, por principio, en un proceso de entrenamiento a aprendizaje automático no puedes incluir la información que quieres predecir.

El mecanismo de auto-atención se calcula de manera similar al de atención pero dentro de la misma secuencia, ya sea la de entrada en el codificador o la de salida en el decodificador.

Ejemplo de atención
Ejemplo de mecanismo de auto-atención en un codificador.

La clave de la auto-atención está en implementar el mecanismo de atención de forma independiente a una red neuronal recurrente.

Para ello, el cálculo se realiza a través de unas matrices con claves, peticiones y valores a partir de la secuencia inicial.

Cada valor corresponde a una palabra del contexto, la clave identifica a la palabra dentro del contexto a la que se da un peso en función de la similitud con la palabra sobre la que se hace la petición de codificación o decodificación.

En el ejemplo de la imagen, el codificador genera una nueva representación de la palabra de entrada “María” (petición) con información de su contexto. Cada palabra del entorno se pondera por su similitud con la palabra “María”, color más intenso si es más similar (María en este caso) y más tenues el resto.

En resumen, el proceso de auto-atención devuelve información de la palabra y de su contexto.

2. Atención “Multihead

La auto-atención se enfoca en las palabras como mayor similitud a la palabra de entrada pero, podemos querer conocer otras relaciones dentro del contexto.

Esto se resuelve con el mecanismo de atención “multihead” , algo así como multi-cabezal en español.

Ejemplo de auto-atención multihead
Ejemplo de funcionamiento de atención multihead.

Cada “head” o cabezal se “especializa” en calcular la auto-atención de la palabra en función de un tipo de relación dentro del contexto.

Por ejemplo, una relación puede ser el sujeto o ¿quién?, otra relación puede ser la acción o ¿hizo?, otra relación el objeto o ¿qué?.

Los cabezales permiten paralelizar el procesamiento de la información de contexto, que se concatena en un vector único hacia el siguiente módulo del transformer.

Aunque en la publicación original “Attention is all you need” se consideraron 8 cabezales, es un valor configurable. En el ejemplo tenemos 3 cabezales (azul, rosa y amarillo). El cabezal azul establece relaciones de las palabras con el sujeto, el rosa con el verbo o intento y el amarillo con el objeto o predicado.

3. Otros bloques y trucos de la arquitectura transformer

El principal bloque sin duda es la auto-atención pero para que un transformer funcione se necesitan algunas cosillas más:

1. Información de posición

Al procesar el texto en paralelo se pierde la información secuencial que como todos sabemos es imprescindible para que el lenguaje tenga sentido.

Esto se resuelve añadiendo vectores de posición a la representaciones de entrada. En términos lingüísticos estamos añadiendo un sesgo inductivo (inductive bias en inglés).

2. Redes neuronales multicapa

El mecanismo de auto-atención se calcula mediante productos y sumas de sus componentes, lo que genera una salida lineal.

Pero, para que un aprendizaje con redes neuronales funcione correctamente necesitamos añadir no linealidades. En este caso, lo conseguimos a través de una red neuronal multicapa o FNN (feed forward network en inglés).

3. Residuo y normalización

El ajuste de una red neuronal consiste en una negociación entre los parámetros de la red.

Los transformers no son diferentes y en su primera implementación, el entrenamiento necesitó varias iteraciones y algunos trucos para conseguir los valores óptimos:

  • Conexiones residuales: se consigue mejorar el mínimo de la función de pérdida entrenando únicamente con el residuo (diferencia en una capa y la anterior).
  • Normalización: normalizar los vectores de entrada por la media y desviación estándar ayuda a entrenar más rápido porque elimina valores sin información en las capas intermedias.

4. Uniendo las piezas

Arquitectura transformer completa
Arquitectura transformer en detalle.

El esquema del dibujo se utilizó la primera vez para modelos de lenguaje aunque es una arquitectura agnóstica a la tarea y se puede utilizar para otros usos como visión por ordenador, generación de código, secuenciar proteínas en biomedicina, etc…

De hecho, Google la está utilizando de manera extendida en sus diferentes productos.

Para mí, el transformer es clave en PLN. Está en el núcleo de los mayores avances actualmente y es la base del último gran hito que os voy a contar: los lenguajes pre-entrenados universales.

Grandes modelos de lenguaje

Actualmente estamos viviendo una auténtica explosión en el desarrollo del procesamiento del lenguaje natural con nuevos modelos que superan a los anteriores con meses de diferencia.

A modo ley de Moore, el indicador de progreso que muestra el avance en este campo es el número de hiper-parámetros procesados.

Como vemos en el cronograma, que representa el avance hasta noviembre de 2021, en dos años hemos pasado de procesar centenas de millones de hiper-parámetros a centenas de billones (unidades americanas).

Modelos universales de lenguaje

El porqué de los grandes modelos de lenguajes

Los grandes modelos de lenguajes buscan solucionar tres grandes problemas:

1. Acercarse a una inteligencia artificial generalizada y a la forma de aprender de los humanos: paradigma de aprendizaje por transferencia.

El concepto de aprendizaje por transferencia lo hemos visto en los modelos multitarea y consiste en utilizar los resultados de entrenamiento de un modelo para resolver otras tarea diferente.

2. Preentrenamiento a partir de grandes conjuntos de datos.

Las redes neuronales se comportan de una forma u otra dependiendo de la inicialización del entrenamiento. Si inicializamos una red neuronal con los parámetros obtenidos a partir del pre-entrenamiento (supervisado, no supervisado, auto-supervisado) de estos grandes modelos lenguaje, conseguimos algoritmos mejores.

Además, al pre-entrenar con tanta información, se encuentran relaciones en los datos sin necesidad de tantos y costosos recursos para etiquetar los datos.

3. Arquitecturas óptimas y agnósticas al tipo de tarea: los transformers.

Ya no necesitamos configurar una red neuronal específica para cada tarea sino que la misma arquitectura, en torno al mecanismo de auto-atención, puede tratar: textos, responder a preguntas, clasificar lenguaje, resumir documentos, traducirlos a otros idiomas, clasificar imágenes, generar código y mucho más.

Un gran modelo de lenguaje en acción

Ejemplo de funcionamiento de lenguaje preentrenado
Ejemplo de funcionamiento de lenguaje pre-entrenado. Inspirado en ejemplo de Stanford CS224N NLP with Deep Learning | Winter 2021 | Lecture 14 – T5 and Large Language Models.

Un ejemplo de uso de un modelo de lenguaje pre-entrenado para realizar una tarea de análisis de sentimientos es el que vemos en la imagen:

  • Primero coge un gran bloque de texto “general” sin etiquetar (como este extracto en verde del libro Exponencial de Azeem Azhar).
  • Segundo, realiza un pre-entrenamiento o aprendizaje no supervisado (auto-aprendizaje). En este ejemplo, enmascaramos algunas palabras de manera aleatoria y entrenamos el algoritmo para que las identifique.
  • Por último, se utilizan los parámetros obtenidos en el pre-entrenamiento para inicializar otro modelo que se entrena para la tarea que queremos resolver. En el ejemplo, entrenamos el modelo para hacer un análisis de sentimiento a partir de un texto.

En general, un modelo pre-entrenado aprende representaciones y patrones del contexto (in-context learning en inglés) que luego se utilizan en tiempo de ejecución de una tarea concreta, para así reconocerla más rápidamente.

Formas de aprender una tarea

Ajuste paramétrico en pre-entrenamiento
Ajuste paramétrico en modelos pre-entrenados.

Hay cuatro formas de utilizar la información obtenida durante el pre-entrenamiento de un gran modelo de lenguaje para la ejecución de una tarea concreta:

  • La primera, es la forma tradicional que consiste en un ajuste fino supervisado (fine tuning en inglés) del modelo que ejecuta la tarea: es el que hemos visto en el ejemplo anterior. Se inicializa el modelo con los parámetros obtenidos en el pre-entrenamiento que se optimizan, a través de un conjunto de datos de entrada etiquetado, para el objetivo que nos hemos fijado.
  • Las tres siguiente son mediante aprendizaje a través del contexto:
    • Con unas pocas muestras de ejemplo (few-shot en inglés): se utilizan los parámetros obtenidos durante el pre-entrenamiento y se proporciona una descripción de la tarea a realizar y unos pocos ejemplos del objetivo que queremos que infiera. No se reajustan los parámetros
    • Con una sola muestra de ejemplo (one-shot en inglés): es equivalente al anterior pero solo se le presenta un ejemplo. Esta variante se ha analizado diferenciada de la anterior porque es similar a como aprendemos los humanos a hacer ciertas tareas: dando una muestra y pidiendo que se replique (por ejemplo: completar un formulario).
    • Sin ninguna muestra (zero-shot en inglés): es equivalente a los anteriores aunque en este caso no se muestra ningún ejemplo, solo la definición de la tarea que se quiere resolver. Este método es menos preciso pero es interesante porque se consiguen inferencias más robustas, ya que no estamos sesgando hacia ningún resultado concreto. A pesar de todo, es el más complicado de realizar.

Por el momento, en general, casi todos los grandes modelos de lenguaje se ajustan posteriormente mediante el método tradicional y alguno, además, a través de contexto. Sólo GPT3 lo hace únicamente a través de contexto.

Tipos de arquitectura

Aunque no es necesario configurar redes neuronales específicas porque la arquitectura se desarrolla en torno al mecanismo de auto-atención, existen tres tipos de transformers, con diferentes beneficios según la tarea que se quiera resolver:

Tipos de transformers

Transformer Decodificador: construye modelos de lenguaje, entendiéndolos como los que predicen la siguiente palabra de una secuencia. Son autorregresivos porque sólo miran el pasado, no tienen información del contexto futuro.

Son los mejores para construir frases o sentencias completas.

A este tipo pertenecen los modelos GPT1, 2 y 3 (Generative Pretrained Transformer en inglés).

Transformer Codificador: es bidireccional, ve el contexto pasado y el futuro. Para entrenarlo hay que enmascarar palabras para predecir (ejemplo de funcionamiento de lenguaje pre-entrenado pre-entrenado anterior).

En general son más complicados que los transformer decodificadores pero son los mejores para generar buenas representaciones y encontrar su similitud dentro del contexto, o para tareas tipo pregunta-respuesta donde quiero relacionar dos bloques de texto separados.

A este grupo pertenecen los modelos BERT y todos los modelos derivados.

Transformer Codificador-decodificador: se beneficia de lo bueno de los dos mundos: construir buenas representaciones para generar lenguaje.

Funcionan también muy bien para contestar preguntas a partir del contexto.

A este bloque pertenece el modelo T5 (Text-To-Test-Transfer-Transformer).

El presente y futuro del procesamiento de lenguaje natural

Con este tipo de modelos hemos conseguido representaciones del lenguaje más potentes, mejor inicialización de parámetros de otros modelos y generación de secuencias de lenguaje más aproximadas a la realidad.

Aunque tienen margen de mejora, sobre todo en tareas de entendimiento del lenguaje como en síntesis de textos, aplicación de sentido común o la comprensión lectora.

Lo positivo es que al haber construido estos modelos basándonos únicamente en el lenguaje, se abren oportunidades de investigación interesantes con otros dominios de conocimiento como puede ser la imagen o vídeo u otras interacciones con el mundo real que tenemos las personas.

Desafortunadamente, son auténticos modelos caja negra. Cuando se entrena con tantos datos y los sistemas van aprendiendo del contexto dejamos de saber realmente por qué toman algunas decisiones.

Esto conlleva riesgos como el tratamiento que hacen de los sesgos y estereotipos que encuentren en los datos. Por ello, la interpretabilidad de los resultados es uno de los campos donde más esfuerzo se está realizando actualmente.

Otra limitación que tienen es que el pre-entrenamiento es muy caro. Sólo grandes empresas u organizaciones pueden hacerlo de manera práctica y puede ser complicado llevarlos a producción. Para que te hagas una idea, en noviembre de 2021, una única ejecución de entrenamiento de GPT3 cuesta en torno a 5 millones de dólares ¡¡¡y recuerda que el entrenamiento es un proceso iterativo!!!.

Aunque, siempre nos queda el premio de consolación porque lo que sí está al alcance de todos es ajustar los parámetros a las tareas específicas que queramos realizar. Al final, el proceso se reduce a pre-entrenar una vez y ajustar tantas veces como necesites.

Aplicaciones en el mundo real

La verdad es que con las tareas que hemos ido viendo, las aplicaciones de estos sistemas se nos ocurren de manera natural:

  • Predictores de texto que facilitan la generación de contenidos para redes sociales o libros o incluso para la elaboración de otros tipo de documentos tipo curriculum.
  • Correctores gramaticales.
  • Respuestas de los motores de búsqueda.
  • Asistentes virtuales para responder preguntas en centros de atención al cliente o en los de voz cada vez más extendidos en nuestros hogares.
  • Automatización de procesos de resolución de incidencias extrayendo información de conversaciones y eventos pasados, realizando categorías y generando respuestas repetitivas.
  • Un proceso similar al anterior sirve para detectar correo no deseado a partir de palabras o expresiones, y tomar acción (eliminarlo, marcarlo o archivarlo).
  • Realización de resúmenes o extractos de texto para publicación de contenidos o elaboración de documentos en otros formatos.
  • Sistemas de traducción automática y traducción simultánea
  • Conversores de voz a texto y viceversa.
  • Generación de recursos para lenguas de pocos recursos y así evitar su extinción.
  • Incluso con el potencial visto con modelos como GPT3 aparecen usos que implican otras áreas como: desarrollo de código ejecutable a partir de órdenes lenguaje natural en programación o generación de cadenas proteicas o de otros compuestos en biomedicina.

TL;DR:

El procesamiento de lenguaje natural es el campo dentro de la inteligencia artificial que se encarga de establecer los métodos analíticos necesarios para que las máquinas puedan tratar, entender y generar nuestro lenguaje.

El principal objetivo es habilitar usos relacionados con el habla y la escritura como son la generación de texto; la síntesis del lenguaje; los correctores gramaticales; los buscadores de información; los traductores automáticos y simultáneos; los asistente virtuales etc…

Más recientemente, están evolucionando hacia aplicaciones en otras áreas como es el desarrollo software con la generación automática de lenguaje de programación o la biomedicina para síntesis de cadenas de proteínas.

Es una disciplina complicada de desarrollar porque el lenguaje es ambiguo a todos los niveles, con lo que resulta especialmente difícil de traducir al lenguaje formal de las máquinas.

A lo largo de la historia ha habido varios enfoques ya sea basados en reglas o en estadística. Aunque ha sido con el resurgir de las redes neuronales a finales del siglo pasado, especialmente con las redes neuronales recurrentes, cuando se han empezado a ver avances relevantes.

Dentro de los principales hitos caben destacar tres:

  • las representaciones más potentes del lenguaje mediante vectores multidimensionales o word embedding que incluyen información de palabras similares.
  • la arquitectura transformer basadas en mecanismo de auto-atención que ha conseguido mejores resultados y un mejor aprovechamiento de los recursos de procesamiento.
  • los modelos pre-entrenados universales como BERT, T5 o GPT3 que son capaces de aprender el contexto a partir de grandes volúmenes de datos y habilitan la transferencia de conocimiento a otros modelos para realizar tareas específicas sin necesidad de tantos recursos.

Hemos dado un paso más hacia una inteligencia artificial universal con modelos que se empiezan a parecer un poco más a los humanos, extrapolando información de tareas conocidas a otras nuevas o más complejas.

Además, abren oportunidades para procesar y mantener lenguas menos habladas y en peligro de extinción y con ello hacia una sociedad más igualitaria.

Por último, esta tecnología no está exenta de riesgos. El auto-aprendizaje puede amplificar todo tipo de sesgos y estereotipos raciales, sexuales o religiosos que se encuentran en los datos. Por ello es una de las disciplinas donde más esfuerzo se realiza en la interpretación de los resultados.

Me voy ya porque creo que ya está bien por hoy.

Espero que este repaso haya servido para poner algo de contexto a todo el bombardeo de noticias y publicaciones sobre el tema que vivimos actualmente.

Y si has llegado hasta aquí, mil gracias. Espero que hayas disfrutado y si te ha gustado, compártelo en redes y dímelo en comentarios.

Te espero en las siguientes entregas de «La época de la información» donde hablaré de métricas y de cómo evaluar nuestros modelos.

Referencias

Antes de irme te dejo esta selección de artículos y vídeos sobre este tema:

Recuerda que si el vídeo está en inglés, Youtube facilita la traducción simultánea a otro idioma. Para activar la traducción simultánea al español, sigue estos pasos: ¿Cómo activar la traducción simultánea en Youtube?