這篇文章主要介紹了PHP實現的最大正向匹配演算法,簡單描述了最大正向匹配演算法的概念、原理並結合實例形式分析了php實現與使用最大正向匹配演算法的相關操作技巧,需要的朋友可以參考下
本文實例講述了PHP實現的最大正向匹配演算法。分享給大家供大家參考,具體如下:
正向最大匹配演算法:從左到右將待分詞文字中的幾個連續字元與詞表匹配,如果匹配上,則切分出一個字。但這裡有一個問題:要做到最大匹配,並不是第一次匹配到就可以切分的 。
函數包含三個參數:
$query 查詢單字
$dict 字典
#$max_len 最大長度(這裡預設值設定為15)
字典範例:
#$dict = array( '脚本之家'=>'脚本之家', '脚本下载'=>'脚本下载', 'JS编程'=>'JS编程' );
函數定義:
##
/* * $query 查询词 * $dict 词典 * $max_len 最大长度 */ 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='欢迎访问脚本之家!脚本之家是国内专业的网站,提供各种脚本下载及JS、Python、php等编程资料'; extractWords($query,$dict);執行結果:
脚本之家,脚本之家,脚本下载您可能感興趣的文章:
PHP實作模擬http請求的方法分析解說
############
以上是PHP實現的最大正向匹配演算法範例講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!