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

 更新时间:2017年12月19日 10:42:32   作者:流火星空  
这篇文章主要介绍了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相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • 详解Laravel制作API接口

    详解Laravel制作API接口

    API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。本文将详细介绍Laravel制作API接口。
    2021-05-05
  • php+mysqli事务控制实现银行转账实例

    php+mysqli事务控制实现银行转账实例

    这篇文章主要介绍了php+mysqli事务控制实现银行转账,实例分析了事物控制的原理与事物回滚的使用技巧,需要的朋友可以参考下
    2015-01-01
  • 一文详解php中.env实现原理

    一文详解php中.env实现原理

    在PHP中,.env文件是一种常见的配置文件格式,用于存储应用程序的环境变量,本文将给大家大家详细的介绍一下php中.env实现原理,文中给出了简单的示例代码,需要的朋友可以参考下
    2024-01-01
  • php微信开发自定义菜单

    php微信开发自定义菜单

    这篇文章主要为大家详细介绍了php微信开发自定义菜单,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • php保存二进制原始数据为图片的程序代码

    php保存二进制原始数据为图片的程序代码

    得到post过来的二进制原始数据,选择一个生成路径及图片的名字,之后写入,思路很显而易见,需要的朋友可以收藏下
    2014-10-10
  • php中html缓存的实现详解

    php中html缓存的实现详解

    PHP与HTML中实现缓存可以帮助提高网页加载速度和减轻服务器负载,本文主要为大家详细介绍了一些常见的PHP与HTML缓存实现方法,需要的小伙伴可以参考下
    2023-12-12
  • php中unlink()、mkdir()、rmdir()等方法的使用介绍

    php中unlink()、mkdir()、rmdir()等方法的使用介绍

    unlink()函数删除文件 、mkdir()函数创建目录、rmdir()函数删除目录这些方法在文件相关的处理方法会经常使用到,本文整理了一些,需要的朋友可以了解下
    2012-12-12
  • CodeIgniter图像处理类的深入解析

    CodeIgniter图像处理类的深入解析

    本篇文章是对CodeIgniter的图像处理类进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明

    PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明

    中文字符编码研究系列第一期,PHP函数篇详解十进制、二进制、八进制和十六进制互相转换函数说明,主要掌握各进制转换的方法,以应用于实际开发
    2011-12-12
  • php去掉数组的第一个值的两个函数:array_shift、array_splice

    php去掉数组的第一个值的两个函数:array_shift、array_splice

    php去掉数组的第一个值的两种删除方法:1、使用array_shift()函数删除数组的第一个值,语法“array_shift($arr)”,会返回被删除的元素。2、使用array_splice()函数删除第一个值,语法“array_splice($arr,0,1);”;该函数的第二个和第三个参数可以为负数。
    2022-12-12

最新评论