最大正向匹配算法 PHP實現

字符串最大正向匹配算法說明可以參考其他文章,這裏只做實現。
三個參數:查詢詞 $query,詞典$dict,最大長度,這裏設置爲15

詞典示例:
$dict = array(
    '測試字符'=>'測試字符',
    '測試'=>'測試',
)

public function extractWords($query,$dict,$max_len=15){
        $feature = "";

        $slen=mb_strlen($query,'UTF8');
        $c_bg = 0;
        while($c_bg<$slen){
            $matched = false;
            $c_len =(($slen-$c_bg)>$max_len)?$max_len:($slen-$c_bg);
            $t_str = mb_substr($query, $c_bg,$c_len,'UTF8');
            for($i=$c_len;$i>1;$i--){
                $ttts = mb_substr($t_str, 0,$i,'UTF8');
                    if(!empty($dict[$ttts])){
//                    echo 'matched = '.$ttts.PHP_EOL;
                        $matched = true;
                        $c_bg += $i;
                        if(!empty($feature)){
                            $feature.=",";
                        }
                        $feature.=$ttts;
                        break;
                    }
            }
            if(!$matched){
                $c_bg++;
            }
        }
        echo $feature.PHP_EOL;
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章