-1

SEOの目的で重複したコンテンツをチェックするためにいくつかのテキストをテストする必要があるため.

そのために、2 つのテキスト (2 つの文字列 S1 と S2) があり、2 つの文字列間の類似性の割合を決定する必要があります。私の最初のコードは問題ありません。%を決定します

(nbr of common words in S1 & S2)/100x(nbr of words in the shorter string in S1 & S2).

しかし、それが良いアルゴリズムかどうかはわかりません。

共有するコード例の経験はありますか?

4

1 に答える 1

2

あなたがやろうとしているのは、2 つの文字列の類似性のパーセンテージを見つけることです。

一部のアルゴリズムは、このまったく同じ問題をすでに解決しています。私は主に使用しています:

  • レーベンシュタイン距離
  • Nグラム距離

コードソースをデルファイですばやく検索しました。DelphiでLenvenshteinのソースコードを見つけました

Lenvenshtein アルゴリズムは、元の文字列にロールバックできる「変更の数」を見つけようとしています。
NGramDistance は単語を分割して比較しています。


したがって、Lenvenshtein では、文字列 "abc def | klm mno" は"klm mn | abc def"とは非常に異なる
ものとして 認識されますが、NGramDistance では 100% 類似していると見なされます。

したがって、文字列の順序を考慮するかどうかによって異なります。


NGramDistance のソース コードが見つかりませんでした。ただし、Java から Delpi に変換することはできます。

Java のソース コードは、オープン ソースの検索ソフトウェアである Lucene から取得されます。このパッケージには、より多くの文字列メトリックアルゴリズム チェックアウトが実装されています。

于 2013-07-23T10:06:11.037 に答える