windows - scipy buehukommelsesfejl på små filer

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en lille tekstfil (19250 ord/7433 unikke tokens) og stav til at bygge en ordmatrix.


Jeg prøvede den samme kode på Windows (16 GB RAM) og Mac Ios (16 GB). På MAC kører koden problemfrit. Jeg holder hukommelsesfejlmeddelelser på Windows, selvom den fysiske hukommelse altid har 11 GB + fri. Jeg har overvåget brugen af ​​hukommelse under scriptets drift, og det var altid måder under maksimumsgrænsen.


Her er min kode:


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.


Fejlmeddelelsen er som følger:


--------------------------------------------------------------------------- MemoryError                               Traceback (most recent call last) <ipython-input-107-60fc9be6d9fa> in <module>()
----> 1 features = bow\_features.todense()

c:program files (x86)python36-32libsite-packagesscipysparsease.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-32libsite-packagesscipysparsecompressed.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-32libsite-packagesscipysparsease.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:


Det ser ud til at være en eller anden måde relateret til at køre koden på Windows. Jeg har de samme biblioteksversioner på Mac og Windows:


scikit-learn 0.19.1
pandas 0,22,0
scipy 1.0.0
numpy 1.14.2


For en måned siden skrev jeg et lignende problem: 'Spacy MemoryError for lille fil' (stadig uopløst)


Enhver hint ville være velkommen!

Bedste reference