簡體   English   中英

我無法獲得我的 tf-idf 矩陣的余弦相似度,因為 Google Colaboratory 給了我一個內存 RAM 錯誤

[英]I can't obtain the cosine similarity of my tf-idf matrix because Google Colaboratory gives me a memory RAM error

有人可以幫我嗎? 幾天來,我一直在嘗試解決與 Google Colaboratory 工作區有關的問題、可用 RAM 中的錯誤以及通過余弦相似度和其他不同的 TF-IDF 矩陣的相似標點符號的演算指標。 我無法修復它,這對我來說真的很重要,因為它是我必須為我的 TFG 編寫的一段代碼,這是一個基於內容的推薦系統,它通過使用為您提供 10 部最相似的電影電影的描述(這就是為什么我必須使用 TD-IDF 矩陣,將 BBDD 中任何電影的文本或“文檔”轉換為我的機器學習算法可以理解的數字格式)。

首先,我加載了 .csv 文件,我們可以在其中找到包含所有電影描述的電影,這些電影包含在 pandas DataFrame 的“概述”列中(為簡單起見,我讓您使用代碼):

import pandas as pd
metadata = pd.read_csv("movies_metadata.csv", low_memory = False)
metadata.loc[:, ["original_title","overview"]].head()

然后,我想在“概述”中獲得該電影描述的 TF-IDF 矩陣。 為此,我實現了這段代碼:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import linear_kernel

tfidf = TfidfVectorizer(stop_words = "English")
metadata["overview"] = metadata["overview"].fillna("")
tfidf_matrix = tfidf.fit_transform(metadata["overview"])
tfidf_matrix.shape

如您所見,得到了矩陣(一個稀疏矩陣),而且是一個巨大的矩陣! 它的維度是 45466 行和 75827 列。 我認為我的問題的原因就是這個。

當我想計算電影之間的對余弦相似度標點符號時,我應該得到一個(45466,45466)矩陣; 但是,當我運行以下代碼時,Google Colaboratory 給了我一個錯誤,上面寫着“您的會話失敗,因為您已經使用了所有可用的 RAM 內存”:

from sklearn.metrics.pairwise import linear_kernel
cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)

我不知道如何解決它......但我知道的是,我真的需要獲得電影之間的余弦相似度以供我學習。

在我一直用於學習此機器學習主題的數據營教程中, 在此處輸入鏈接描述

你可以看到他們毫無問題地獲得了 cosine_sim 矩陣......為什么對我來說不能一樣?

我一直在嘗試使用其他代碼行,例如:

from sklearn.metrics.pairwise import pairwise_distances as pd
cosine_sim = pd(tfidf_matrix, tfidf_matrix, metric = "cosine")

甚至,我嘗試使用在 Internet 上找到的代碼來擴大 Google Colab 的 RAM:

a = []
while(1):
a.append('1')

但它並不正確。 我希望任何人都可以給我一個解決方案...

非常感謝您的關注,給您帶來的不便深表歉意!

雖然為時已晚,但可能對其他人有所幫助,因為我昨天在這里着陸。

問題這是因為內存問題,它需要大約 15gb+ 內存,而系統中沒有,為什么在DataCamp教程中一切順利,他們可能使用雲/他們已經升級了系統。 在正常系統中可能會出現此問題。

解決方案按照相同的教程減少數據的大小,只需添加此行以獲得Top N Rows並進行實驗。 此解決方案用於學習和理解概念。 否則,您必須升級系統或遵循任何其他技術。 在讀取csv后添加以下代碼行

N = 300 #you can add any number of rows here that works with your system's memory.
metadata = metadata.head(N)

就這樣。 您將不會再看到內存錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM