1

他の同様のテキストのハッシュと一致/比較するテキスト(私の場合はhtml)から一種のハッシュキーを作成したいと思います

一致するテキストの例:

  • "2012/10/01 これは私のウェブページ #1 です"+ 100k_of_same_text + random_words_1 + ..
  • "2012/10/02 これは私のウェブページ #2​​ です"+ 100k_of_same_text + random_words_2 + ..
  • ...
  • "2012/10/02 これは私のウェブページ #2​​ です"+ 100k_of_same_text + random_words_3 + ..

これまでのところ、数字とタグを削除することを考えていましたが、それでもランダムな単語が残ります.

これを投与するものはありますか?

サーバーへのルート アクセス権があるので、必要な UDF を追加できます。また、必要に応じて、C または他の言語で処理を実行できます。

理想は、一致するテキストの割合を返すような関数generateSimilarHash(text)やその他の関数です。compareSimilarHashes(hash1,hash2)

compare(text1,text2) のような関数は、比較するページがたくさんあるため、私の場合のようには機能しません (現時点では約 20 ミル)。

どんなアドバイスも大歓迎です!


アップデート:

ウィキペディアで説明されているように、私はaを参照してhash functionいます:

ハッシュ関数は、可変長の大きなデータ セットを固定長の小さなデータ セットにマップする任意のアルゴリズムまたはサブルーチンです。

私の場合、固定長部分は必要ありません。

4

3 に答える 3

0

Webページのタグの順序は、テキスト/ css /スクリプトの一部が変更されても同じである、非常に特徴的なパターンを作成できることがわかりました。したがって、タグの順序(例:html head meta title body div table tr td span bold...=> " hhmtbdttsb...")によって生成された文字列を作成し、これらの文字列を完全に一致させます。レーベンシュタイン距離アルゴリズムを適用して、正確な結果を得ることができます。

htmlがなかったら、句読点/終了行を分割などに使用していました。

于 2013-02-18T12:46:41.943 に答える
0

ある種のレーベンシュタイン距離アルゴリズムを使用できます。これはテキストの小さな断片には機能しますが、同様のことがテキストの大きな塊に適用できると確信しています。

参照: http://en.m.wikibooks.org/wiki/Algorithm_implementation/Strings/Levenshtein_distance

于 2013-02-07T21:19:49.620 に答える
0

diff のようなプログラムを利用する必要があるようです。

テキストを比較しようとしているだけの場合、入力のわずかな違いが出力の合計と完全な違いを引き起こすため、ハッシュは適していません。(したがって、パスワードをエンコードし、テキストを保護するために使用される理由)。文字差分プログラムはかなり複雑です。それらがどのように機能するかに本当に興味があり、自分で作成しようとしている場合を除き、sdiff を使用してパーセンテージを取得するために、ここに示されているようなソリューションを使用するだけです。

GNU Diff のパーセンテージ値

于 2013-02-07T21:14:50.517 に答える