Я хочу использовать следующий код для расчета совпадения и создания матрицы совпадения: https://stackoverflow.com/a/42814963.
from collections import OrderedDict
document = [['A', 'B'], ['C', 'B'], ['A', 'B', 'C', 'D']]
names = ['A', 'B', 'C', 'D']
occurrences = OrderedDict((name, OrderedDict((name, 0) for name in names)) for name in names)
# Find the co-occurrences:
for l in document:
for i in range(len(l)):
for item in l[:i] + l[i + 1:]:
occurrences[l[i]][item] += 1
К сожалению, мой набор данных состоит из 2Mio.+ документы.Поэтому я хочу разделить анализ на куски и объединить данные через pandas.DataFrame после каждого куска.Я попробовал это в следующем коде:
k=3000
df_final = pandas.DataFrame()
for i in range(0, (len(vocabulary)//k)+k):
vocabulary_chunk = []
vocabulary_chunk = vocabulary[(k*i):((i+1)*k)]
occurrences = OrderedDict((name, OrderedDict((name, 0) for name in vocabulary)) for name in vocabulary_chunk)
# Find the co-occurrences:
for l in term_constellation:
for i in range(len(l)):
for item in l[:i] + l[i + 1:]:
occurrences[l[i]][item] += 1
df = pandas.DataFrame(data=occurrences)
df_final = df_final + df
pandas.DataFrame(data=df_final).to_csv("Output.csv", sep=";", decimal=',')
В моем логическом мышлении это должно работать.К сожалению, я получаю следующую ошибку:
occurrences[l[i]][item] += 1
KeyError: 'factor'
Я применил код к меньшему количеству документов, и ошибки не возникло, но выходной файл содержал не только имена строк и столбцов, но и никаких значений.
Чего не хватает в моем коде?