当前位置:首页 > PHP教程 > php应用 > 列表

PHP实现的最大正向匹配算法示例

发布:smiling 来源: PHP粉丝网  添加日期:2021-08-23 22:09:09 浏览: 评论:0 

这篇文章主要介绍了PHP实现的最大正向匹配算法,简单描述了最大正向匹配算法的概念、原理并结合实例形式分析了php实现与使用最大正向匹配算法的相关操作技巧,需要的朋友可以参考下。

本文实例讲述了PHP实现的最大正向匹配算法。分享给大家供大家参考,具体如下:

正向最大匹配算法:从左到右将待分词文本中的几个连续字符与词表匹配,如果匹配上,则切分出一个词。但这里有一个问题:要做到最大匹配,并不是第一次匹配到就可以切分的 。

函数中包含三个参数:

$query   查询词

$dict    词典

$max_len 最大长度(这里默认值设置为15)

词典示例:

  1. $dict = array
  2.   'php粉丝网'=>'php粉丝网'
  3.   'php粉丝'=>'php粉丝'
  4.   'JS编程'=>'JS编程' 
  5. ); 

函数定义:

  1. /* 
  2.  * $query 查询词 
  3.  * $dict 词典 
  4.  * $max_len 最大长度 
  5.  */ 
  6. function extractWords($query,$dict,$max_len=15){ 
  7.     $feature = ""
  8.     $slen=mb_strlen($query,'UTF8'); 
  9.     $c_bg = 0; 
  10.     while($c_bg<$slen){ 
  11.       $matched = false; 
  12.       $c_len =(($slen-$c_bg)>$max_len)?$max_len:($slen-$c_bg); 
  13.       $t_str = mb_substr($query$c_bg,$c_len,'UTF8'); 
  14.       for($i=$c_len;$i>1;$i--){ 
  15.         $ttts = mb_substr($t_str, 0,$i,'UTF8'); 
  16.           if(!emptyempty($dict[$ttts])){ 
  17. //          echo 'matched = '.$ttts.PHP_EOL; 
  18.             $matched = true; 
  19.             $c_bg += $i
  20.             if(!emptyempty($feature)){ 
  21.               $feature.=","
  22.             } 
  23.             $feature.=$ttts
  24.             break
  25.           } 
  26.       } 
  27.       if(!$matched){ 
  28.         $c_bg++; 
  29.       } 
  30.     } 
  31.     echo $feature.PHP_EOL; 

使用方法:

$query='欢迎访问php粉丝网!脚本之家是国内专业的网站,提供各种脚本下载及JS、Python、php等编程资料';

extractWords($query,$dict);

运行结果:

php粉丝网,脚本之家,脚本下载 

Tags: PHP最大正向匹配算法

分享到: