0
次のコードを使用して~20,000,000個のドキュメントにtf-idfモデルを生成しました。私はメモリ使用量が吹くまでlinear_kernel使用して類似性スコアを計算しようとすると、問題がある: Tfidf行列と予測ベクトルの類似度を計算するとメモリオーバーフローが発生する
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import linear_kernel
train_file = "docs.txt"
train_docs = DocReader(train_file) #DocReader is a generator for individual documents
vectorizer = TfidfVectorizer(stop_words='english',max_df=0.2,min_df=5)
X = vectorizer.fit_transform(train_docs)
#predicting a new vector, this works well when I check the predictions
indoc = "This is an example of a new doc to be predicted"
invec = vectorizer.transform([indoc])
#This is where the memory blows up
similarities = linear_kernel(invec, X).flatten()
は20ミルに1行-CSRの比較を行って、多くのメモリを取るべきではありません。このように思えます-row-CSRは、1x20milのndarrayを出力する必要があります。
Justy FYI:XはCSRマトリックス〜12 GBのメモリです(コンピュータには16個しかありません)。私はこれを置き換えるためにgensimを調べてみましたが、私は素晴らしい例を見つけることができません。
私が紛失しているものについて考えてみませんか?
おかげでブラッド、これは私の目的のためにはかなりうまく動作します!私はなぜメモリオーバーフロー、おそらくスパース行列の乗算の私の貧しい人々の理解とは何かを得ていたかわからない:) – jowparks