Как уменьшить использование памяти для TfIdfVectorizer - PullRequest
0 голосов
/ 07 февраля 2020
 def train(self, textlines):

        doc_list = batch_nlp_process(textlines)
        docs = []
        log_every_n = 100000
        for i, doc in enumerate(doc_list):
            docs.append([token for token in doc])
            if (i % log_every_n) == 0:
                logger.info('Doc: {}'.format(str(i)))


        self.vectorizer.fit_transform(docs)
        pickle.dump(self.vectorizer, open('models/vectorizer.pkl', 'wb'))

Это для тренировки модели TfIDF с моим собственным токенизатором. Таким образом, ввод fit_transform представляет собой список списка:

[['this', 'is', 'a', 'test'],['another', 'test'],['one', 'more', 'test']]

При большом файле это занимает много памяти, так как все текстовые файлы должны быть обработаны в первую очередь, а результаты загружены в 'документы 'list, который затем передается в метод fit_transform.

Существует ли способ постепенного подбора fit_transform для каждого, выполняющего c по одному, а не все сразу? Если я переместу fit_transform в for для l oop, это не будет работать? что означает, что я подхожу один раз для каждого входящего сделать c. Это так же, как подходят все сразу?

...