php 一元分词算法实例代码
Jul 14, 2017 am 11:05 AM
php
代码
实例
一元分词:指语句中每个字都成词,按字切分,不去组合,类似英文单词。UTF8编码下一个字符如果首字符ASCII码不大于192则只占1个字节 。如果首字符ASCII码大于192小于224则占用2个字节,否则占用3个字节 ,一元分词需要在mysql的my.ini文件中增加 ft_min_word_len=1
代码如下:
/** * 一元分词算法 * 可以使用mysql查询语句 show variables like '%ft%' 查看mysql全文搜索相关设置 * * @access global * @param string $str * @param boolean $unique 是否去除重复值 * @param boolean $merge 是否合并附加值 * @return array */ function seg_word($str,$unique=false,$merge=true) { $str = trim(strip_tags($str)); $strlen = strlen($str); if($strlen == 0) return array(); $spc = ' '; //按需增加需要过滤的字符 $search = array(',', '/', '\\', '.', ';', ':', '\'', '!', '~','"', '`', '^', '(', ')', '?', '-', "\t", "\n", '\'', '<', '>', "\r", "\r\n", '\$', '&', '%', '#', '@', '+', '=', '{', '}', '[', ']', ')', '(', '.', '。', ',', '!', ';', '“', '”', '‘', ''', '[', ']', '、', '—', ' ', '《', '》', '-', '…', '【', '】',':'); $numpairs = array('1'=>'一','2'=>'二','3'=>'三','4'=>'四','5'=>'五','6'=>'六','7'=>'七','8'=>'八','9'=>'九','0'=>'零'); $str = alab_num($str); $str = str_replace($search,' ',$str); $ord = $i = $k = 0; $prechar = 0;// 0-空白 1-英文和符号 2-中文 $result = array(); $annex = array(); while($ord = ord($str[$i])) { //1字节字符 if ($ord <= 0xC0 ) { //去除空字符串 if($ord < 33) { $prechar=0; $i++; $k++; continue; } //附加中文大写数字转换 if(isset($numpairs[$str[$i]])) { $annex[]=$numpairs[$str[$i]]; } //如果前面是中文 if( $prechar == 2 ){ $result[++$k] = $str[$i]; } else { $result[$k] .= $str[$i]; } $prechar = 1; $i++; } else //2-3字节字符(中文) { if($ord < 0xE0) $step = 2; else $step = 3; $c = substr($str,$i,$step); if(false !== $key = array_search($c,$numpairs)){ $annex[] = $key; } if ($prechar != 0) { $result[++$k] = $c; } else { $result[$k] .= $c; } $prechar = 2; $i+=$step; } } $result = $merge ? array_merge($result,$annex) : $result ; return $unique ? array_unique($result) : $result ; }
登录后复制
以上是php 一元分词算法实例代码的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保护它?
3 周前
By DDD

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保护它?
3 周前
By DDD

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南

如何设置 Visual Studio Code (VS Code) 进行 PHP 开发
