文档(行)之间的余弦相似性 - spark

时间:2017-07-27 14:18:15

标签: java apache-spark apache-spark-mllib cosine-similarity

我有计算文本文档之间相似性的火花工作:

RowMatrix rowMatrix = new RowMatrix(vectorsRDD.rdd());      
CoordinateMatrix  rowsimilarity=rowMatrix.columnSimilarities(0.5);
JavaRDD<MatrixEntry> entries = rowsimilarity.entries().toJavaRDD();

List<MatrixEntry> list = entries.collect();

for(MatrixEntry s : list) System.out.println(s);

MatrixEntry(i,j,value)表示列之间的相似性(让我们说文档的特征)。但是如何显示行之间的相似性? 假设我有五个文件Doc1,...... Doc5,我们希望显示所有这些文件之间的相似性。 我们怎么做到的? 有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

您必须转置矩阵: 您应该从RowMaxtrix-> IndexedRowMatrix-> BlockMatrix->转置-> BlockMatrix-> IndexedRowMatrix-> RowMatrix

开始
IndexedRowMatrix rowMatrix = new IndexedRowMatrix(vectorsRDD.rdd());
CoordinateMatrix  rowsimilarity= rowMatrix.toBlockMatrix().transpose().toIndexedRowMatrix().toRowMatrix().columnSimilarities(0.5);
JavaRDD<MatrixEntry> entries = rowsimilarity.entries().toJavaRDD();
List<MatrixEntry> list = entries.collect();
for(MatrixEntry s : list) System.out.println(s);