【问题标题】:Hashing Similar Strings to same Hash Value将相似的字符串散列到相同的散列值
【发布时间】:2012-05-15 20:18:19
【问题描述】:

是否有一些散列算法可以将相似的文本文档散列到特定的散列值?

例如,

A = "这是示例文本 1" B= "这是示例文本 2"

A 和 B 需要散列到相同的值。

我做了一些研究并阅读了有关 SimHash 和 LSH 算法的信息。 Simhash 会导致哈希冲突,并且可以使用汉明距离来定义相似度。

理想情况下,我想要类似“如果字符串 A 和字符串 B 相差可接受的相似度阈值 (t

【问题讨论】:

  • 我不确定是否有办法。我记得从我在某处读到的“良好哈希函数的属性”文章中,一个这样的属性是相似的值不会产生相似的哈希,因此数据中的任何结构相似性(这在现实生活中的数据中很常见)都不会反映出来在散列中,因此项目在整个散列表中均匀分布。
  • 嗨,汤姆,是的,好的哈希的一个属性是不会产生类似的哈希。但是有一些算法专门用于引起冲突。 SimHash 算法就是一个例子。

标签: hash similarity


【解决方案1】:

一个明显的选择是使用Soundex 或其变体之一(取决于这些词的语言)。

你没有指定你需要这个做什么。

  • 如果您需要创建某种哈希表变体,将相似的字符串放在同一个存储桶中,soundex 变体可以工作,但您需要考虑到可能发生冲突的可能性。
  • 如果您只需要了解两个字符串的相似程度,您还可以查看一种称为 Simil 的算法;请参阅this link,或与拼写检查相关的算法。

【讨论】:

  • 是的,所以基本上我希望做的是这个 1)哈希相似的项目到同一个桶 2)对于一个新的字符串,从数据流中查找,如果找到的话,将其视为几乎重复并忽略它们
猜你喜欢
  • 1970-01-01
  • 2020-03-12
  • 2013-04-30
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 2011-12-25
  • 1970-01-01
相关资源
最近更新 更多