En un post anterior, nos adentrábamos en la historia del Procesamiento del Lenguaje Natural y su evolución a lo largo de las décadas de los 50 hasta el 2010. Ésta última, con la llegada del Deep Learning supuso un cambio extraordinario, ya que estas nuevas técnicas de redes neuronales profundas revolucionan el procesamiento de imágenes que influyen en las técnicas del Procesamiento del Lenguaje Natural (PLN).
Uno de los elementos fundamentales fue la aparición de Word2Vec (Mikolov et al., 2013). La intuición básica de Word2Vec, está basada en una idea introducida por Firth en 1957:
“el significado de las palabras esta asociado a las palabras que le acompañan (contexto)”
Word2Vec se trata de una técnica de “word embedding” que permite representar las palabras de un texto como vectores, con unas propiedades muy interesantes. Word2vec representó la introducción de un nuevo paradigma en el Procesamiento del Lenguaje Natural, que comienza a abordar con éxito tareas hasta entonces consideradas extremadamente complicadas. Word2Vec se basa en entrenar una red neuronal, para que dada una palabra (ej. turismo) devuelva palabras de su contexto (ej. viajes). Para ello se le pasa un gran número de textos (ej. la wikipedia entera) y a partir de ellos Word2Vec se entrena.
Para entenderlo mejor, supongamos que tenemos un conjunto de textos (corpus) con 10.000 palabras diferentes (vocabulario). Iremos tomando cada palabra del cada texto y viendo las palabras que la rodean (ej. a todas las palabras en una ventana de 4 palabras de la elegida).
En esta frase, la palabra «turismo» estaría rodeada de: sector, de, viajes, y, a, nivel, mundial, se. El objetivo es que el sistema aprenda, mediante ejemplos, el contexto de una palabra. Los ejemplos serán, por tanto: (turismo, sector), (turismo, de), (turismo, viajes), … como esto lo podemos hacer con cada palabra del corpus tendremos millones de ejemplos para entrenar al modelo. Si a la red neuronal le introducimos la palabra “turismo” esperamos que nos devuelva una probabilidad alta de que “sector” esté en su contexto:
Referencia: MC CORMICK
Una vez entrenado Word2Vec, es posible obtener una representación vectorial de cada palabra. Lo interesante es que dicha representación vectorial tiene “embebida” el significado (semántica) de la palabra además de características sintácticas.
Otro ejemplo. si buscamos aquellas palabras con vectores mas cercanos a la palabra “frog” vemos que nos salen palabras muy relacionadas con “frog”, esto son traducciones de la palabra (rana) o palabra en plural (frogs), nombres científicos de ranas (litoria), etc.
Referencia: GLOVE STANFORD
Uno de los resultados más sorprendentes de Word2Vec es su capacidad de generar analogías, así por ejemplo podemos hacer:
Vector(Madrid) – Vector(España) + Vector(Senegal) nos devuelve la palabra Dakar.
Básicamente: “Madrid es a España como Dakar es a Senegal”.
La representación que consigue Word2Vec mantiene las relaciones semánticas y sintácticas de las palabras, lo que permite operar con ellos (sumas y resta) y obtener resultados como los de la analogía anterior. La aplicación directa de los word embedding obtenidos por Word2Vec a distintas tareas de Procesamiento del Lenguaje Natural (ej. clasificación de documentos, análisis del sentimiento,…) hizo que automáticamente se mejorasen los resultados alcanzados hasta ese momento. Esto ha despertado un extraordinario interés de la comunidad científica por estas técnicas que actualmente son preponderantes en el PLN, con una gran multitud de nuevos modelos (ej. Google Bert) y mejoras en los resultados.
En cierta forma, estos resultados nos acercan un poco al objetivo final del Procesamiento del Lenguaje Natural, que no es otro que:
«las máquinas entiendan realmente el lenguaje»
Del procesamiento conjunto de la ciencia computacional y la lingüística aplicada, nace el Procesamiento de Lenguaje Natural (PLN o NLP en inglés), cuyo objetivo no es otro que el de hacer posible la compresión y procesamiento asistidos por ordenador de información expresada en lenguaje humano, o lo que es lo mismo, hacer posible la comunicación entre personas y máquinas.
Existen distintos programas que exhiben diferente grado del procesamiento inteligente del lenguaje. Por ejemplo, un buscador de documentos puede buscar simplemente los documentos que contienen la cadena de caracteres especificada por el usuario, sin importar que dicha cadena tenga o no un significado en un lenguaje o idioma. En este caso no sería una aplicación del PLN. Sin embargo, el mismo buscador podría buscar los documentos que comuniquen la idea especificada por el usuario, sin importar las letras que la comunican, y en este caso, sin duda, sería una excelente aplicación de PLN, ya que entendería la idea comunicada en la petición del usuario, la idea comunicada en cada uno de los documentos, y sería capaz de compararlas.
Por este motivo, para profundizar más en esta temática, os exponemos algunas tareas y aplicaciones del Procesamiento del Lenguaje Natural:
1.Speech To Text / Text To Speech
Speech to text o STT se basa en la conversión de audio a texto y se trata de una tarea para poner en valor los audios, que una vez convertidos en textos, pueden ser procesados con otras técnicas de PLN. Una vez procesado es posible devolver un audio utilizando la conversión de texto a audio (Text To Speech o TTS). Ambas tareas, STT y TTS, han cobrado mucha relevancia con los sistemas conversacionales con un alto nivel de calidad, como pueden ser los sistemas de Siri, Alexa, OK Google, Cortana, etc.
2.Preguntas y Respuestas (Questioning and Answering, Q&A)
Q&A es la tarea de responder preguntas a partir de información obtenidas de distintos recursos. Es una tarea importante para los sistemas de diálogo como los chatbots y para la mejora de los sistemas de búsqueda (Information Retrieval). Los nuevos sistemas de Deep Learning están permitiendo una mejora sustancial en esta tarea. En un proyecto realizado por ITELLIGENT sobre Turismo Inteligente, se desarrolló un sistema de Questioning and Answering entrenado con comentarios sobre recursos turísticos de Andalucía (hoteles, restaurantes, playas, museos,…) y que permitía localizar recursos turísticos a partir de muchas preguntas variadas.
Antes, mencionamos los sistemas de Information Retrieval, estos sistemas de búsqueda fueron uno de los primeros sistemas de Procesamiento de Lenguaje Natural que se adoptaron de forma generalizada. Hay dos pasos fundamentales en un buscador:
3.Traducción Automática
La traducción automática, permite traducir un texto de un idioma a otro. Esta tarea cobró un importante impulso gracias a los corpus de textos traducidos entre dos idiomas (denominados “corpus paralelos”), facilitados por el parlamento de la Unión Europea. Frente a los primeros sistemas de los años 50s, actualmente la traducción automática es una tarea de Procesamiento de Lenguaje Natural que ha conseguido un alto nivel de calidad. Ejemplo de ello, aplicaciones como iTranslate Converse para iOS o Microsoft Translator App.
4.Extracción de Información (Information Extraction)
La extracción de información es la obtención de conjunto predefinido de campos de un texto en formato libre. Se puede ver como la generación de una base de datos a partir de documentos poco estructurados. Por ejemplo, obtener distintos datos de un PDF de sobre inspecciones de soldadura, extraer: nombre soldador, características de la soldadura, etc.
5.Clasificación de Documentos: cómo funciona
La tarea de clasificación de documentos (document classification) consiste en entrenar un sistema para que sea capaz de aprender a clasificar textos a partir de un conjunto de textos ya clasificados. En la mayoría de los casos estos sistemas suelen funcionar bastante bien, consiguiéndose calidades de clasificación (ej. accuracy) superiores al 95%. En un post anterior, explicábamos cómo funciona un clasificador automático de documentos utilizando técnicas de PLN y Machine Learning sobre un conjunto de elementos para ordenarlos por clases o categorías.
Década de los 50
Se considera 1950 como el año del nacimiento del PLN, cuando Alan Turing publica un artículo denominado “Machine and Intelligence”. Poniendo de relieve que una forma de medir la inteligencia seria a través de la capacidad de una máquina de responder preguntas de forma que un operador humano no distinguiera sus respuestas de las de un humano (Test de Turing).
Un énfasis inicial en la década de los 50s fue la traducción automática, en particular entre inglés y ruso, con objetivos militares. Una época de fuerte optimismo en las posibilidades del PLN.
En esa época uno de los sistemas desarrollados, al traducir un versículo del testamento (Mateos, 26:41) que dice: ‘the spirit is willing, but the flesh is weak’ (el espíritu es voluntarioso, pero la carne es débil) lo tradujo por ‘the vodka is agreeable, but the meat is spoiled’ (el vodka es agradable pero la carne esta podrida), estos tipos de errores fueron los que hicieron
Década de los 60 y 70
A principio de los 60s los sistemas desarrollados de Traducción Automática son evaluados con resultados muy limitados lo que paralizó su desarrollo futuro y en general supuso un baño de realidad para el sector del PLN.
Durante esta década Noam Chomsky (lingüista estadounidense) introduce la teoría formal del lenguaje y la sintaxis generativa. Esto dio un nuevo impulso al PLN, con la creación de nuevas aproximaciones basadas principalmente en reglas cuyo objetivo era generar lenguaje o parsear textos.
Desgraciadamente estos sistemas basados en reglas, se vieron pronto superados por la complejidad del lenguaje natural, así los sistemas requerían más y más reglas llegando a convertirse en inmanejables.
Se comenta que en esa época Fred Jelinek de IBM que trabajaba en los sistemas de PLN decía: “cada vez que un lingüista abandona el equipo el sistema mejora”, en referencia a las limitaciones de los modelos basados en reglas lingüísticas frente a los modelos basados en probabilidad y aprendizaje automático.
Década de los 80 y 90
Las limitaciones de los sistemas basados en reglas hacen que en esta década comiencen a tener cada vez más protagonismo los sistemas basados en probabilidad y aprendizaje automático (machine learning). Estos sistemas van reduciendo su dependencia de modelos lingüísticos y se basan cada vez más en datos (ej. conjuntos de textos denominados “corpus”).
Durante los 90s la aparición de internet, introduce la disponibilidad de un gran número de textos (html, pdfs,…) y audios, además de la necesidad de nuevas herramientas que sean capaces de poner en valor estos grandes repositorios de datos. Durante esta década se desarrollan los sistemas de búsqueda (ej. AltaVista y Yahoo) y a finales de los 90s aparece Google que supone un cambio de paradigma en los sistemas de búsqueda.
Década de los 2000
Las técnicas de Aprendizaje Automático (Machine Learning) van tomando cada vez más protagonismo. El éxito de empresas como Google, hacen que la Inteligencia Artificial y el PLN comiencen a popularizarse.
Durante la década del 2000s IBM desarrolla Watson, que en el 2011 derrota al juego del Jeopardy a dos expertos en dicho juego. Watson es un sistema diseñado para una tarea de PLN denominada Q&A (preguntas y respuestas), adaptado a las particularidades de Jeopardy y con capacidad de interactuar por voz con el presentador.
Década de los 2010
Las nuevas técnicas de Deep Learning (redes neuronales profundas) que a principios de la década están revolucionando el procesamiento de imágenes llegan al PLN. Apareciendo en el 2012 Word2Vec una técnica de “Word embedding” que permite representar las palabras de un texto como vectores, con unas propiedades muy interesantes. Word2vec representó la introducción de un nuevo paradigma en el PLN, que comienza a abordar con éxito tareas hasta entonces consideradas extremadamente complicadas.
En el 2018 Google presenta BERT, que es un modelo de Word embedding, que presenta mejoras sobre Word2vec, entre otras, su capacidad de representar mediante diferentes vectores palabras polisémicas.