2. Marco teórico
2.2. Técnicas y recursos para el procesamiento de textos
2.2.5. Word Embeddings
Las palabras se pueden pensar inmersas en un espacio vectorial de di- mensión finita, donde cada palabra del vocabulario representa un elemento de la base del espacio. Esta abstracción no tiene ninguna utilidad por sí mis- ma, sin embargo, si por medio de una función las palabras se mapean a un espacio vectorial de dimensión menor, se podrían encontrar relaciones in- teresantes entre las palabras así como de captar el contexto de una palabra en un texto dado.
Así surge la técnica de word embeddings, conjunto de técnicas de mo- delado de lenguaje y métodos de aprendizaje, que consiste en asignar un vector de un espacio vectorial de dimensión alta a cada palabra, para luego encontrar relaciones semánticas a partir de propiedades de los vectores en el espacio vectorial. La dimensión del espacio, aunque alta, siempre es mucho más pequeña que la cantidad de palabras en el vocabulario, esto es para que los vectores se vuelvan densos, de forma que al seleccionar uno sea similar a los vectores de palabras que aparecen en un contexto parecido. Estas re- presentaciones permiten inferir relaciones semánticas y sintácticas entre las palabras. En matemática, a una función que va desde un espacio vectorial de dimensión alta a uno de dimensión más baja se llama inmersión (embed- ding).
En pocas palabras esta técnica sirve para representar el vocabulario de un lenguaje y su uso ha demostrado que mejora el rendimiento de algunas tareas como el análisis sintáctico y semántico, parsing, traducción, etc. Se pueden definir funciones algebraicas sobre los vectores que luego pueden ser ma- peadas a relaciones gramaticales o semánticas entre las diferentes palabras.
Por último queremos aclarar que los vectores generados dependen del contexto y del corpus de texto que se esté utilizando para describir las pala- bras por lo que en general no es posible reutilizarlos para la mayoría de los casos.
La implementación que utilizamos de word embeddings se llama word2vec [18] [19], una de las más populares desarrollada por Tomas Mikolov en 2013
en Google. Varios casos de estudio indican que word2vec sirve para iden- tificar relaciones semánticas entre palabras cuyos vectores son cercanos, sin embargo no es posible tener identificadas todas las relaciones que se encuen- tran en los vectores.
Funcionamiento
Para generar los vectores, el algoritmo de word2vec está inspirado en una red neuronal, con una única capa oculta de tamaño VxD, donde V es la can- tidad de palabras en el vocabulario y D es la dimensión de los embeddings. Dada una oración a la que le falta una palabra, la red neuronal aproxima la probabilidad de que cada palabra ”quede bien” en el lugar que falta. Para esto se utiliza un corpus de un tamaño considerable, y se entrenan los pesos de la red viendo cómo aparecen las palabras en los distintos contextos. Los vectores de palabras, entonces, pasan a ser los pesos de la capa oculta que corresponden a dicha palabra. De esta forma, palabras que aparezcan en contextos parecidos tendrán vectores cercanos (y lo mismo se espera con palabras que sean parecidas semánticamente y aparecen en contextos simila- res). Para realizar esto se puede utilizar cualquiera de las dos arquitecturas Skip-Gram o Continuous Bag of Words (CBOW), ambas diseñadas como re- des neuronales. Skip-Gram funciona correctamente con un conjunto reduci- do de datos y se le da bien representar palabras que son consideradas raras o poco frecuentes en un vocabulario.
Skip-Gram
Dado un conjunto de palabras w1, w2, ..., wT, y una ventana de tamaño c,
el modelo Skip-Gram busca maximizar
1 T T
∑
t=1−c≤∑
c,j6=0 log P(wt+j|wt)Este valor es el promedio de los logaritmos de las probabilidades de que palabras con vectores similares estén en contextos afines.
Hay diferentes formas de aproximar esta probabilidad. [19]
En el caso de CBOW, predecimos la palabra central en función de las pala- bras de un contexto dado y en el caso de Skip-gram, es lo opuesto. El nombre de Bag of Words (bolsa de palabras) deriva del hecho de que el orden de las palabras en la historia no influye en la proyección. Es considerablemente más rápido que la otra arquitectura y funciona bien sobre las palabras más frecuentes. Sin embargo el autor menciona que Skip-Gram retorna mejores resultados para representar las relaciones semánticas.
Existen otras técnicas bien conocidas además de word2vec, con las que se pueden obtener buenos resultados. De ellas las que queremos mencionar en este contexto son GloVe [20] y Fast Text del laboratorio de investigación de Inteligencia Artificial de Facebook (FAIR) [21].
GloVe
GloVe (abreviación de Global Vectors) es un proyecto de código abierto creado por Standford, se diferencia de word2vec por ser un modelo estadís- tico basado en conteos (en vez de ser uno predictivo). GloVe aprende me- diante la construccion de una matriz de co-ocurrencia (palabras X contexto), donde básicamente cuenta las ocurrencias de una palabra en el contexto da- do. Dado que dicha matriz presenta un gran tamaño se le aplica una función de costo minimizada asociada a los vectores y a la matriz para obtener repre- sentaciones vectoriales de baja dimensionalidad. El principal beneficio que nos brinda es que es posible paralelizar la implementación, por lo que es más sencillo trabajar sobre volúmenes de datos más grandes, además de que logra mejores resultados mucho más rápido.
FastText
Por otro lado, Fast Text de código abierto, también esta implementado como una red neuronal para obtener representaciones vectoriales de las pa- labras y para clasificación de textos. Facebook pone a disposición de los usua- rios modelos pre-entrenados para 294 idiomas diferentes usando Wikipe- dia como corpus. Combina varias herramientas del PLN, tales como bag of words, bag of n-grams, intercambio de información entre clases a través de una representación oculta, softmax jerárquico para aumentar la velocidad de los cálculos, etc. En líneas generales, es parecido a Skip-Gram, pero en lugar de solamente quedarse con un producto puntual entre dos vectores utiliza además lo de los caracteres correspondientes de n-gramas de 3 a 6. Por lo tanto, el vector de una palabra será la colección de la palabra junto con esos caracteres. Para ilustrar con un ejemplo, el siguiente vector correspondería a la palabra ”water”.
water = { wat, ate, ter, wate, ater, water }
A partir de esto podemos decir que es como la extensión del trabajo de Skip-Gram. Gracias a su simplicidad el entrenamiento es rápido y no requiere de preprocesamiento o de supervisión.