2012-11-09 333 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個文件是否有類似的單詞列表(將非常便宜的檢查單詞索引的兩個列表是否被排序)。