Contexto:
Comprenda primero Word2Vec por Tomas Mikolov.
Este enlace citado habla principalmente sobre cómo se utilizan las incrustaciones de palabras para resolver problemas complejos utilizando principalmente dos algoritmos, enlace de ayuda:
- ¿Qué pasos de procesamiento previo recomendaría para un aprendizaje automático exitoso en un conjunto de datos MNIST?
- ¿Cómo puede la regularización simplificar las hipótesis?
- Tengo una entrevista telefónica técnica para una pasantía la próxima semana con el aprendizaje automático y el equipo de fraude de Uber. ¿Debo esperar DS y algoritmos generales o algo más?
- Cómo aprender a crear un sistema óptico de reconocimiento de caracteres utilizando redes neuronales artificiales como mi mini proyecto
- ¿Cuáles fueron las principales conclusiones del tutorial de Richard Sutton sobre el aprendizaje por refuerzo en NIPS 2015?
- CBOW
- Saltar-gramo
Según el texto, establece lo siguiente:
La herramienta word2vec toma un corpus de texto como entrada y produce los vectores de palabras como salida. Primero construye un vocabulario a partir de los datos del texto de entrenamiento y luego aprende la representación vectorial de las palabras .
Parte A:
Ahora la pregunta es ¿cómo word2vec prepara representaciones vectoriales?
Puedo darle la respuesta tradicional aquí, pero quiero enfatizar en cómo resolvemos exactamente este paso de transformación de la lista de oraciones (leer la lista de palabras) al formato vectorial.
Consulte este blog para ver el paso de transformación que no es más que una codificación de palabras en un espacio fijo pero de alta dimensión.
Parte B:
- Aplique cualquiera de los algoritmos CBOW / Skip-gram para generar el espacio vectorial incrustado.
- Si observa de cerca, las palabras con relativa alta coincidencia se agruparán. Puede comprender los pasos de generación de modelos debajo aquí.
Lo que es más, es que la implementación gensim de word2vec es exactamente la implementación python de word2vec original con pequeños ajustes.
Dame el código:
# creando el modelo
# Las `oraciones` iterables pueden ser simplemente una lista
# `size` es la dimensionalidad de los vectores de características.
” ‘
Paso 1: generar un diccionario de oraciones dadas
Paso 2: Entrenamiento con corpus de compilación (leer diccionario)
2.1 CBOW / Skip-Gram
entrenar con todos los vectores generados de baja dimensión
Vea los detalles del algoritmo para una mejor comprensión.
” ‘
model = word2vec.Word2Vec (oraciones, tamaño = 200)
Ahora intentaré responder a tu pregunta:
model.most_similar (positivo = [‘mujer’, ‘rey’],
negativo = [‘hombre’], topn = 1)Salida:
[(‘reina’, 0.5359965)]
# En esto puedes encontrar muchas cosas, pero la más importante es:
word_vec (word = ‘queen’)
# esta función te da una puntuación como esta,
>>> entrenamiento_modelo [‘reina’]
matriz ([-1.40128313e-02,…])
# Ahora obtendrá toda la representación vectorial transformada para cada palabra.
Ahora usaremos álgebra simple basada en Matrix aquí:
- Agregar todos los vectores positivos
- Agregar todos los vectores negativos
[CONSEJO: podemos hacer esto ya que todos están en el mismo espacio de dimensión]- Tomar la distancia coseno entre vectores (¿Por qué?)
- Verifique el vector resultante y devuelva la palabra asociada con la distancia del vector y el coseno como tupla
En este caso :
vector resultante: matriz ([-1.40128313e-02, …])
distancia coseno: 0.5359965
palabra asociada: ‘reina’
Disfruta 🙂