php 一元分词算法


Posted in PHP onNovember 30, 2009
/** 
* 一元分词算法 
* 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 相关文章推荐
解决phpmyadmin中文乱码问题。。。
Jan 18 PHP
常用的php ADODB使用方法集锦
Mar 25 PHP
PHP中Date获取时间不正确怎么办
Jun 05 PHP
PHP中文分词的简单实现代码分享
Jul 17 PHP
比较简单的百度网盘文件直链PHP代码
Mar 24 PHP
php生成zip压缩文件的方法详解
Jun 09 PHP
解析PHP中常见的mongodb查询操作
Jun 20 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
Oct 28 PHP
PHP 7.0新增加的特性介绍
Jun 08 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
Jun 09 PHP
php微信公众号开发之微信企业付款给个人
Oct 04 PHP
PHP项目多语言配置平台实现过程解析
May 18 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
Nov 30 #PHP
php读取html并截取字符串的简单代码
Nov 30 #PHP
php 获取客户端的真实ip
Nov 30 #PHP
php操作sqlserver关于时间日期读取的小小见解
Nov 29 #PHP
php中$this-&amp;gt;含义分析
Nov 29 #PHP
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
Nov 27 #PHP
Ajax+PHP 边学边练之四 表单
Nov 27 #PHP
You might like
简单的php 验证图片生成函数
2009/05/21 PHP
php 输出双引号&quot;与单引号'的方法
2010/05/09 PHP
通过php快速统计某个数据库中每张表的数据量
2012/09/04 PHP
潜说js对象和数组
2011/05/25 Javascript
事件绑定之小测试  onclick &amp;&amp; addEventListener
2011/07/31 Javascript
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
限制textbox或textarea输入字符长度的JS代码
2013/10/16 Javascript
JQuery each打印JS对象的方法
2013/11/13 Javascript
js导航栏单击事件背景变换示例代码
2014/01/13 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
jQuery插件实现可输入和自动匹配的下拉框
2016/10/24 Javascript
浅谈移动端之js touch事件 手势滑动事件
2016/11/07 Javascript
详解angular笔记路由之angular-router
2017/09/12 Javascript
React Router V4使用指南(精讲)
2018/09/17 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
[15:35]教你分分钟做大人:天怒法师
2014/10/30 DOTA
python如何获取服务器硬件信息
2017/05/11 Python
python matplotlib中文显示参数设置解析
2017/12/15 Python
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
pandas使用apply多列生成一列数据的实例
2018/11/28 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
2019/02/12 Python
django 微信网页授权登陆的实现
2019/07/30 Python
Java文件与类动手动脑实例详解
2019/11/10 Python
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
PUMA澳大利亚官方网站:德国运动品牌
2018/10/19 全球购物
幼儿园师德演讲稿
2014/05/06 职场文书
工作经历证明书范文
2014/11/02 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
深入理解go缓存库freecache的使用
2022/02/15 Golang