我正在尝试实现 textrank 算法,我正在计算所有句子的余弦相似度矩阵。我想使用 Spark 并行化创建相似度矩阵的任务,但不知道如何实现它。代码如下:
cluster_summary_dict = {}
for cluster,sentences in tqdm(cluster_wise_sen.items()):
sen_sim_matrix = np.zeros([len(sentences),len(sentences)])
for row in range(len(sentences)):
for col in range(len(sentences)):
if row != col:
sen_sim_matrix[row][col] = cosine_similarity(cluster_dict[cluster]
[row].reshape(1,100), cluster_dict[cluster]
[col].reshape(1,100))[0,0]
sentence_graph = nx.from_numpy_array(sen_sim_matrix)
scores = nx.pagerank(sentence_graph)
pagerank_sentences = sorted(((scores[k],sent) for k,sent in enumerate(sentences)),
reverse=True)
cluster_summary_dict[cluster] = pagerank_sentences
这里,cluster_wise_sen 是一个字典,其中包含不同簇的句子列表({'cluster 1' : [list of sentence] ,...., 'cluster n' : [list of sentence]})。cluster_dict 包含句子的 100d 向量表示。我必须为每个集群计算句子相似度矩阵。由于它很耗时,因此希望使用 spark 将其并行化。