Ошибка памяти в библиотеке linear_kernel для создания cosine_similities

У меня есть набор данных, который содержит 8 столбцов с 1482531 строк для каждого столбца, я пытаюсь сделать систему управления контентом на основе
создание косинусного сходства с использованием linear_kernel в python, но через полчаса это до меня доходит до памяти ошибок из-за большого объема данных, и если это их решение для решения этой проблемы

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import linear_kernel
from sklearn.model_selection import train_test_split

dataset = pd.read_csv('C:/data2/train.tsv',sep='\t', low_memory=False)

tf = TfidfVectorizer(analyzer='word', ngram_range=(1, 3), min_df=0, stop_words='english')

dataset['item_description'] = dataset['item_description'].fillna('')

tfidf_matrix.shape
((1482535, 13831759))

cosine_similarities = linear_kernel(tfidf_matrix, tfidf_matrix)

0 ответов

Если ваша система обладает достаточной вычислительной мощностью, вы можете попробовать следующий метод. Разделите данные на куски и запишите их в файл CSV (или DB), а затем используйте этот файл для прогнозирования. Вот небольшой пример, если у вас есть 1 000 000 записей (скажем).

import csv
with open('cosine_data_test.csv','a') as f:
    writer = csv.writer(f)
    i=0
    while i!=tfidf_matrix.shape[0]:
        if i%100000!=0:
            #Iterating over 10,000 multiples(10 chunks)
            cosine_sim = linear_kernel(tfidf_matrix[i:i+1000], tfidf_matrix)
            print("{} completed".format(i+1000))
            writer.writerows(cosine_sim)
            i= i + 10000
Другие вопросы по тегам