¿Cómo calcula Gensim.Word2vec la probabilidad de texto usando una puntuación de modelo?

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:

  1. CBOW
  2. 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í:

    1. Agregar todos los vectores positivos
    2. Agregar todos los vectores negativos
      [CONSEJO: podemos hacer esto ya que todos están en el mismo espacio de dimensión]
    3. Tomar la distancia coseno entre vectores (¿Por qué?)
    4. 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 🙂

More Interesting

¿Cuáles son las diversas aplicaciones del aprendizaje automático en ciencias de la salud / ciencias de la vida?

Cómo construir y trazar una gráfica de vecinos más cercanos

¿Qué opinas del TensorFlow Eager en comparación con Pytorch?

¿Qué es mejor para el aprendizaje profundo: TensorFlow o Chainer?

¿Con qué biblioteca de aprendizaje automático debo experimentar entre SparkML, Microsoft Azure ML y AWS ML?

¿Cuál es la razón para mapear datos de dos idiomas diferentes en un espacio de incrustación de palabras común y no usar dictonarios y asignarle el idioma b a los vectores del idioma a para entrenar un modelo de manera multilingüe?

Cómo entrenar un modelo de Keras con un gran conjunto de datos y luego ajustarlo con un conjunto de datos más pequeño de interés

¿Cuál es el mejor libro para aprender el pensamiento algorítmico?

¿Cuál es más adecuado para un aprendizaje automático de codificador o desarrollo web?

Cómo interpretar los resultados de agrupación de k-means

En las arquitecturas VGG-16 y VGG-19, ¿por qué hay más capas convolucionales 3 × 3 apiladas consecutivamente en las capas altas que en las capas inferiores?

¿Cuál es la distribución condicional completa?

¿Cuáles son las ventajas y desventajas de cada método de regresión no lineal existente?

¿Qué debo hacer para pasar de la bioinvestigación al aprendizaje automático de manera muy eficiente?

¿Cuáles son las revistas científicas mejor calificadas para Machine Learning / Data Science?