【问题标题】:Normalize the similarity between word vectors and document vectors?归一化词向量和文档向量之间的相似性?
【发布时间】:2018-05-15 02:18:06
【问题描述】:

余弦相似度广泛用于衡量两个向量之间的相似度,其中两个可以是词向量或文档向量。

其他的,如曼哈顿、欧几里得、明可夫斯基等,也很受欢迎。

余弦相似度给出了 0 到 1 之间的数字,所以它看起来像是两个向量之间相似度的百分比。欧几里得给出了一些变化很大的数字。

.

当两个向量之间的余弦相似度为 0.78xxx 时,包括我在内的人可能会期望“这两个向量相似度为 78%!”,这并不是两个向量的实际“相似度”。

.

与余弦相似度不同,minkowski、manhattan、canberra 等甚至给出了一些不在 0 到 1 范围内的大数。

For word1:word2 example
0.78 (cosine, gives between 0 to 1)
9.54 (Euclidean, gives the actual distance between two vectors)
158.417 (Canberra)

.

我希望可能有一些归一化方法被广泛用于表示两个向量之间的实际“相似度”。如果您知道一些,请提供。如果有文章或论文就更好了。

For word1:word2 example
0.848 (cosine, transformed as normalized number)
0.758 (Euclidean, normalized between 0 to 1)
0.798 (Canberra, normalized between 0 to 1)

我不希望你提到softmax数,因为我读过一篇文章,softmax数本身不应该被视为实际百分比。

【问题讨论】:

    标签: vector compare similarity word2vec doc2vec


    【解决方案1】:

    您必须严格定义“实际‘相似度’”的含义,才能获得任何可能的答案。

    这些措施中的每一个都是有用的。如果您需要该范围内的东西,每个都可以缩放到从 0.0 到 1.0 的值。但这并不一定会使它们中的任何一个成为“百分比相似度”,因为“百分比相似度”不是一个具有严格含义的概念。

    【讨论】:

    • 嗨,gojomo。我知道在某个范围内将分数变成固定数量几乎是不可能的,因为它们都在相对域中。因此,当给定完全相同的两个句子存在于那些不同的域中时,每种情况的相似性可能与其他情况完全不同。例如,句子 A 和 B 之间的余弦相似度在域#1 中约为 0.87,但在域#2 中约为 0.51。这就是为什么我想知道 1. 是否有任何方法可以像这种情况一样概括相似性度量 2. 将其他算法的分数从 0.0 更改为 1.0
    • 我不确定我所问的意图是否很好地传达给了您。不过,您似乎明白我在问什么。
    • 你是对的,相同的句子,句子 A 和句子 B,在不同的模型中会有不同的余弦相似度——例如,取决于 other 句子是什么包括在训练中、改变词义、向量维度的数量、negative 示例的数量等。但仍然不清楚你想对此做什么 - 每个都没有“一个真正的相似性”转换后,这一切都依赖于数据、参数、目标等。
    • 如果您的真正目标只是“将更广泛的范围映射到 [0.0, 1.0]”,有很多方法可以做到这一点,但没有一种方法最适合所有用途,尤其是如果您想要将它们与具有不同分布的其他 0.0-1.0 值进行比较。例如,如果您知道某个值的最大值 M,只需将所有值除以 M - 瞧,现在所有值都 v' = 1 - ( 1 / (1+v)) - 将所有正值转换为从 0 到 1 的值。但是这些值是否与其他 0-1 值可比,或者都聚集在一端,取决于细节。
    • 您还可以看到 stats.stackexchange.com/questions/70801/… - 并注意有时可以混合使用日志操作以更好地保持较长值范围内的对比度。
    猜你喜欢
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多