多くのソフトウェアシステムを開発する場合、テキストマッチング、文字列検索、単語の編集距離などの問題に対処する必要があります。その中で、テキストの編集距離とは、一連の文字操作(挿入、削除、交換など)を介して、あるテキストを別のテキストに変換するために必要な最小オペランドを指します。編集距離が小さいほど、テキストの類似性が高くなります。 Levenshteinアルゴリズムは、文字列編集距離を計算するための古典的なアルゴリズムの1つです。
PHPでは、Levenshtein()関数を使用して、2つの文字列間の編集距離を計算します。つまり、1つの文字列を別の文字列に変換するために必要な編集操作の最小数を返すことができます。
int levenshtein(string $ str1、string $ str2、int $ cost_ins、int $ cost_rep、int $ cost_del)
パラメーター名 | パラメータータイプ | 説明します |
---|---|---|
str1 | 弦 | 最初の文字列 |
str2 | 弦 | 2番目の文字列 |
cost_ins | int | 挿入操作のコスト(デフォルトは1です) |
cost_rep | int | 交換操作コスト(デフォルトは1です) |
cost_del | int | 削除操作のコスト(デフォルトは1です) |
この関数は、2つの文字列間の最小編集距離、つまり編集を完了するために必要な操作の最小数を返します。
$ str1 = "kitten"; $ str2 = "シートり"; $ distance = levenshtein($ str1、$ str2); エコー「$ str1と$ str2の間の距離は$距離です」;
出力:
<span class="fun">子猫とシートりの間の距離は3です</span>
注:「子猫」から「座っている」まで、3つの操作が完了します。
$ str1 = "kitten"; $ str2 = "シートり"; $ distance = levenshtein($ str1、$ str2、2、3、4); エコー「$ str1と$ str2の間の距離は$距離です」;
出力:
<span class="fun">子猫とシートりの間の距離は15です</span>
注:「子猫」から「設定」まで、挿入、交換、削除操作が必要であり、完了するには合計15の操作が必要です。
$ str1 = "hello"; $ str2 = "goodbye"; $ distance = levenshtein($ str1、$ str2); エコー「$ str1と$ str2の間の距離は$距離です」;
出力:
<span class="fun">こんにちはとさようならの間の距離は4です</span>
注:「ハロー」から「さようなら」まで、文字を挿入し、2文字を置き換えて、文字を削除する必要があります。完了するには合計で4つの操作が必要です。
Levenshteinアルゴリズムは、編集距離を計算するための古典的なアルゴリズムであり、文字列処理タスクで広く使用されています。 PHPのlevenshtein()関数は、このアルゴリズムの便利な実装を提供するため、文字列間の類似性をすばやく計算することができます。テキスト処理、スペルチェック、または自然言語処理のいずれであっても、Levenshtein()関数は開発者に強力なサポートを提供できます。