本文實(shí)例講述了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)度f(wàn)unction 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 $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)專(zhuān)業(yè)的網(wǎng)站,提供各種腳本下載及JS、Python、php等編程資料 extractWords($query,$dict);
運(yùn)行結(jié)果:
腳本之家,腳本之家,腳本下載您可能感興趣的文章:
PHP性能分析工具xhprof的安裝使用與相關(guān)的注意事項(xiàng)
php封裝db類(lèi)連接sqlite3數(shù)據(jù)庫(kù)的方法實(shí)例講解
PHP實(shí)現(xiàn)模擬http請(qǐng)求的方法分析講解
以上就是PHP實(shí)現(xiàn)的最大正向匹配算法示例講解的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選