代码之家  ›  专栏  ›  技术社区  ›  robob

用于索引相似文本的哈希函数

  •  4
  • robob  · 技术社区  · 15 年前

    我正在搜索一种哈希函数来索引相似的文本。例如,如果我们有两个很长的文本,叫做“A”和“B”,其中A和B相差不大,那么应用于A和B的散列函数(叫做H)应该返回相同的数字。

    所以H(A)=H(B),其中A和B是相似的文本。

    A=“这是我要散列的很长的文本” B=“这是最重要的”

    ==>双变音(A)=双变音(B)

    这对我来说不太好,因为具有相同前缀的字符串可以比较为相似,我不想这样。

    2 回复  |  直到 15 年前
        2
  •  2
  •   Mau    15 年前

    对于字符串之间的许多距离函数,您的问题几乎是无法解决的。

    edit distance

    "AAAA" -> "AAAB" -> "AAABC"
    

    如果我们允许距离为1的一对具有相同的散列值。

    更好的方法是找到一个 equivalence relation 在字符串集上,使每个等价类中的每个字符串具有相同的哈希。一种可能性是根据类与预定义字符串的距离来定义类(例如,编辑与“AAAAA”的距离),距离本身就是散列值。也许这种方法在你的例子中不是最好的,但是也许有一些关于这个问题的额外信息,我们可以得到一个更好的等价关系。