PHP实现的最大正向匹配算法示例
发布:smiling 来源: PHP粉丝网 添加日期:2021-08-23 22:09:09 浏览: 评论:0
这篇文章主要介绍了PHP实现的最大正向匹配算法,简单描述了最大正向匹配算法的概念、原理并结合实例形式分析了php实现与使用最大正向匹配算法的相关操作技巧,需要的朋友可以参考下。
本文实例讲述了PHP实现的最大正向匹配算法。分享给大家供大家参考,具体如下:
正向最大匹配算法:从左到右将待分词文本中的几个连续字符与词表匹配,如果匹配上,则切分出一个词。但这里有一个问题:要做到最大匹配,并不是第一次匹配到就可以切分的 。
函数中包含三个参数:
$query 查询词
$dict 词典
$max_len 最大长度(这里默认值设置为15)
词典示例:
- $dict = array(
- 'php粉丝网'=>'php粉丝网',
- 'php粉丝'=>'php粉丝',
- '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(!emptyempty($dict[$ttts])){
- // echo 'matched = '.$ttts.PHP_EOL;
- $matched = true;
- $c_bg += $i;
- if(!emptyempty($feature)){
- $feature.=",";
- }
- $feature.=$ttts;
- break;
- }
- }
- if(!$matched){
- $c_bg++;
- }
- }
- echo $feature.PHP_EOL;
- }
使用方法:
$query='欢迎访问php粉丝网!脚本之家是国内专业的网站,提供各种脚本下载及JS、Python、php等编程资料';
extractWords($query,$dict);
运行结果:
php粉丝网,脚本之家,脚本下载
Tags: PHP最大正向匹配算法
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)