Algorithmes d'intégration de mots en termes de performances

11

J'essaie d'incorporer environ 60 millions de phrases dans un espace vectoriel , puis de calculer la similitude en cosinus entre elles. J'ai utilisé sklearn CountVectorizeravec une fonction de tokenizer construite sur mesure qui produit des unigrammes et des bigrammes. Il s'avère que pour obtenir des représentations significatives, je dois autoriser un nombre énorme de colonnes, linéaire dans le nombre de lignes. Cela conduit à des matrices incroyablement clairsemées et réduit les performances. Ce ne serait pas si mal s'il n'y avait qu'environ 10 000 colonnes, ce qui, je pense, est assez raisonnable pour les incorporations de mots.

Je pense essayer d'utiliser Google word2vecparce que je suis presque sûr qu'il produit des plongements de dimensions beaucoup plus basses et plus denses. Mais avant cela, y a-t-il d'autres intégrations qui pourraient justifier un premier regard? La principale exigence serait de pouvoir mettre à l'échelle environ 60 millions de phrases (lignes).

Je suis assez nouveau dans le domaine de l'intégration de mots, donc tout conseil serait utile.

Je dois également ajouter que j'utilise déjà la décomposition en valeurs singulières pour améliorer les performances.

Kevin Johnson
la source
Vous utilisez Spark?
eliasah
1
C'est l'une des raisons pour lesquelles j'ai suggéré Spark au début. Je suis désolé, je suis sur mon téléphone. Je n'ai accès à aucune référence concernant les techniques de pré-intégration PCA.
eliasah
1
Je ne suis pas sûr que ce soit une exagération avec cette quantité de données.
eliasah
1
La suppression de jetons superflus ne devrait pas réduire la dimension de beaucoup puisque vous travaillez sur des textes. En considérant un dictionnaire de 150000 mots, la suppression de mots vides par exemple vous serait bénéfique avec quelques dizaines. Ça n'aidera pas.
eliasah
1
Sinon, vous souhaiterez peut-être envisager la modélisation de sujets avec l'allocation Dirichlet latente pour réduire la taille du vecteur de texte par phrase.
eliasah

Réponses:

3

Il y a eu récemment des travaux sur l'attribution dynamique de la dimension word2vec (skip gram) à l'aide de machines Boltzmann. Consultez cet article:

"Incorporation de mots de dimension infinie" -Nalsnick, Ravi

L'idée de base est de laisser votre ensemble d'entraînement dicter la dimensionnalité de votre modèle word2vec, qui est pénalisé par un terme de régularisation lié à la taille de la dimension.

L'article ci-dessus le fait pour les mots, et je serais curieux de voir à quel point cela fonctionne avec les phrases.

Alex R.
la source