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).
[Tweet «Procesamiento del Lenguaje Natural & Deep Learning, ¿entienden las maquinas el lenguaje humano?»]
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.
[Tweet «¿Conoces Word2Vec? Esta técnica de “word embedding” permite representar las palabras como vectores #PLN»]
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:
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.
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»
0 comentarios