相似性矩阵 -> 特征向量算法?

6
如果我们有一个包含M个单词的集合,并且预先知道每对单词意义相似性的相似度(有一个M x M相似矩阵),那么我们可以使用哪个算法为每个单词生成一个k维位向量,使得只需比较它们的向量(例如获取向量的绝对差异),即可比较每对单词?
我不知道这个特定问题叫什么。如果我知道,找到一堆描述类似但做其他事情的算法会更容易。
额外观察:
我认为这个算法需要产生一个,在这种情况下想要的,副作用。如果从矩阵中发现单词A与单词B相似,并且单词B与单词C相似,但是检测到[A,C]之间的相似度较低,则计算出的结果向量差应该产生高度的[A,C]相似度。因此,我们会以某种方式用这个算法来填补矩阵中以前的空缺 - 平滑相似度。但除了这种平滑之外,目标是尽可能接近我们在矩阵中拥有的原始数字。

1
你是说你有一个函数f(a,b),它返回单词a和b的相似度,但你想以不同的方式计算相同的f(a,b)吗? - Vaughn Cato
当然,由于内存的限制,我不想拥有一个巨大的(M x M)相似度矩阵,因为我只能拥有M个(n维)向量来表示相同(或近似)的信息。 - Ognjen
这听起来像是一个特征分解问题。 - Vaughn Cato
实际上,您可能想要查看主成分分析或因子分析。 - Vaughn Cato
2个回答

7
你可以进行截断奇异值分解(SVD),以找到矩阵的最佳k秩近似。思路是将矩阵分解为三个矩阵:U、sigma和V,其中U和V是正交的,sigma是对角线矩阵。

通过截断不重要的奇异值,你可以实现O(k*m)的存储空间。


0

如果您只对第一个特征向量和特征值感兴趣,那么幂迭代可能会很有用。我曾经使用它从文本文档中提取关键词。(基于句子内单词间的距离,但相似性也可能有效)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接