测量2个向量之间的相似性

时间:2016-12-29 05:19:56

标签: java math vector similarity

我正在尝试计算两个句子之间的相似度,所以我有两组单词,每个单词代表一个句子,一个函数(F)接收两个单词并以某种方式返回它们之间的相似性。 Image 1

在图像1中,黑色圆圈是句子A的单词,红色方块表示句子B. 对于每次函数(F)接收2个单词,它返回介于0.0和1.0之间的值,例如:A中的第一个单词和B中的第三个单词具有0.3个相似度分数。 我使用了M x N比较,因为两个句子的顺序往往不一样,而且单词的数量。

我的问题是:

  1. 在获得所有M x N比较分数后,我怎么能得到一个决赛 得分在0.0和1.0之间,表示两者的相似性 句子或清单? “因为两句话的长度并不总是如此 等于

  2. 如果这种做法不对,还有什么选择?

1 个答案:

答案 0 :(得分:0)

我通过以下方式获得上述图表的分数:

1-当我得到2个列表时,较短的列表将位于左侧。

对于左侧的每个单词,我已经提取了max(在我们的示例中为1.0),然后将其除以右侧的单词数以获得该单词的分数。

3-最后,我总结了单词的得分,得到最终得分,然后除以左边的单词数。 (1 + 0.8)/ 2 = 0.4

这种类型的计算取决于关系的性质,因为每个单词可能具有高于ZERO的关系,但如果每个单词只有ZERO之上的一个关系与其他关系,我们不应该将最终得分除以数字最后一步中的单词。