Я создал матрицу условий документа, используя Sklearn и TfidfVectorizer.
tfidf = TfidfVectorizer(use_idf = True,
norm = normalization,
min_df = min_doc_freq)
dtm = tfidf.fit_transform(text)
Это дает разреженную матрицу 128 111 x 3469, формат CSR с 1 865 094 сохраненными элементами.Я хочу умножить это на транспонирование, но каждый раз, когда я делаю, я получаю ошибку памяти.
Матрица 128,111 x 3469, что означает, что результирующая матрица должна быть 128,111 x 128,111, что не кажется БОЛЬШИМ.
Я использую Python 3.7.2, 64 бит.На момент написания этой статьи у используемой виртуальной машины было 84 гигабайта оперативной памяти (всего более 125).
Я пробовал следующий код и каждый раз получал одну и ту же ошибку:
sim = dtm * dtm.T #(also used dtm.transpose())
sim = dtm @ dtm.T
sim = dtm.dot(dtm.T)
Я ожидал, что будет возвращена разреженная матрица, но я получаю "MemoryError".
~/utilities/anaconda3/lib/python3.7/site-packages/scipy/sparse/compressed.py in _mul_sparse_matrix(self, other)
500 maxval=nnz)
501 indptr = np.asarray(indptr, dtype=idx_dtype)
--> 502 indices = np.empty(nnz, dtype=idx_dtype)
503 data = np.empty(nnz, dtype=upcast(self.dtype, other.dtype))
504 MemoryError: