Ich muss mehr als 1.000.000 Textdatensätze verarbeiten. Ich verwende CountVectorizer, um meine Daten zu transformieren. Ich habe den folgenden Code.Vektorisierung in Sklearn scheint sehr speicherintensiv zu sein. Warum?
TEXT = [data[i].values()[3] for i in range(len(data))] #these are the text records
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer(min_df=1)
X = vectorizer.fit_transform(TEXT)
X_list = X.toarray().tolist()
Wie ich diesen Code ausführen, wird es MemoryError
aus. Die Textaufzeichnungen, die ich habe, sind meist in kurzen Absätzen (~ 100 Wörter). Die Vektorisierung scheint sehr teuer zu sein.
UPDATE
habe ich mehr Einschränkungen CountVectorizer aber immer noch MemoeryError. Die Länge der feature_names
ist 2391.
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer(min_df=0.003,max_df = 3.05, lowercase = True, stop_words = 'english')
X = vectorizer.fit_transform(TEXT)
feature_names = vectorizer.get_feature_names()
X_tolist = X.toarray().tolist()
Traceback (most recent call last):
File "nlp2.py", line 42, in <module>
X_tolist = X.toarray().tolist()
File "/opt/conda/lib/python2.7/site-packages/scipy/sparse/compressed.py", line 940, in toarray
return self.tocoo(copy=False).toarray(order=order, out=out)
File "/opt/conda/lib/python2.7/site-packages/scipy/sparse/coo.py", line 250, in toarray
B = self._process_toarray_args(order, out)
File "/opt/conda/lib/python2.7/site-packages/scipy/sparse/base.py", line 817, in _process_toarray_args
return np.zeros(self.shape, dtype=self.dtype, order=order)
MemoryError
Warum so ist und wie man damit umgehen? Vielen Dank!!
Können Sie uns Zugriff gewähren zu Ihrem Datensatz? Auch welche Zeile ist der MemoryError an? Können Sie uns die Spur geben? – bpachev
Dank bpachev, weiß ich nicht, wie Sie Zugriff auf den Datensatz geben, wie es in einem Remote-Server mit Sicherheit ist MemoryError kommt nur, wenn ich 'X_list = X.toarray(). Tolist()' ausführe 'Ich wurde angewiesen, min und max_df zu setzen. Ich hatte nur min. – achimneyswallow