文本资源管理器中的余弦相似度测量是否可以在文本资源管理器中进行余弦相似度测量来识别彼此“接近”的文档。我看到我们可以对文档进行聚类并进行潜在语义分析,但我没有看到任何计算余弦相似度度量的方法。任何帮助将不胜感激。
拉胡尔
回复:文本资源管理器中的余弦相似度测量这是一个很好的问题! 当所考虑的向量居中(即平均值为零)时,余弦相似性系数将与相关系数相同。 传统上,在信息检索领域,创建数据项矩阵(DTM)并直接对其进行奇异值分解(SVD),而不对向量进行中心化或标准化(即中心化和缩放)。 与此类似,余弦相似度是与非中心向量关联的度量。
然而,将 DTM 居中具有重要的优势。 具体来说,如果尚未进行居中,则 SVD(您的第一个维度或主题)中的第一个奇异向量不一定是多维空间中最重要的奇异向量。 这就是 JMP 允许用户集中和/或标准化 DTM 以用于潜在语义分析或主题分析的原因之一。 类似地,相关系数是从中心和缩放(即标准化)DTM 获得的。
总之,您可以通过将 DTM 保存到数据表并转到“分析”>“多元方法”>“多元”,将所有 DTM 列添加到 Y 角色中并单击“确定”,轻松获得向量相似性的度量。 所得的相关矩阵将指向向量的相似程度。 也就是说,值 1 表示两个相同方向的相同向量,而值 -1 表示两个相同方向的相同向量,依此类推。 最后,如果您想查找文档而不是术语之间的相似性,则必须在执行上述步骤之前转置数据。
哈特哈,
~劳拉
聚苯乙烯 如果您尚未升级到 JMP 13.2,我强烈建议您升级。 请看一下我的帖子这里因此您可以了解 13.2 中对文本资源管理器的改进。
回复:文本资源管理器中的余弦相似度测量感谢帮助。这就是我想做的事情。得到矩阵并自己做。我想知道它是内置的吗?
拉胡尔
回复:文本资源管理器中的余弦相似度测量由于 JMP 允许您保存文档术语矩阵 (DTM),因此您始终可以直接计算它。 所附表格是根据“飞机事故”样本数据制作的。 下面的代码(在我的笔记本电脑上运行需要几秒钟)在第二个附表中生成了相似性矩阵。
// https://en.wikipedia.org/wiki/Cosine_similarity
NamesDefaultToHere(1);
dt = CurrentDataTable();
m = dt << getAsMatrix;
n = NRow(dt);
// Make some column headings for the final table
cols = {};
for(i=1, i<=n, i++,
InsertInto(cols, "Document in Row "||Char(i));
);
// Get the modulus of each feature vector
modulus = J(n, 1, .);
for(i=1, i<=n, i++,
modulus[i] = sqrt(ssq(m[i,0]));
);
// Get the cosine of the angle between each pair of feature vectors
cosTheta = J(n, n, .);
for(i=1, i<=n, i++,
for(j=1, j<=i, j++,
cosTheta[i,j] = Sum(m[i, 0]
m[j, 0])/(modulus[i] * modulus[j]);
);
);
dt2 = AsTable(cosTheta, << ColumnNames(cols));
dt2 << setName("Cosine between feature vectors in "||(dt << getName));