Присоединение столбцов CSV к списку в кусках в Python - PullRequest
0 голосов
/ 09 мая 2019

Я хочу преобразовать файл CSV (в формате матрицы терминов документа (TDM) (столбцы: документы; строки: термины; частота терминов ячеек в документе)) в файл корпуса для загрузки в модуль Gensim для применение тематического моделирования. В настоящее время это делается с помощью этого кода ({ids} является словарем и отлично работает даже для огромного количества строк):

ids = {}
corpus = []

with open(dateiname_TDM, newline='') as csvfile:
    reader = csv.reader(csvfile, delimiter=';', quotechar='|') 
    documente = next(reader, None)[1:]
    for rownumber, row in enumerate(reader): 
        for index, field in enumerate(row):
            if index == 0:
                if rownumber > 0:
                    ids[rownumber-1] = field 
            else:
                if rownumber == 0:
                    corpus.append([])
                else:
                    try:
                        corpus[index-1].append((rownumber-1, int(field)))
                    except ValueError:
                        corpus[index-1].append((rownumber-1, 0))

Когда TDM состоит из слишком большого количества строк и / или столбцов, возникает проблема, связанная с тем, что на моем компьютере заканчивается ОЗУ и не удается добавить дополнительные значения в список корпусов. Список корпусов имеет следующий вид [[(i, j), (i + 1, k), ...], [(,), ...], [...]]. Файл корпуса имеет длину номеров документов и в каждом кортеже находится индекс (i) терминов, начиная с 0 до последнего. j - частота термина i в корпусе документа [x].

Есть ли возможность добавить список корпусов кусками от количества документов, например, 10 документов за раз?

Поскольку код сильно внедрен, я понятия не имею, где и как реализовать в нем функцию чанка. В моем предыдущем вопросе я пытался решить его с помощью генератора вне встраивания, который не работал ( Как реализовать функцию chunksize в код чтения csv ).

...