【问题标题】:Fast vector difference/similarity measures快速向量差异/相似性度量
【发布时间】:2011-05-25 00:29:27
【问题描述】:


我正在做一个项目,我正在使用遗传算法生成最能描述文本的单词列表。
我目前正在使用余弦相似度来做到这一点,但它有两个缺陷:它对于目的来说太慢了,如果要比较的两个向量为零,它最终会得到人为的高相似度和一个不是很好的词向量好的。 对于其他更快/更少注意不存在的单词的其他措施有什么建议吗? 谢谢。

【问题讨论】:

标签: java optimization similarity trigonometry


【解决方案1】:

余弦相似度是量积上的点积,因此最小化维数至关重要。

要稍微剔除一下,您可能需要应用stemming 将具有相似含义的单词折叠到一个维度中,并从维度中丢弃hapax legomena(在所考虑的语料库中只出现一次的单词)池,因为算法不太可能从中获得很多有用的信息。

不过,我不确定什么会导致零向量。可以举个例子吗?

编辑: 那么您要为特定文档或集群创建一个选择性的单词列表?在这种情况下,您需要一些方法来消除低选择性单词。

您可能希望将最常用的词视为stop words 以进一步剔除您的维度集并获得更多性能。此外,在遗传算法方面,您的适应度函数需要惩罚与目标集群外的文档匹配的单词列表,而不仅仅是奖励与集群内的文档匹配的单词列表,因此您的单词列表不会被仅仅是频繁而不是选择性。

如果您在调整适应度函数后仍需要更好的语义选择性,您可能需要考虑使用orthogonal sparse bigrams 而不是单个单词。不过,我不知道它在维数方面会做什么,因为虽然会有 O(kn2) 不同的术语而不是 n,更多的将是hapaxes。但是,如果您在术语列表中需要单个单词而不是 OSB,这可能会导致问题。

【讨论】:

  • 我有点误会了,基本上我的集合的稀疏性(很多 hapaxes 和数千个单词多次使用)意味着相似性通常非常高,尽管它们不能代表一个好的集群语料库。
猜你喜欢
  • 2017-12-08
  • 2016-10-28
  • 2018-01-04
  • 2011-05-03
  • 1970-01-01
  • 2016-05-29
  • 2023-03-12
  • 2019-05-16
  • 1970-01-01
相关资源
最近更新 更多