我周六发布关于计算2个文件之间差异的百分比的相似性,使用1中出现的单词数而不是其他单词...这是一个糟糕的工作方式所以我认为更好的方法是制作两个文件的MD5或CRC校验和并使用它来计算差异..使得校验和是容易的部分,但我不确定如何确定差异,我知道百分比是这样的: / p>
double sameWordPercentage = (1.0 * n / m) * 100;
Console.WriteLine(Math.Round(sameWordPercentage, 2) + "% Similar");
感谢您的帮助..我没有清楚的图像,我将如何做到这一点,也许一些伪代码也会有所帮助。
答案 0 :(得分:3)
MD5和CRC都是散列算法,它们为类似的输入输出非常不同的结果(这是设计的)。
我认为您最好检查Locality-sensitive hashing之类的MinHash算法,正如他们在this question中所推荐的那样。
答案 1 :(得分:1)
任何正常意义上的散列都会松散大量信息,使相似性比较变得有意义。加密哈希值(MD5,SHA1 / SHA256,...)几乎可以保证对这种比较无用,因为它们明确地从类似的输入产生非常不同的值。
你需要构建一些特殊的“哈希”。即使用已知单词的索引列表(如“house”,“door”,“window”)作为哈希。然后看看你计划比较的2个文件是否有类似的单词列表(如果两个单词索引列表都被排序,那么检查是非常便宜的)。