将 linear_kernel 或 cosine_similarity 用于 TfIdfVectorizer 时,出现错误“内核已死,正在重新启动”

ana*_*ana 6 kernel cosine-similarity tfidfvectorizer

使用 linear_kernel 或cosine_similarityfor 时TfIdfVectorizer,出现错误“内核已死亡,正在重新启动”

我正在为 TfID 方法 Vectorizer 和fit_transform一些文本数据运行 scikit 学习函数,如下例所示,但是当我想计算距离矩阵时,我收到错误"Kernel dead, restarting "

无论我使用的是cosine_similarity还是linear_kernel函数:

tf = TfidfVectorizer(analyzer='word' stop_words='english')
tfidf_matrix = tf.fit_transform(products['ProductDescription'])

 --cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)
 --cosine_sim = cosine_similarity(tfidf_matrix, tfidf_matrix)
Run Code Online (Sandbox Code Playgroud)

也许问题是我的数据的大小?

我的 tiidf 矩阵是 (178350,143529),它应该生成一个 (178350,178350) cosine_sim 矩阵。

小智 0

据我了解,您想要计算 N x N 相似度表。

在这种情况下(csr矩阵相当大),很难立即计算,我的方法是cosine_similarity(tfidf_matrix[index], tfidf_matrix[:]) * N times

实际上我是用 pyspark 执行的

def calculate_one_to_all_similarity(index):
    ...
    cosine_similarity(tfidf_matrix[index], tfidf_matrix[:]
rdd.map(lambda r: calculate_one_to_all_similarity(r2index[r]))
Run Code Online (Sandbox Code Playgroud)