Algoritmos de incrustación de palabras en términos de rendimiento

11

Estoy tratando de incrustar aproximadamente 60 millones de frases en un espacio vectorial , luego calcular la similitud de coseno entre ellas. He estado usando sklearn's CountVectorizercon una función de tokenizador personalizada que produce unigramas y bigrams. Resulta que para obtener representaciones significativas, tengo que permitir un gran número de columnas, lineales en el número de filas. Esto conduce a matrices increíblemente dispersas y está matando el rendimiento. No sería tan malo si hubiera solo alrededor de 10,000 columnas, lo que creo que es bastante razonable para la inserción de palabras.

Estoy pensando en tratar de usar Google word2vecporque estoy bastante seguro de que produce incrustaciones mucho más bajas y más densas. Pero antes de eso, ¿hay otras incrustaciones que puedan justificar un vistazo al principio? El requisito clave sería poder escalar alrededor de 60 millones de frases (filas).

Soy bastante nuevo en el campo de las incrustaciones de palabras, por lo que cualquier consejo sería útil.

También debo agregar que ya estoy usando la descomposición de valores singulares para mejorar el rendimiento.

Kevin Johnson
fuente
¿Estás usando Spark?
eliasah
1
Esa es una de las razones por las que he sugerido Spark al principio. Lo siento, estoy en mi teléfono. No tengo acceso a ninguna referencia sobre las técnicas de PCA previas a la incrustación.
eliasah
1
No estoy seguro de que sea una exageración con esa cantidad de datos.
eliasah
1
La eliminación de tokens superfluos no debería reducir la dimensión mucho ya que está trabajando textos. Teniendo en cuenta un diccionario de 150000 palabras, eliminar palabras de detención por ejemplo lo beneficiaría con un par de docenas. Eso no ayudará.
eliasah
1
De lo contrario, es posible que desee considerar el modelado de temas con la asignación de Dirichlet latente para reducir el tamaño del vector de texto por frase.
eliasah

Respuestas:

3

Recientemente se ha trabajado en la asignación dinámica de la dimensión word2vec (omisión de gramo) utilizando máquinas Boltzmann. Mira este artículo:

"Incorporaciones de palabras de dimensiones infinitas" -Nalsnick, Ravi

La idea básica es dejar que su conjunto de entrenamiento dicte la dimensionalidad de su modelo word2vec, que se penaliza con un término de regularización relacionado con el tamaño de la dimensión.

El documento anterior hace esto para las palabras, y me gustaría ver qué tan bien funciona esto con las frases.

Alex R.
fuente