0

昨日、1つに表示され、もう1つには表示されない単語の量を使用して、2つのファイル間の差異をパーセンテージで計算することについて投稿しました。これは仕事をするのに悪い方法だったので、MD5を作成するのがより良い方法だと思いました。または両方のファイルのCRCチェックサムとそれを使用して差を計算します..チェックサムを作成するのは簡単な部分ですが、差を決定する方法がわかりません。パーセンテージを取得することはこれらの線に沿って何かを行うことを知っています:

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

助けてくれてありがとう..これをどうやってやるのか明確なイメージがないだけで、おそらくいくつかの擬似コードも役立つでしょう。

4

2 に答える 2

3

MD5とCRCはどちらも、同様の入力に対して非常に異なる結果を出力するハッシュアルゴリズムです(これは仕様によるものです)。

この質問で推奨されているように、 MinHashのような局所性鋭敏型ハッシュアルゴリズムを確認したほうがよいと思います。

于 2012-11-09T02:26:20.433 に答える
1

通常の意味のハッシュは、類似性の比較を意味のあるものにするために多くの情報への道を失います。暗号化ハッシュ(MD5、SHA1 / SHA256、...)は、類似した入力から非常に異なる値を明示的に生成するため、このような比較にはほとんど役に立たないことが保証されています。

特別な「ハッシュ」を作成する必要があります。つまり、既知の単語( "house"、 "door"、 "window"など)のインデックスのリストをハッシュとして使用します。比較する予定の2つのファイルに類似した単語のリストがあるかどうかを確認するよりも(単語インデックスの両方のリストがソートされているかどうかを確認するのは非常に安価です)。

于 2012-11-09T02:23:25.040 に答える