Dime con quién andas y te diré quién eres.
La representación vectorial del texto usando redes neuronales han revolucionado el campo del procesamiento de lenguaje natural en la última década. Estas representaciones, comúnmente conocidas como "embeddings", capturan relaciones semánticas y sintácticas entre palabras, frases o incluso documentos completos en un espacio de menor dimensión. Veamos los modelos más destacados.
Word2Vec es uno de los modelos más populares para aprender representaciones vectoriales de palabras, y su introducción marcó un antes y un después en la forma en que se abordan muchas tareas de NLP. Fue propuesto por Mikolov et al. en 2013. Se basa en la idea de que el significado o función de una palabra puede inferirse por el contexto en el que aparece frecuentemente. Por lo tanto, palabras con contextos similares tendrán representaciones vectoriales similares. Word2Vec tiene dos arquitecturas principales: Skip-Gram y CBOW (Continuous Bag of Words).
Dada una palabra objetivo, el modelo Skip-Gram trata de predecir las palabras de su contexto cercano. Por ejemplo, en la frase "El color azul me gusta más que el rojo", si "azul" es nuestra palabra objetivo y utilizamos un tamaño de ventana de contexto de 2, querríamos predecir las palabras "El", "color", "me" y "gusta" a partir de "azul". Si en otra frase del dataset apareciera la frase "El color rojo me gusta más que el azul", el modelo aprendería que "azul" y "rojo" son palabras que podrían compartir contextos similares y, por tanto, sus vectores tenderían a tener una representación similar para poder predecir correctamente las palabras de su contexto.
Dado un contexto, CBOW trata de predecir la palabra objetivo o central. Por ejemplo, en la frase "El color azul me gusta más que el rojo", si tomamos un tamaño de ventana de contexto de 2 alrededor de la palabra "me", las palabras de contexto serían "color", "azul", "más" y "que", y CBOW intentaría predecir "rojo" a partir de estas palabras. A diferencia de Skip-Gram, en CBOW todas las palabras de contexto se suman o promedian, de ahí el nombre "Bag of Words" ya que no se considera el orden de las palabras.
https://towardsdatascience.com/word2vec-with-pytorch-implementing-original-paper-2cd7040120b0
https://nlp.stanford.edu/pubs/glove.pdf
GloVe, que significa "Global Vectors for Word Representation", es un método para la obtención de representaciones vectoriales (embeddings) de palabras. Fue desarrollado por investigadores de la Universidad de Stanford en 2014. A diferencia de otros métodos, como Word2Vec, que se basan en contextos locales de palabras, GloVe construye sus embeddings basándose en estadísticas globales de co-ocurrencia de palabras en un corpus.
Los elementos esenciales del modelo GloVe son:
El primer paso para crear embeddings con GloVe es construir una matriz de co-ocurrencia X a partir de un corpus de texto. Si consideramos Xij, este valor representa cuántas veces la palabra j aparece en el contexto de la palabra i. El "contexto" puede definirse de muchas maneras, pero generalmente se refiere a un conjunto fijo de palabras que aparecen antes o después de la palabra objetivo.
GloVe busca factorizar la matriz de co-ocurrencia en dos matrices de menor dimensión, cuyo producto aproximado (y algunas operaciones adicionales) es la matriz original. Sin embargo, en lugar de factorizar la matriz de co-ocurrencia directamente, GloVe opera sobre la función logarítmica de la matriz.
El objetivo de GloVe es minimizar la siguiente función de pérdida:
J=V∑i,j=1f(Xij)(wTi˜wj+bi+˜bj−logXij)2Donde:
Asumimos que en la matriz de co-ocurrencia, cada par de palabras (filas) Xi y Xj son semánticamente similares si sus componentes Xik y Xjk son similares para todo k. Como cada fila tiene una longitud igual al tamaño del vocabulario, sería conveniente que cada fila (palabra) fuera un vector de embedding. Por lo tanto, si dos filas son similares, sus vectores de embedding también deberían serlo.
Así que si hemos minimizado la función de pérdida: J=∑Vi,j=1(wiwTj−Xij)2, entonces cada elemento de la matriz de co-ocurrencia Xij debería ser aproximadamente igual a wiwTj.
Vemos que lo que hemos conseguido es la factorización de la matriz de co-ocurrencia en dos matrices de menor dimensión, cuyo producto aproximado es la matriz original.
Por tanto, si Xik es aproximadamente ωi⋅ωk y Xjk es aproximadamente ωj⋅ωk para todo k, entonces ωi y ωj deberían ser similares en todos sus componentes.
La función de ponderación f(x) en el modelo GloVe es una función que da menos peso a las co-ocurrencias menos frecuentes y más peso a las más frecuentes, pero hasta cierto punto. La idea es prevenir que las co-ocurrencias de alta frecuencia dominen el entrenamiento.
La función f(x) que se introduce en el trabajo original de GloVe es la siguiente:
f(x)={(x/xmax)αsi x<xmax1de lo contrarioDonde:
Esta función asegura que para co-ocurrencias bajas, f(x) es proporcional a x, mientras que para co-ocurrencias altas (aquellas mayores que xmax), la función se aplana y simplemente se toma como 1. El propósito de esto es dar más relevancia a las co-ocurrencias raras durante el entrenamiento, pero sin ignorar completamente las frecuentes.
Una vez entrenado el modelo, se pueden obtener representaciones vectoriales para cada palabra. A menudo, el vector de embedding final para una palabra se toma como la suma de su vector w y su vector ˜w.
A diferencia de Word2Vec, que usa contextos locales y se basa en la predicción (ya sea usando el contexto para predecir una palabra o viceversa), GloVe se basa en estadísticas de co-ocurrencia a nivel global. Sin embargo, en la práctica, ambos métodos producen representaciones de palabras de alta calidad que capturan similitudes semánticas y relaciones sintácticas entre palabras.
Una vez entrenado, un modelo GloVe, al igual que Skip-Gram o CBOW, permite que las palabras con significados similares se mapeen a puntos cercanos en el espacio vectorial, facilitando así tareas como la clasificación de texto, la analogía de palabras y la agrupación semántica, entre otras.
En cualquier corpus de texto, las co-ocurrencias varían drásticamente en magnitud. Algunos pares de palabras pueden co-ocurrir miles de veces, mientras que otros solo unas pocas veces. El logaritmo tiene la propiedad de suavizar estas diferencias, es decir, reduce la disparidad entre las co-ocurrencias altas y bajas. Esto hace que el modelo no esté excesivamente influenciado por pares de palabras que co-ocurren con mucha frecuencia.
TorchText es una biblioteca complementaria a PyTorch, diseñada específicamente para las tareas de procesamiento de lenguaje natural (NLP). La biblioteca incluye herramientas para cargar, procesar y trabajar con conjuntos de datos de texto, así como para construir vocabularios y manipular secuencias de texto.
# Read the 10 first lines of WikiText2 dataset in TorchText
import torch
from torchtext import datasets
# Load the dataset
train_iter = datasets.WikiText2(split=('train'))
# Print the first 10 lines
for i, line in enumerate(train_iter):
if i < 10:
print(line)
print("-" * 50)
else:
break
# print(train_iter[100]) # Error because the dataset is not a map-style dataset
# Convert the dataset to map-style dataset
from torchtext.data import to_map_style_dataset
train_iter = to_map_style_dataset(train_iter)
print(train_iter[4])
print(train_iter[1001])
-------------------------------------------------- = Valkyria Chronicles III = -------------------------------------------------- -------------------------------------------------- Senjō no Valkyria 3 : <unk> Chronicles ( Japanese : 戦場のヴァルキュリア3 , lit . Valkyria of the Battlefield 3 ) , commonly referred to as Valkyria Chronicles III outside Japan , is a tactical role @-@ playing video game developed by Sega and Media.Vision for the PlayStation Portable . Released in January 2011 in Japan , it is the third game in the Valkyria series . <unk> the same fusion of tactical and real @-@ time gameplay as its predecessors , the story runs parallel to the first game and follows the " Nameless " , a penal military unit serving the nation of Gallia during the Second Europan War who perform secret black operations and are pitted against the Imperial unit " <unk> Raven " . -------------------------------------------------- The game began development in 2010 , carrying over a large portion of the work done on Valkyria Chronicles II . While it retained the standard features of the series , it also underwent multiple adjustments , such as making the game more <unk> for series newcomers . Character designer <unk> Honjou and composer Hitoshi Sakimoto both returned from previous entries , along with Valkyria Chronicles II director Takeshi Ozawa . A large team of writers handled the script . The game 's opening theme was sung by May 'n . -------------------------------------------------- It met with positive sales in Japan , and was praised by both Japanese and western critics . After release , it received downloadable content , along with an expanded edition in November of that year . It was also adapted into manga and an original video animation series . Due to low sales of Valkyria Chronicles II , Valkyria Chronicles III was not localized , but a fan translation compatible with the game 's expanded edition was released in 2014 . Media.Vision would return to the franchise with the development of Valkyria : Azure Revolution for the PlayStation 4 . -------------------------------------------------- -------------------------------------------------- = = Gameplay = = -------------------------------------------------- -------------------------------------------------- As with previous <unk> Chronicles games , Valkyria Chronicles III is a tactical role @-@ playing game where players take control of a military unit and take part in missions against enemy forces . Stories are told through comic book @-@ like panels with animated character portraits , with characters speaking partially through voiced speech bubbles and partially through <unk> text . The player progresses through a series of linear missions , gradually unlocked as maps that can be freely <unk> through and replayed as they are unlocked . The route to each story location on the map varies depending on an individual player 's approach : when one option is selected , the other is sealed off to the player . Outside missions , the player characters rest in a camp , where units can be customized and character growth occurs . Alongside the main story missions are character @-@ specific sub missions relating to different squad members . After the game 's completion , additional episodes are unlocked , some of them having a higher difficulty than those found in the rest of the game . There are also love simulation elements related to the game 's two main <unk> , although they take a very minor role . -------------------------------------------------- The game began development in 2010 , carrying over a large portion of the work done on Valkyria Chronicles II . While it retained the standard features of the series , it also underwent multiple adjustments , such as making the game more <unk> for series newcomers . Character designer <unk> Honjou and composer Hitoshi Sakimoto both returned from previous entries , along with Valkyria Chronicles II director Takeshi Ozawa . A large team of writers handled the script . The game 's opening theme was sung by May 'n . = = Original design = =
Desarrolla un script para generar los datasets de entrenamiento adecuados para suministrarlos a lo modelos Skip-Gram y CBOW.
Desarrolla un script para generar la matriz de co-ocurrencia a partir del dataset wikitext-2.