нахождение косинусного сходства для разреженной матрицы с использованием pyspark - PullRequest
0 голосов
/ 05 февраля 2020

Я создаю систему рекомендаций, которая в настоящее время насчитывает около миллиона записей для фильмов / ТВ-шоу и 4000+ функций, в то время как вычисляя косинус сходства для фильмов / ТВ-шоу, он получает MemoryError

        indices = np.empty(nnz, dtype=idx_dtype)
MemoryError

При поиске решений я натолкнулся на один похожий вопрос ( рекомендация по пунктам на основе косинусного сходства ), который выглядит как разрешенная проблема.

Я ищу похожий вид подход с использованием pyspark, но не в состоянии достичь реального кода.

Вот моя версия

def init_count_vectorizer(self):
    count = CountVectorizer(analyzer='word', stop_words='english')
    count_matrix = count.fit_transform(self.movie_df['keywords'])
    count_matrix_actors = count.fit_transform(self.movie_df['actor_directors'])
    self.cosine_sim.append(cosine_similarity(count_matrix))
    self.cosine_sim.append(cosine_similarity(count_matrix_actors))

Это ошибка, которую я получаю,

  File "<ipython-input-283-973e96267f48>", line 1, in <module>
    hybrid_recommender.init_count_vectorizer()

  File "<ipython-input-280-9b5de8c2b2c6>", line 34, in init_count_vectorizer
    self.cosine_sim.append(cosine_similarity(count_matrix, dense_output=False))

  File "C:\Users\Niranjan Kumar\Anaconda3\lib\site-packages\sklearn\metrics\pairwise.py", line 1176, in cosine_similarity
    dense_output=dense_output)

  File "C:\Users\Niranjan Kumar\Anaconda3\lib\site-packages\sklearn\utils\extmath.py", line 151, in safe_sparse_dot
    ret = a @ b

  File "C:\Users\Niranjan Kumar\Anaconda3\lib\site-packages\scipy\sparse\base.py", line 562, in __matmul__
    return self.__mul__(other)

  File "C:\Users\Niranjan Kumar\Anaconda3\lib\site-packages\scipy\sparse\base.py", line 482, in __mul__
    return self._mul_sparse_matrix(other)

  File "C:\Users\Niranjan Kumar\Anaconda3\lib\site-packages\scipy\sparse\compressed.py", line 511, in _mul_sparse_matrix
    indices = np.empty(nnz, dtype=idx_dtype)

MemoryError
...