Как получить матрицу совместного вхождения в python, необходимую для модуля GloVe
Чтобы использовать этот модуль GloVe, мне нужна точно определенная форма матрицы сопутствующих явлений. На данный момент у меня есть это:
def wwcoomtrx(inlist):
logging.info('libmatrix.py > wwcoomtrx')
vocabulary = {} # map terms to column indices
data = [] # values (maybe weights)
row = [] # row (document) indices
col = [] # column (term) indices
for i, doc in enumerate(inlist):
for term in doc:
# get column index, adding the term to the vocabulary if needed
j = vocabulary.setdefault(term, len(vocabulary))
data.append(1) # uniform weights
row.append(i)
col.append(j)
A = scipy.sparse.coo_matrix((data, (row, col)))
return A.T*A
В результате чего-то вроде этого в моем 2D-списке слов:
(0, 172) 3
(0, 171) 3
(0, 170) 3
(0, 169) 3
(0, 168) 3
(0, 167) 3
: :
(2389, 54) 4
(2389, 52) 1
(2389, 40) 3
(2389, 24) 1
(2389, 20) 7
(2389, 15) 1
Но мне нужно что-то вроде этого:
cooccur = {
0: {
0: 1.0,
2: 3.5
},
1: {
2: 0.5
},
2: {
0: 3.5,
1: 0.5,
2: 1.2
}
}
Я не знаю, как это преобразовать.