我需要处理超过1,000,000条文本记录。我正在使用CountVectorizer来转换我的数据。我有以下代码。sklearn中的矢量化似乎非常昂贵。为什么?
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()
当我运行此代码时,事实证明MemoryError
。我拥有的文字记录大部分是短文(约100字)。矢量化似乎非常昂贵。
UPDATE
我增加了更多的约束CountVectorizer但仍然有MemoeryError。的feature_names
长度为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
为何如此,如何用它来解决?谢谢!!
你可以给我们访问到你的数据集?此外,哪一行是MemoryError?你能给我们跟踪吗? – bpachev
感谢bpachev,我不知道如何让你访问数据集,因为它是在一个安全的远程服务器。 MemoryError只有当我执行X_list = X.toarray()时才会出现tolist()'我被告知设置min和max_df,我只有min。 – achimneyswallow