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

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

WBOY
WBOYオリジナル
2016-06-13 12:19:291030ブラウズ

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-(編集距離/(任意の文字列の長さ))

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


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

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