ホームページ >バックエンド開発 >PHPチュートリアル >類似テキストが類似度を計算する際の正規化に関する疑問

類似テキストが類似度を計算する際の正規化に関する疑問

WBOY
WBOYオリジナル
2016-06-13 13:14:581031ブラウズ

like_text 類似度を計算する際の正規化に関する質問
2 つの文字列の長さを計算していたとき、この関数が正規化するときに異なるアプローチをとっているように見えることがわかりました。
初めて、長さの異なる 2 つの文字列を試し、編集距離を計算しました。
echo "levenshtein Calculation: n";echo levenshtein("seller_id","selr_id");echo "n ";
結果は次のようになります: 2

次に、同じ 2 つの文字列を使用し、PHP の類似テキスト関数を使用して類似性を見つけます。
echo "similar_text Calculation: n";similar_text(" seller_id","selr_id",$パーセント);
echo $percent;
は、類似度が 87.5 の場合に表示されます。
2 の距離が正規化されると、式 1-(編集距離/ (長さの合計) 2 つの文字列のうち))

2 回目は、同じ長さの 2 つの文字列を試し、それぞれの編集距離と類似度を計算しました
similar_text("abcd"," 1234",$percent);echo $percent;echo "n";
echo levenshtein("abcd","1234");
取得された値はそれぞれ 4 と 0 です
これは次の式に正確に準拠します: 1-( edit distance/(任意の文字列の長さ))

私の質問は、なぜ長さの異なる 2 つの文字列間の類似性を計算するとき、分母が 2 つの文字列の長さになるのですか?
オンラインでいくつかの PDF ドキュメントを見つけたところ、編集距離を正規化する場合、分母は最長の文字列の長さになることがわかりました。



-----解決策---------
like_text 関数の設計者は非常に思慮深いと言わなければなりません
渡された 2 つの文字列が同じ長さの場合、計算された類似度は理論と変わりません
渡された 2 つの文字列が異なる場合同時に、得られる類似度は理論ほど急峻ではありません。つまり、一致する確率が高くなります
もちろん、これを望まない場合は、文字列を自分で計算することもでき、一致の数も返します。計算するのは難しくありません

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。