我创建Antiplagiat。我用的是shingle方法。例如,我有以下带状疱疹:
有没有一种计算这些行的相等散列的方法?
我知道Levenshtein距离的存在。但是,我不知道应该采取什么来源词。也许有比考虑Levenshtein距离更好的方法。
答案 0 :(得分:0)
哈希的问题在于,从逻辑上讲,你会遇到2个字符串,这些字符串由一个散列为不同值的字符而不同。
小证明:
考虑所有可能的字符串 假设所有这些哈希值至少为2个不同的值 将任何2个字符串A和B取样为不同的值 你可以通过一次改变一个角色来显然从A到B. 因此,哈希会在某些时候发生变化 因此,此时哈希对于单个字符更改将是不同的。
我能想到的一些选项:
散列字符串的多个部分并检查每个散列。由于单个字符遗漏会导致哈希值出现显着差异,因此可能效果不会太好。
检查一系列哈希值。哈希是一维的,但字符串相似性不是,因此这可能也不起作用。
总而言之,哈希可能不是最佳选择。
答案 1 :(得分:0)
这个问题有点陈旧,但您可能会对AT& T的两名研究人员this paper感兴趣。他们采用了一种让人想起Nilsimsa散列的技术来检测何时在一个时间窗口中看到类似的sms消息是“异常”的次数。
听起来Locality Sensitive hashing也与您的问题有关。