Word2vec

Este artículo o sección necesita ser wikificado, por favor, edítalo para que cumpla con las convenciones de estilo.
Este aviso fue puesto el 23 de enero de 2022.

Word2vec es una técnica para el procesamiento de lenguaje natural publicada en 2013. El algoritmo Word2vec utiliza un modelo de red neuronal para aprender asociaciones de palabras a partir de un gran corpus de texto. Una vez entrenado, dicho modelo puede detectar palabras sinónimas o sugerir palabras adicionales para una frase sin terminar. Como su nombre indica, Word2vec representa cada palabra distinta con una lista particular de números llamada vector. Los vectores están escogidos cuidadosamente de forma que una función matemática sencilla (la similitud coseno entre los vectores) indica el nivel de la similitud semántica entre las palabras representada por dichos vectores.

Aproximación

Word2vec es un grupo de modelos relacionados que se utilizan para producir word embeddings. Estos modelos son poco profundos, se entrenan redes neuronales de dos capas para reconstruir contextos lingüísticos de palabras. Word2vec toma como entrada un gran corpus de texto y produce un espacio vectorial, típicamente de varios cientos de dimensiones, asignando cada palabra única en el corpus a un vector correspondiente en el espacio. Los word embeddings están colocados en el espacio vectorial de forma que las palabras que comparten contextos comunes en el corpus están localizadas cerca unas de otras en el espacio.[1]

Historia

Un equipo de investigadores dirigido por Tomas Mikolov en Google creó, patentó y publicó Word2vec en 2013 en dos artículos.[2][3]​ Otros investigadores ayudaron a analizar y explicar el algoritmo.[4]​ Los vectores embedding creados usando el algoritmo Word2vec tienen algunas ventajas comparados con algoritmos anteriores[1]​ como el análisis semántico latente.

CBOW y skip-gram

Word2vec puede utilizar cualquiera de las dos arquitecturas de modelo para producir una representación distribuida de palabras: modelo bolsa de palabras continuo (CBOW) o skip-gram continuo, donde continuo hace referencia al espacio de los vectores de representación. El término skip-gram procede de la forma en que el modelo aprende a predecir palabras contextuales a partir de una palabra objetivo. En el modelo de skip-gram, dada una palabra objetivo, se «salta» a través de las palabras de contexto en la ventana circundante para predecir cada palabra de contexto de forma independiente. Por ejemplo, si la palabra objetivo es «gato» y el tamaño de la ventana de contexto es 2, el modelo de saltograma no predice las palabras de contexto en orden secuencial (como «el» seguido de «tierno» seguido de "y"). En su lugar, predice cada palabra contextual de forma independiente, de ahí el «salto» el término salto.[5]

En la arquitectura de la bolsa continua de palabras, el modelo predice la palabra actual de una ventana de palabras de contexto circundante. El orden de palabras de contexto no influye predicción (bolsa-de-suposición de palabras). En la arquitectura saltograma (N-gramas con saltos) continuo, el modelo utiliza la palabra actual para pronosticar la ventana de palabras de contexto que la rodean. La arquitectura saltograma hace que las palabras de contexto cercano pesen más que las palabras del contexto más lejano.[1][6]​ Según la nota de los autores[7]​, CBOW es más rápido, mientras que saltograma trabaja mejor para palabras poco frecuentes.

Parametrización

Los resultados del entrenamiento de Word2vec pueden ser sensibles a la parametrización. Los siguientes son algunos parámetros importantes en el entrenamiento de Word2vec.

Algoritmo de entrenamiento

Un modelo Word2vec puede ser entrenado con softmax jerárquico y/o muestreo negativo. Para aproximar la verosimilitud logarítmica condicional, un modelo busca maximizar, el método jerárquico softmax utiliza un árbol de Huffman para reducir el cálculo. El método de muestreo negativo, por otro lado, aborda el problema de maximización minimizando la probabilidad logarítmica de las instancias negativas muestreadas. Según los autores, el softmax jerárquico trabaja mejor para palabras infrecuentes, mientras que el muestreo negativo funciona mejor para palabras frecuentes y mejor con vectores de pocas dimensionales.[7]​ Cuando el número de épocas aumenta, el softmax jerárquico deja de ser útil.[8]

Sub-Muestreo

Las palabras de alta frecuencia a menudo proporcionan poca información. Las palabras con una frecuencia por encima de un cierto umbral se pueden submuestrear para acelerar el entrenamiento.[9]

Dimensionalidad

La calidad de word embedding aumenta con dimensionalidades altas. Pero después de alcanzar algún punto, la ganancia marginal disminuye.[1]​ Típicamente, la dimensionalidad de los vectores se establece entre 100 y 1.000.

Ventana de contexto

El tamaño de la ventana de contexto determina cuántas palabras antes y después de una palabra se incluyen como palabras de contexto de la palabra dada. Según la nota de los autores, el valor recomendado es 10 para saltograma y 5 para CBOW.[7]

Extensiones

Se ha propuesto una extensión de Word2vec para construir embeddings de documentos enteros (en lugar de palabras individuales).[10]​ Esta extensión se llama paragraph2vec o doc2vec y ha sido implementado en C, Python[11][12]​ y Java/Scala[13]​ (ver abajo), las versiones de Java y Python también soportan la inferencia de embeddings de documentos en documentos nuevos, no vistos.

Vectores de palabras para Bioinformática: BioVectores

Asgari y Mofrad[14]​ han propuesto una extensión de los vectores de palabra para n-gramas en secuencias biológicas (por ejemplo, ADN, ARN, y Proteínas) para aplicaciones de bioinformática. Se llaman bio-vectores (BioVec) para referirse a secuencias biológicas en general con vectores de proteínas (ProtVec) para proteínas (secuencias de aminoácidos) y vectores de genes (GeneVec) para secuencias de genes, esta representación puede ser ampliamente utilizada en aplicaciones de aprendizaje automático en proteómica y genómica. Los resultados sugieren que los BioVectors pueden caracterizar secuencias biológicas en términos de interpretaciones bioquímicas y biofísicas de los patrones subyacentes.[14]​ Una variante similar, dna2vec, ha mostrado que hay correlación entre la puntuación de similitud de Needleman-Wunsch y la similitud del coseno de los vectores de palabras dna2vec.[15]

Vectores de palabra para Radiología: Embedding Inteligente de Palabras (IWE)

Banerjee et al.[16]​ han propuesto una extensión de los vectores de palabra para crear una representación vectorial densa de informes de radiología no estructurados. Uno de los retos más grandes de Word2Vec es cómo manejar palabras desconocidas o que están fuera del vocabulario (OOV) y palabras morfológicamente similares. Si el modelo Word2vec no ha encontrado una palabra particular antes, será forzado a utilizar un vector aleatorio, el cual está generalmente lejos de su representación ideal. Esto particularmente puede ser un problema en ámbitos como la medicina, donde los sinónimos y palabras relacionadas pueden ser utilizadas dependiendo del estilo preferido del radiólogo, y las palabras pueden haber sido utilizadas de manera poco frecuente en un gran corpus.

IWE combina Word2vec con una técnica de mapeo de diccionario semántica para emprender los retos importantes de extracción de información de textos clínicos, los cuales incluyen ambigüedad de texto libre de estilo narrativo, variaciones léxicas, uso de fases agramaticales y telegráficas, ordenación arbitraria de palabras, y aparición frecuente de abreviaturas y acrónimos. De interés particular, el modelo IWE (entrenado con un conjunto de datos institucional) tradujo con éxito un conjunto de datos institucional diferente, lo que demuestra una buena generalización del enfoque entre instituciones.

Análisis

Las razones para el aprendizaje exitoso del word embedding en el marco Word2vec son poco conocidas. Goldberg y Levy señalan que la función objetivo word2vec hace que palabras que aparecen en contextos similares tengan embeddings similares (medidos por la similitud del coseno) y señalan que esto está en la línea de la hipótesis distribucional de J. R. Firth. Sin embargo, señalan que esta explicación es "muy poco precisa" y argumentan que sería preferible una explicación más formal.[4]

Levy et al. (2015)[17]​ muestran que gran parte del rendimiento superior de Word2vec o embeddings similares en tareas posteriores no es el resultado de los modelos per se, sino de la elección de hiperparámetros específicos. La transferencia de estos hiperparámetros a enfoques más 'tradicionales' produce rendimientos similares en tareas posteriores. Arora et al. (2016)[18]​ explican que Word2vec y los algoritmos relacionados realizan inferencias para un modelo generador simple de texto, que implica un proceso de generación de recorrido aleatorio basado en un modelo de tema loglineal. Utilizan esto para explicar algunas propiedades de los word embeddings, incluido su uso para resolver analogías.

Preservación de las relaciones semánticas y sintácticas

El enfoque de word embedding es capaz de capturar múltiples grados diferentes de similitud entre palabras. Mikolov et al. (2013)[19]​ encontraron que los patrones semánticos y sintácticos se pueden reproducir utilizando aritmética vectorial. Los patrones como "Hombre es a Mujer como Hermano es a Hermana" puede ser generada mediante operaciones algebraicas en las representaciones vectoriales de estas palabras, de manera que la representación vectorial de "Hermano" - "Hombre" + "Mujer" produce un resultado que es más cercano a la representación vectorial de "Hermana" en el modelo. Tales relaciones se pueden generar para una variedad de relaciones semánticas (como País–Capital) así como relaciones sintácticas (por ejemplo, tiempo presente–tiempo pasado).

Evaluando la calidad de un modelo

Mikolov et al. (2013)[1]​ desarrollaron un enfoque para evaluar la calidad de un modelo Word2vec que se basa en los patrones semánticos y sintácticos discutidos anteriormente. Desarrollaron un conjunto de 8.869 relaciones semánticas y 10.675 relaciones sintácticas que utilizan como benchmark para probar la precisión de un modelo. Cuando se evalúa la calidad de un modelo vectorial, un usuario puede recurrir a esta prueba de precisión que está implementada en Word2vec[20]​, o desarrollar su propio conjunto de pruebas que sea significativo para los corpus que componen el modelo. Este enfoque ofrece una prueba más desafiante que simplemente argumentar que las palabras más similares a una palabra de prueba dada son intuitivamente plausibles.[1]

Parámetros y calidad de modelo

El uso de diferentes parámetros de modelo y diferentes tamaños de corpus puede afectar en gran medida a la calidad de un modelo Word2vec. La precisión se puede mejorar de varias maneras, incluida la elección de la arquitectura del modelo (CBOW o saltograma), aumentando el conjunto de datos de entrenamiento, aumentando la cantidad de dimensiones vectoriales y aumentando el tamaño de la ventana de las palabras consideradas por el algoritmo. Cada una de estas mejoras conlleva el coste de una mayor complejidad computacional y, por lo tanto, un mayor tiempo en la generación de los modelos.[1]

En los modelos que utilizan grandes corpus y una gran cantidad de dimensiones, el modelo saltograma produce la precisión general más alta y produce consistentemente la precisión más alta en las relaciones semánticas, además de producir la precisión sintáctica más alta en la mayoría de los casos. Sin embargo, el CBOW es menos costoso computacionalmente y produce resultados de precisión similares.[1]

En general, la precisión aumenta con el número de palabras utilizadas y el número de dimensiones. Mikolov et al.[1]​ informan que duplicar la cantidad de datos de entrenamiento da como resultado un aumento en la complejidad computacional equivalente a duplicar el número de dimensiones vectoriales.

Altszyler y coautores (2017) estudiaron el rendimiento de Word2vec en dos pruebas semánticas para diferentes tamaños de corpus.[21]​ Encontraron que Word2vec tiene una curva de aprendizaje empinada, superando a otra técnica de word embedding (LSA) cuando se entrena con un tamaño de corpus mediano a grande (más de 10 millones de palabras). Sin embargo, con un corpus pequeño de entrenamiento, LSA mostró un mejor rendimiento. Además, muestran que la mejor configuración de parámetros depende de la tarea y del corpus de entrenamiento. Sin embargo, para modelos saltograma formados con corpus de tamaño medio, con 50 dimensiones, un tamaño de ventana de 15 y 10 muestras negativas parece para ser un buen ajuste de parámetros.

Véase también

 

Referencias

 

  1. a b c d e f g h i Mikolov, Tomas (2013). «Efficient Estimation of Word Representations in Vector Space». arXiv:1301.3781  [cs.CL]. 
  2. Mikolov, Tomas (2013). «Efficient Estimation of Word Representations in Vector Space». arXiv:1301.3781  [cs.CL]. 
  3. Mikolov, Tomas (2013). «Distributed representations of words and phrases and their compositionality.». Advances in Neural Information Processing Systems. arXiv:1310.4546. 
  4. a b Goldberg, Yoav; Levy, Omer (2014). «word2vec Explained: Deriving Mikolov et al.'s Negative-Sampling Word-Embedding Method». arXiv:1402.3722  [cs.CL]. 
  5. Doshi, Sanket (17 de marzo de 2019). «Skip-Gram: NLP context words prediction algorithm». Medium (en inglés). Consultado el 16 de abril de 2024. 
  6. Mikolov, Tomas; Sutskever, Ilya; Chen, Kai; Corrado, Greg S.; Dean, Jeff (2013). Distributed representations of words and phrases and their compositionality. Advances in Neural Information Processing Systems. Bibcode:2013arXiv1310.4546M. arXiv:1310.4546. 
  7. a b c «Google Code Archive - Long-term storage for Google Code Project Hosting.». code.google.com. Consultado el 13 de junio de 2016. 
  8. «Parameter (hs & negative)». Google Groups. Consultado el 13 de junio de 2016. 
  9. «Visualizing Data using t-SNE». Journal of Machine Learning Research, 2008. Vol. 9, pg. 2595. Consultado el 18 de marzo de 2017. 
  10. Le, Quoc (2014). «Distributed Representations of Sentences and Documents.». arXiv:1405.4053  [cs.CL]. 
  11. «Doc2Vec tutorial using Gensim». Consultado el 2 de agosto de 2015. 
  12. «Doc2vec for IMDB sentiment analysis». GitHub. Consultado el 18 de febrero de 2016. 
  13. «Doc2Vec and Paragraph Vectors for Classification». Archivado desde el original el 31 de diciembre de 2015. Consultado el 13 de enero de 2016. 
  14. a b Asgari, Ehsaneddin; Mofrad, Mohammad R.K. (2015). «Continuous Distributed Representation of Biological Sequences for Deep Proteomics and Genomics». PLOS ONE 10 (11): e0141287. Bibcode:2015PLoSO..1041287A. PMC 4640716. PMID 26555596. arXiv:1503.05140. doi:10.1371/journal.pone.0141287. 
  15. Ng, Patrick (2017). «dna2vec: Consistent vector representations of variable-length k-mers». arXiv:1701.06279  [q-bio.QM]. 
  16. Banerjee, Imon; Chen, Matthew C.; Lungren, Matthew P.; Rubin, Daniel L. (2018). «Radiology report annotation using intelligent word embeddings: Applied to multi-institutional chest CT cohort». Journal of Biomedical Informatics 77: 11-20. PMC 5771955. PMID 29175548. doi:10.1016/j.jbi.2017.11.012. 
  17. Levy, Omer; Goldberg, Yoav; Dagan, Ido (2015). «Improving Distributional Similarity with Lessons Learned from Word Embeddings». Transactions of the Association for Computational Linguistics (Transactions of the Association for Computational Linguistics) 3: 211-225. doi:10.1162/tacl_a_00134. 
  18. Arora, S (Summer 2016). «A Latent Variable Model Approach to PMI-based Word Embeddings». Transactions of the Association for Computational Linguistics 4: 385-399. doi:10.1162/tacl_a_00106 – via ACLWEB. 
  19. Mikolov, Tomas; Yih, Wen-tau; Zweig, Geoffrey (2013). «Linguistic Regularities in Continuous Space Word Representations.». HLT-Naacl: 746-751. 
  20. «Gensim - Deep learning with word2vec». Consultado el 10 de junio de 2016. 
  21. Altszyler, E.; Ribeiro, S.; Sigman, M.; Fernández Slezak, D. (2017). «The interpretation of dream meaning: Resolving ambiguity using Latent Semantic Analysis in a small corpus of text». Consciousness and Cognition 56: 178-187. PMID 28943127. S2CID 195347873. arXiv:1610.01520. doi:10.1016/j.concog.2017.09.004. 

Enlaces externos

  • Wikipedia2Vec (Introducción)

Implementaciones

  • C
  • C#
  • Python (Spark)
  • Python (TensorFlow)
  • Python (Gensim)
  • Java/Scala
  • R
Control de autoridades
  • Proyectos Wikimedia
  • Wd Datos: Q22673982
  • Wd Datos: Q22673982