• thinkphp tp php 检测中文文字相似度


        public function cs(){
            // $str1 = '大学化学实验';
    // $str2 = '大学物理实验';
     $str1 = '大学生思想品德修养';
     $str2 = '思想概论';
    // $str1 = '国中567';
    // $str2 = '中国1';
            $str_arr1 = $this->CharToArr($str1);
            $str_arr2 = $this->CharToArr($str2);
            $num = $this->S($str_arr1, $str_arr2);
            dump($num);die();
        }
    
    
    
        //计算匹配文字$arr1[$i]的最小匹配偏移值
        public function PosOffset($arr1, $i, $arr2){
            $len2 = count($arr2);
            $arr2_reverse = array_reverse($arr2);
            for($j = 0; $j < $len2; $j++){
                $rev_num = abs($i-$j)-1;
                $rev_data = isset($arr2_reverse[$rev_num]) ? $arr2_reverse[$rev_num] : '';
                $notrev_data = isset($arr2[$i-$j]) ? $arr2[$i-$j] : '';
                if($i+$j >= 0 && $arr1[$i] == ($i-$j >=0 ? $notrev_data : $rev_data)){
                    return $j;
                }
                if($i+$j < $len2 && $arr1[$i] == $arr2[$i+$j]){
                    return $j;
                }
            }
            return $len2;
        }
    
        //计算匹配文字$arr1[$i]对于整体相似度的贡献量
        public function CC($arr1, $i, $arr2){
            $len2 = count($arr2);
            $len2_float = sprintf("%.2f", $len2);
            $temp = self::PosOffset($arr1, $i, $arr2);
            $data = ($len2 - $temp) / $len2_float;
            return $data;
        }
    
        //计算短语$arr1相对于短语$arr2的相似度sc
        public function SC($arr1, $arr2){
            $sc = 0.0;
            $len1 = count($arr1);
            for($i = 0; $i < $len1; $i++){
                $sc += self::CC($arr1, $i, $arr2);
            }
            $sc /= $len1;
            return $sc;
        }
    
        //计算短语$arr1与短语$arr2之间的相似度
        public function S($arr1, $arr2){
            $temp1 = self::SC($arr1, $arr2);
            $temp2 = self::SC($arr2, $arr1);
            return ($temp1 + $temp2)/2;
        }
    
        //将字符串转换成数组存储
        public function CharToArr($str){
            return preg_split('/(?<!^)(?!$)/u', $str );
        }
  • 相关阅读:
    网络性能测试工具iperf详细使用图文教程zz
    linux时间和定时器zz
    sleep
    linux调度器的配置参数zz
    zz升级Mininet自带的OpenvSwitch & 编译OpenvSwitch
    minnet sample
    电信新势力,TIP/CORD能颠覆电信设备商吗?
    【TS】534- TypeScript 可辨识联合
    【拓展】一张图看懂字节跳动8年创业史,太励志了吧
    【CSS】533- CSS 渲染原理以及优化策略
  • 原文地址:https://www.cnblogs.com/zc290987034/p/14706495.html
Copyright © 2020-2023  润新知