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 CountVectorizer
avec 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 word2vec
parce 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.
la source
Réponses:
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.
la source