前端之家收集整理的这篇文章主要介绍了
PHP实现的最大正向匹配算法示例,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例讲述了PHP实现的最大正向匹配算法。分享给大家供大家参考,具体如下:
正向最大匹配算法:
从左到右将待分词文本中的几个连续字符与词表匹配,如果匹配上,则切分出一个词。但这里有一个问题:要做到最大匹配,并不是第一次匹配到就可以切分的 。
函数中包含三个参数:
查询词
词典示例:
'编程之家','脚本下载'=>'脚本下载','JS编程'=>'JS编程'
);
函数定义:
PHP;">
/*
* $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,$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;
}
使用方法:
PHP;">
$query='欢迎访问编程之家!编程之家是国内专业的网站,提供各种脚本下载及JS、Python、
PHP等编程资料';
extractWords($query,$dict);
运行结果:
PHP;">
编程之家,编程之家,脚本下载
更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《》
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://www.f2er.com/php/16472.html