【问题标题】:Locality-sensitive hashing of strings?字符串的位置敏感散列?
【发布时间】:2017-08-25 14:11:21
【问题描述】:

是否有字符串的散列函数,这样在小的编辑距离内的字符串(例如,拼写错误)会映射到相同或非常接近的散列值,而不同的字符串往往不会?

【问题讨论】:

  • 神奇的谷歌词是“保持相似性散列”。有很多这样的哈希函数用于不同的目的,而且它们并不出色,所以总是需要权衡取舍。
  • @MattTimmermans LSH 不是这些(在标题和标签中)的常规名称吗?我只是不知道 LSH 的编辑距离。
  • IIRC,Locality-sensitive hashing 是指将向量空间映射到更小的维度空间,以尝试通过欧几里得或类似距离度量来保持接近度。

标签: algorithm hash edit-distance locality-sensitive-hash


【解决方案1】:

一种选择是计算所有k-mers 的集合(长度为k 的子字符串),对它们进行散列并计算最小值。 因此,您将带状疱疹的想法与 minhashing 的想法结合起来。 (重复多次以获得更好的结果,与 LSH 方案一样)

其工作原理是两个字符串具有相同 minhash 的概率与其k-mer 集的 Jackard 相似性相同。 k-mer 集的相似性与编辑距离有关(但不一样)。

【讨论】:

  • 我认为这行不通:哈希将由 single k-mer 确定。另一个高度相似的字符串可能缺少那个 k-mer,或者其中有一个突变,因此两个字符串的哈希值会任意不同。
  • 这就是为什么你必须使用多个哈希。相似的东西用于查找相似的集合(在这种情况下,minhash 是集合的单个元素)。而且它也不是由单​​个 k-mer 决定的,因为所有 k-mer 都会决定哪一个是最小的。这种最小的 k-mer 方法实际上在生物信息学中非常流行并且被证明是有效的:genomebiology.biomedcentral.com/articles/10.1186/…
猜你喜欢
  • 1970-01-01
  • 2020-07-15
  • 2018-06-25
  • 2016-09-19
  • 2011-04-29
  • 2014-05-25
  • 2020-05-19
  • 2012-12-08
  • 2016-03-16
相关资源
最近更新 更多