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

Measure similarity between 2 vectors

我正在尝试计算 2 个句子之间的相似度,所以我有 2 组单词,每个单词代表一个句子,还有一个函数 (F) 接收两个单词和 return 它们之间的相似度在某种方式 ..

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

我的问题是:

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

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

我通过以下方式得到了上面图表的分数:

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

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

3-最后,我把单词的分数加起来得到最后的分数,然后用它除以左边的单词数。 (1 + 0.8)/2 = 0.4

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