PHP_PHP チュートリアルで文字列の類似性を計算する関数コード

WBOY
リリース: 2016-07-21 15:13:51
オリジナル
833 人が閲覧しました

like_text — 2 つの文字列の類似性を計算します
int like_text ( string $first , string $sec [, float &$percent ] )
$first が必要です。比較する最初の文字列を指定します。
$秒が必要です。比較する 2 番目の文字列を指定します。
$パーセントはオプションです。類似性パーセントを格納するために使用される変数名を指定します。

2 つの文字列間の類似性の計算は、Oliver [1993] の説明に従って実行されます。この実装は Oliver の仮想コードでスタックを使用しませんが、再帰呼び出しを行うため、プロセス全体が遅くなったり速くなったりする可能性があることに注意してください。また、このアルゴリズムの複雑さは O(N**3) であることに注意してください。ここで、N は最長の文字列の長さです。

たとえば、文字列 abcdefg と文字列 aeg の類似性を見つけたいとします。

コードをコピーします コードは次のとおりです:

$first = "abcdefg"; "aeg";
echo like_text ($first, $second); 結果の出力 3. パーセンテージで表示したい場合は、次のように 3 番目のパラメータを使用できます。 "aeg";
similar_text($first, $second, $percent);



similar_text 関数の使用法と実装プロセス。 like_text() 関数は、主に 2 つの文字列内の一致する文字の数を計算するために使用され、2 つの文字列の類似性 (パーセンテージ) を計算することもできます。今日紹介する levenshtein() 関数は、similar_text() 関数と比較して高速です。ただし、similar_text() 関数を使用すると、必要な変更が少なく、より正確な結果が得られます。速度は追求するが精度は低く、文字列の長さが制限されている場合は、levenshtein() 関数の使用を検討できます。

使用説明


まず、マニュアルの levenshtein() 関数の説明をお読みください:
levenshtein() 関数は、2 つの文字列間のレーベンシュタイン距離を返します。
編集距離とも呼ばれるレーベンシュタイン距離は、2 つの文字列を一方の文字列にもう一方の文字列に変換するために必要な編集操作の最小数を指します。許可される編集操作には、ある文字を別の文字に置き換える、文字を挿入する、文字を削除するなどがあります。

たとえば、子猫を座っている状態に変換します。

sitten (k→s)
sittin (e→i)
sitting (→g) levenshtein() 関数は、各操作 (置換、挿入、削除) に等しい重みを与えます。ただし、オプションの挿入、置換、および削除パラメータを設定することで、各操作のコストを定義できます。

構文:

levenshtein(string1,string2,insert,replace,delete)

パラメータの説明

•string1 必須。比較する最初の文字列。
•string2 が必要です。比較する 2 番目の文字列。
•オプションを挿入します。キャラクターを挿入するコスト。デフォルトは 1 です。
•オプションで置き換えます。キャラクターを置き換えるのにかかるコスト。デフォルトは 1 です。
•削除 オプション。キャラクターを削除するコスト。デフォルトは 1 です。
ヒントとメモ

•文字列の 1 つが 255 文字を超える場合、levenshtein() 関数は -1 を返します。
•levenshtein() 関数は大文字と小文字を区別しません。
•levenshtein() 関数は、similar_text() 関数より高速です。ただし、similar_text() 関数を使用すると、修正が少なくて済み、より正確な結果が得られます。




コードをコピー

コードは次のとおりです:
echo levenshtein("Hello World","ello World"); echo "
";
echo levenshtein ("Hello World","ello World",10,20,30);


出力: 1 30



http://www.bkjia.com/PHPjc/326419.html

www.bkjia.com

tru​​e

技術記事類似テキスト — 2 つの文字列間の類似性を計算します int 類似テキスト ( string $first , string $sec [, float $sec = "aeg"; echo Samel_text($first, $second); 結果の出力は 3 です。必要に応じて...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!