2012-11-09 285 views
0

我张贴yesturday有关使用中出现的1而不是其他的..这是做这项工作的好方法的话量计算相似度百分比2个文件之间的差异,所以我想到了一个更好的办法将是做出这两个文件的MD5或CRC校验和并使用该计算差异。使校验和是容易的部分,但我不确定如何去确定差异,我知道得到的百分比是沿着这些行:计算校验和相似

double sameWordPercentage = (1.0 * n/m) * 100; 
    Console.WriteLine(Math.Round(sameWordPercentage, 2) + "% Similar"); 

感谢您的帮助..就是没有如何我要做到这一点的清晰图像,也许有些伪代码将也有帮助。

+1

..是你的问题如何从一个哈希的百分比差?你知道这将是非常不准确的..? –

+3

像MD5这样的密码哈希被设计为产生一个非常不同的结果,用于非常小的变化。它们完全不适合确定两个文件的相似性。这同样适用于像CRC这样的校验。 – dtb

+0

你想用这个相似性指数来表达什么?文档相似性是一个非常活跃的研究课题,存在许多相似性算法,其中一些非常简单,另一些非常复杂。最好的方法取决于你将如何处理这个指数。 – lstern

回答

1

正常含义的任何哈希将失去办法不多的信息来做出相似性比较有意义。加密哈希(MD5,SHA1/SHA256,...)几乎可以保证对于这种比较没有用处,因为它们明确地产生了与类似输入非常不同的值。

你需要建立一些特殊的“哈希”。即使用已知词索引列表(如“房子”,“门”,“窗口”)作为散列。比看你打算比较的2个文件是否有类似的单词列表(将非常便宜的检查单词索引的两个列表是否被排序)。