标签:基础 产生 table logs 一个 数据 target 不同 字符
说明:一种特殊的数据结构。
特点:可以快速实现查找、插入和删除。
数组的特点:寻址容易,但插入和删除困难。
链表的特点:寻址困难,但插入和删除容易。
哈希表即结合以上两个的优点,创造而成。
哈希算法并不是一个特定的算法,而是一类算法的统称。
哈希算法也称散列算法,一般满足$f(data)=key$,即输入任意长度的$data$数据,经哈希算法处理后输出一个定长的数据$key$。
简单地讲,哈希算法可类比为一个伪随机数生成器,实现“明文→密文”的转化,即一段信息经哈希算法映射为固定长度的数字串。
性质:
“碰撞”即不同的输入数据对应了相同的哈希值。
注意:“碰撞”并没有违背“无冲突”性,一个好的哈希算法应有较好的抗冲突性。
海明距离:在信息编码中,两个合法代码对应位上编码不同的位数称为码距,又称为海明距离。即两个二进制串异或结果中1的个数。
常用的哈希算法见关于Hash的几种常用算法。
局部敏感哈希类似于一种空间域转换思想。
特点:保持数据的相似性。
如果两个文本原有数据空间相似,则经哈希转换后也具有相似性;相反,若两个文本不相似,则经转换后也不相似。
局部敏感哈希是相对的,我们所讲的保持数据的相似性不是说包吃100%的相似度,而是保持最大可能的相似度(降维后)。
Shingling是一种去重算法。
将待查询的字符串集进行映射,映射到一个集合里,如字符串“abcede”映射到集合“(a, b, c, d, e)”中。
注意集合中的元素是无重复的,这一步就叫Shingling,意即构建文档中的短字符串集合,即Shingle集合。
传统的Hash函数是将原始内容尽量均匀、随机地映射为签名值,对于传统的Hash函数来讲,如果两个签名值相等,则说明原始内容在一定程度(一定概率)上是相同的;如果不相等,除了说明原始内容不相同外,不提供任何信息。
传统的Hash函数是无法在签名值的维度上来衡量原始内容相似度的,而SimHash本身属于一种局部敏感哈希,它产生的Hash签名在一定程度上可以表征原内容的相似性。
对于文本去重,有很多NLP相关的算法可以在很高精度上来解决。但是若要处理大数据维度上的文本去重,这就对算法的效率有很高的要求。
SimHash最大的优点:
标签:基础 产生 table logs 一个 数据 target 不同 字符
原文地址:https://www.cnblogs.com/qijunhui/p/9879206.html