超あいまいに文字列の一致率を計算するPHP

$str=”超あいまいに検索したいけどなかなか完全一致でない場合の文字列の一致度って計算しにくいんですよねー”;
$q=”あいまい検索したいにんけどなんかパーフェクトに一致しない場合の文字列の一致度は計算しにくいねん”;

こんな文字列が何%くらい一致しているか調べます。

もっと改善できそうですが・・・


$str="超あいまいに検索したいけどなかなか完全一致でない場合の文字列の一致度って計算しにくいんですよねー";
$q="あいまい検索したいにんけどなんかパーフェクトに一致しない場合の文字列の一致度は計算しにくいねん";

function c_rate($str,$q){
		$ar_qs = preg_split("//u", $q, -1, PREG_SPLIT_NO_EMPTY);

		$pre_match=0;
		$match_cnt=0;

		foreach($ar_qs as $ar_q){
			$match_len = strpos($str,$ar_q);
			$match_cnt += 1;
			if($match_len !== false){
				$match_len += 1;
				$c_rate += (strlen($ar_q)+$pre_match)/strlen($str) * min($pre_match/abs($match_len-$match_cnt),1);
				$pre_match += 1;
			}elseif($pre_match > 0){
				$pre_match -= 1;
			}
		}
		return $c_rate;
} //end function c_rate


$c_rate=c_rate($str,$q);
echo $c_rate;
//結果 3.232503970465

コメント

お知らせ

羽織紐を手作りしてます!よろしければご覧ください!
  • 天然石 マグネット式羽織紐 #01 / 着物小物 / ブルーグリーン / 水晶
    天然石 マグネット式羽織紐 #01 / 着物小物 / ブルーグリーン / 水晶
  • 天然石 マグネット式羽織紐 #09 / 着物小物 / グレー / 高品質ルチルクォーツ
    天然石 マグネット式羽織紐 #09 / 着物小物 / グレー / 高品質ルチルクォーツ
  • 天然石 マグネット式羽織紐 #04 / 着物小物 / ネイビー
    天然石 マグネット式羽織紐 #04 / 着物小物 / ネイビー

お知らせ

羽織紐を手作りしてます!よろしければご覧ください!
  • 天然石 マグネット式羽織紐 #01 / 着物小物 / ブルーグリーン / 水晶
    天然石 マグネット式羽織紐 #01 / 着物小物 / ブルーグリーン / 水晶
  • 天然石 マグネット式羽織紐 #09 / 着物小物 / グレー / 高品質ルチルクォーツ
    天然石 マグネット式羽織紐 #09 / 着物小物 / グレー / 高品質ルチルクォーツ
  • 天然石 マグネット式羽織紐 #04 / 着物小物 / ネイビー
    天然石 マグネット式羽織紐 #04 / 着物小物 / ネイビー
タイトルとURLをコピーしました