PHPで文字列の類似度を計算するsimilar_text関数とsimilarity levenshtein関数の詳細な紹介 以下では、文字列の類似度の導入について詳しく紹介します。
similar_text — 2 つの文字列の類似性を計算します
int like_text ( string $first , string $second [, float &$percent ] )
$first は必須です。比較する最初の文字列を指定します。
$秒は必須です。比較する 2 番目の文字列を指定します。
$percent はオプションです。類似性パーセントを格納するために使用される変数名を指定します。
2 つの文字列間の類似性の計算は、Oliver [1993] の説明に従って実行されます。この実装は Oliver の仮想コードでスタックを使用しませんが、再帰呼び出しを行うため、プロセス全体が遅くなったり速くなったりする可能性があることに注意してください。また、このアルゴリズムの複雑さは O(N**3) であることに注意してください。ここで、N は最長の文字列の長さです。
たとえば、文字列 abcdefg と文字列 aeg の間の類似性を見つけたいとします。
コードをコピー | |
$first = "abcdefg";
$sec = "aeg";
|
使用説明書
まずマニュアルの levenshtein() 関数の説明を読んでください:
levenshtein() 関数は、2 つの文字列間のレーベンシュタイン距離を返します。
編集距離としても知られるレーベンシュタイン距離は、2 つの文字列間で一方をもう一方に変換するために必要な編集操作の最小数を指します。許可される編集操作には、ある文字を別の文字に置き換える、文字を挿入する、文字を削除するなどがあります。
たとえば、子猫を座っている状態に変換します:
座る(k→s)
座ってます (e→i)
座っている (→g) levenshtein() 関数は、各操作 (置換、挿入、削除) に等しい重みを与えます。ただし、オプションの挿入、置換、および削除パラメータを設定することで、各操作のコストを定義できます。
文法:
レーベンシュタイン(文字列1,文字列2,挿入,置換,削除)
パラメータの説明
•string1 は必須です。比較する最初の文字列。
•string2 は必須です。比較する 2 番目の文字列。
•オプションを挿入します。キャラクターを挿入するコスト。デフォルトは 1 です。
•オプションで交換します。キャラクターを置き換えるのにかかるコスト。デフォルトは 1 です。
•削除はオプションです。キャラクターを削除するコスト。デフォルトは 1 です。
ヒントとメモ
•いずれかの文字列が 255 文字を超える場合、levenshtein() 関数は -1 を返します。
•levenshtein() 関数は、similar_text() 関数より高速です。ただし、similar_text() 関数を使用すると、修正が少なくて済み、より正確な結果が得られます。
例
コードをコピー | |
echo levenshtein("Hello World","ello World");
エコー「」
"; |