2017-02-18 1 views
0

J'essaie de classer les paragraphes en fonction de leurs sentiments. J'ai des données de formation de 600 mille documents. Lorsque je les convertis en Tf-Idf l'espace vectoriel avec des mots comme analyseur et ngramme varie de 1-2, il y a près de 6 millions de fonctionnalités. Donc, je dois faire la décomposition de la valeur singulière (SVD) pour réduire les fonctionnalités.SVD utilisant Scikit-Learn et Gensim avec 6 millions de fonctionnalités

J'ai essayé la fonctionnalité SVD de gensim et de sklearn. Les deux fonctionnent bien pour la réduction des fonctionnalités jusqu'à 100, mais dès que j'essaie de 200 fonctionnalités, ils jettent une erreur de mémoire.

Aussi je n'ai pas utilisé le document entier (600 mille) comme données d'entraînement, j'ai pris seulement 50000 documents. Donc, essentiellement, ma matrice de formation est: 50000 * 6 millions et veulent réduire à 50 000 * (100 à 500)

est-il une autre façon que je peux le mettre en œuvre en python, ou dois-je mettre en œuvre des étincelles MLlib SVD (écrit seulement pour Java et Scala)? Si oui, combien sera-t-il plus rapide?

Caractéristiques du système: 32 Go de RAM avec 4 processeurs de base sur ubuntu 14.04

Répondre

0

Je ne vois pas vraiment pourquoi l'utilisation des étincelles MLlib SVD améliorerait les performances ou d'éviter les erreurs de mémoire. Vous dépassez simplement la taille de votre RAM. Vous avez quelques options pour gérer cela:

  • Réduisez la taille du dictionnaire de votre tf-idf (en jouant avec les paramètres max_df et min_df de scikit-learn par exemple).
  • Utilisez un vectoriseur de hachage au lieu de tf-idf.
  • Obtenez plus de RAM (mais à un certain point, tf-idf + SVD n'est pas extensible).

De même, vous devriez montrer votre exemple de code, vous pourriez faire quelque chose de mal dans votre code python.

+0

Merci pour les suggestions. Je devrais jouer avec les paramètres max_df et min_df. Aussi, je n'ai pas encore regardé le vectorisation de hachage, donc je vais voir ce que je peux faire avec. – dudefrmbgr