Algorithm 计算点积以计算接近度

Algorithm 计算点积以计算接近度,algorithm,indexing,search-engine,information-retrieval,relevance,Algorithm,Indexing,Search Engine,Information Retrieval,Relevance,我已经在会议上提出了类似的问题。 不过,我觉得这个问题太笼统,不够精炼。这就来了 我有一个列表,其中包含令牌在文档中的位置。对于每个令牌,它都是 public List<int> hitLocation; 问题是 java island language 假设我锁定Java HitList并尝试直接计算Java HisList、Island HitList和Language HitList之间的距离 现在第一个问题是,在这个句子中出现了4个java标记。我选择哪一个。假设我选择了

我已经在会议上提出了类似的问题。 不过,我觉得这个问题太笼统,不够精炼。这就来了

我有一个列表,其中包含令牌在文档中的位置。对于每个令牌,它都是

public List<int> hitLocation;
问题是

java island language
假设我锁定Java HitList并尝试直接计算Java HisList、Island HitList和Language HitList之间的距离

现在第一个问题是,在这个句子中出现了4个java标记。我选择哪一个。假设我选择了第一个

我进入孤岛令牌列表,比较后发现它与第二次出现的java相邻。因此,我更改了我的选择并锁定到java的第二个实例

继续讨论第三种令牌语言,我发现它与我们的选择有相当大的距离,但是我发现它非常接近第一种java语言

因此,如果现在再次回到最初的选择,即java的第一次出现,到第二个令牌岛的距离会增加,如果我继续使用当前的选择,令牌语言的第二次出现的绝对距离会使相关性受损

之前有关于dot product的建议,但我不知道如何继续使用该选项

任何其他解决办法也将受到欢迎

我知道这个问题很详细。然而,我已经搜索了很长时间,在这个话题上还没有发现任何类似的问题

我觉得如果这个问题得到了回答,这将是对社区的一个巨大的补充,并将使任何设计与相关性相关的东西的人都非常高兴


谢谢。

您使用的热门单子似乎与预期的使用方式略有不同,至少在我看来是这样的

通常,人们会比较不同文档返回的命中列表。这就是他们如何将一个文档归类为比另一个文档更相关的文档

也就是说,如果你想找到一些多单词短语的所有位置,比如java island,给定单词java和island的位置,你会

获取java的位置列表 获取岛屿的位置列表 对两个列表进行排序 同时迭代两个列表。您将开始获得两个列表的第一个条目。现在测试这对条目。也就是说,如果这些条目被一一关闭,那么您已经找到了java island或island java的一个实例。获取列表中当前显示最小值的下一个条目。测试这对新条目。重复
顺便说一句,在比较两个不同的文档时,点产品更有用。

好吧,既然你明确询问了点产品建议,我将尝试更正式地解释一下我的想法。请记住,它不是很有效,因为它可能会将复杂性从基于hitlists的长度转换为基于文本长度的内容,除非有什么技巧可以减少这种复杂性

我最初的想法是将每个命中列表转换为一系列文本长度的二进制值,在命中率高的地方转换为高值,否则转换为低值

例如,java看起来

1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 
但是,由于需要接近度,请将每个引用转换为金字塔,例如-

3 2 1 0 0 0 1 2 3 2 1 0 0 0 1 2 3 2 0 0 0 0 0 1 2 3 
岛上也是这样-

0 0 0 0 0 0 0 1 2 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
现在一个点积会给出两个向量之间的某种接近度分数,因为它累加了两个词越近越好的所有位置。爪哇岛和岛屿可以说是互得16分。对于更高的阈值,您可以进一步拉伸金字塔,或使用形状

现在,您添加了另一个建议,即此方法不太适合,您还希望捕获最高接近度的确切位置,这不是很好定义的IMHO,如果word1在位置1的某个级别与word2匹配,但是word2在位置2的同一级别与word3匹配,您会想要什么位置


另外,请记住,这种方法是文本长度*单词^2,在某些情况下可能是好的,但如果您正在搜索圣经,则对其他情况非常不利,例如。

好吧,伙计们,我意识到我回答自己的问题有点晚了。所以,对于所有试图从反向索引开始计算单词接近度的人来说,应该看看这个链接
0 0 0 0 0 0 0 1 2 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0