Слишком большой результат при использовании scikit linear_kernel для вычисления TF-IDF - PullRequest
1 голос
/ 06 марта 2020

Я новичок в python и в настоящее время пытаюсь разработать систему рекомендаций на основе контента. Я читаю CSV-файл с около 60 000 строк и использую TfidfVectorizer.fit_transform, который создает размер матрицы (63098, 9081), а затем применяет linear_kernel, который затем вылетает и возвращает ошибку RuntimeError: nnz результата слишком велико.

tf = TfidfVectorizer(analyzer='word', ngram_range=(1, 3), min_df=100, stop_words='english')
tfidf_matrix = tf.fit_transform(ds['description'])
result = linear_kernel(tfidf_matrix, tfidf_matrix)

Журналы показывают, что предполагаемый результат будет размером 20 ГБ. Есть ли способ разбить данные на части и как применить это в моей текущей структуре? Заранее спасибо.

1 Ответ

0 голосов
/ 06 марта 2020

Это потому, что вы используете все уникальные слова в ваших данных для создания TfidfVectorizer Форма вашей матрицы будет No. of documents * No. of unique words, текущая память вашей системы может не поддерживать этот размер, чтобы избежать ошибки памяти, которую вы можете ограничить размер матрицы с использованием параметра max_features, как указано в документах

Обычно используется размер 5000 или 10000, но вы можете попробовать другие значения и посмотреть, что подходит вы.

...