您好,登錄后才能下訂單哦!
小編給大家分享一下PHP如何實(shí)現(xiàn)最大正向匹配算法,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
正向最大匹配算法:從左到右將待分詞文本中的幾個(gè)連續(xù)字符與詞表匹配,如果匹配上,則切分出一個(gè)詞。但這里有一個(gè)問(wèn)題:要做到最大匹配,并不是第一次匹配到就可以切分的 。
函數(shù)中包含三個(gè)參數(shù):
$query 查詢?cè)~
$dict 詞典
$max_len 最大長(zhǎng)度(這里默認(rèn)值設(shè)置為15)
詞典示例:
$dict = array( '億速云'=>'億速云', '腳本下載'=>'腳本下載', 'JS編程'=>'JS編程' );
函數(shù)定義:
/* * $query 查詢?cè)~ * $dict 詞典 * $max_len 最大長(zhǎng)度 */ 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; }
使用方法:
$query='歡迎訪問(wèn)億速云!億速云是國(guó)內(nèi)專業(yè)的網(wǎng)站,提供各種腳本下載及JS、Python、php等編程資料'; extractWords($query,$dict);
運(yùn)行結(jié)果:
億速云,億速云,腳本下載
看完了這篇文章,相信你對(duì)“PHP如何實(shí)現(xiàn)最大正向匹配算法”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。