У меня есть небольшой текстовый файл (19250 слов / 7433 уникальных токена) и палочка для построения матрицы слов.
Я пробовал один и тот же код в Windows (16 ГБ ОЗУ) и Mac Ios (16 ГБ),На MAC код работает без сбоев.У меня продолжают появляться сообщения об ошибках памяти в Windows, даже если физическая память всегда имеет 11 ГБ + свободной.Я контролировал использование памяти во время выполнения сценария, и он всегда был ниже максимального предела.
Вот мой код:
import pandas as pd
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizer
corpus = open("cleancorpus.txt","r",encoding = "utf8")
def bow_extractor(corpus, ngram_range=(1,1)):
vectorizer = CountVectorizer(analyzer=u'word', binary=False, decode_error=u'strict',
encoding=u'utf-8', input=u'content',
lowercase=True, max_df=1.0, max_features=None, min_df=1,
ngram_range=(1, 1), preprocessor=None, stop_words=None,
strip_accents=None, token_pattern=u'(?u)\\b\\w\\w+\\b',
tokenizer=None, vocabulary=None)
features = vectorizer.fit_transform(corpus)
return vectorizer, features
bow_vectorizer, bow_features = bow_extractor(corpus)
features = bow_features.todense()
# This is where I get the error message.
Сообщение об ошибке выглядит следующим образом:
--------------------------------------------------------------------------- MemoryError Traceback (most recent call last) <ipython-input-107-60fc9be6d9fa> in <module>()
----> 1 features = bow_features.todense()
c:\program files (x86)\python36-32\lib\site-packages\scipy\sparse\base.py in todense(self, order, out)
790 `numpy.matrix` object that shares the same memory.
791 """
--> 792 return np.asmatrix(self.toarray(order=order, out=out))
793
794 def toarray(self, order=None, out=None):
c:\program files (x86)\python36-32\lib\site-packages\scipy\sparse\compressed.py in toarray(self, order, out)
941 if out is None and order is None:
942 order = self._swap('cf')[0]
--> 943 out = self._process_toarray_args(order, out)
944 if not (out.flags.c_contiguous or out.flags.f_contiguous):
945 raise ValueError('Output array must be C or F contiguous')
c:\program files (x86)\python36-32\lib\site-packages\scipy\sparse\base.py in
_process_toarray_args(self, order, out) 1128 return out 1129 else:
-> 1130 return np.zeros(self.shape, dtype=self.dtype, order=order) 1131 1132 def __numpy_ufunc__(self, func, method, pos, inputs, **kwargs):
MemoryError:
Кажется, это как-то связано с запуском кода в windows.У меня одинаковые версии библиотек для Mac и Windows:
scikit-learn 0.19.1 pandas 0.22.0 scipy 1.0.0 numpy 1.14.2
Месяц назад я опубликовал похожую проблему:"spacy MemoryError для маленького файла" (все еще не решен)
Любая подсказка будет приветствоваться!