/**

* 一元分词算法

* 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 一元分词算法相关推荐

  1. Matrix67:漫话中文分词算法

    这篇文章不错,列举了很多有意思的中文分词困难例子(特别是对未登词部分)来说明中文分词的困难之处. Matrix67:漫话中文分词算法 发表于 2011年03月10号 由 52nlp 注:这是今天在Ma ...

  2. 让机器学会断句:基于词典的Bigram分词算法

    目录 概述 从序列到图 Unigram 模型 Bigram 模型 实现 概述 分词是NLP任务Pipeline中的重要步骤,一般来说都需要将句子切分成词之后,才能进一步把词进行向量化,最终输出各种各样 ...

  3. 盘古分词 - 多元分词算法

    中文分词按照分词粒度来分,分成 一元分词,二元分词,多元分词和精确分词等类型.一元分词就是最简单的分词,将所有的中文字符按照单字形式输出.二元分词按双字形式输出.多元分词则是将一句话中可能的单词组合按 ...

  4. 漫话中文自动分词和语义识别:中文分词算法

    原文链接: http://www.matrix67.com/blog/archives/4212 漫话中文自动分词和语义识别(下):句法结构和语义结构 | Matrix67: The Aha Mome ...

  5. 列举:中文分词算法你知道几种?

    列举:中文分词算法你知道几种? 摘要:看似普通的一句话,甚至几个词,在机器眼里都要经过好几道"程序".这个过程主要靠中文分词算法,这个算法分为三大类:机械分词算法.基于n元语法的分 ...

  6. 基于感知器的中文分词算法

    http://heshenghuan.github.io/2015/12/21/%E5%9F%BA%E4%BA%8E%E6%84%9F%E7%9F%A5%E5%99%A8%E7%9A%84%E4%B8 ...

  7. 正向最大匹配算法 python代码_中文分词算法之最大正向匹配算法(Python版)

    最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的. 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配. 首先我们可以规定一个词的最大长度,每次扫描的时候 ...

  8. 基于词典的正向最大匹配中文分词算法,能实现中英文数字混合分词

    基于词典的正向最大匹配中文分词算法,能实现中英文数字混合分词.比如能分出这样的词:bb霜.3室.乐phone.touch4.mp3.T恤 第一次写中文分词程序,欢迎拍砖. publicclass MM ...

  9. 大数据DDos检测——DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然! 和一个句子的分词算法CRF没有区别!...

    DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然!--和一个句子的分词算法CRF没有区别! 注:传统DDos检测直接基于IP数据发送流量来识别 ...

最新文章

  1. loadrunner,socket脚本总结
  2. deprecated pixel format used, make sure you did set range correctly
  3. 嵌入式linux基础知识累积
  4. MySQL【案例讲解】分组函数
  5. [深度学习] 面试常见问题+解析汇总
  6. linux开机引导过程总览
  7. json 格式化工具_如何在命令行中优雅地处理JSON
  8. java向Excel文件写入数据
  9. GCC for Win32开发环境介绍
  10. 计算机一级考试题组成,计算机一级考试试题汇总
  11. Android开发在路上:少去踩坑,多走捷径
  12. Cocos文档案例游戏设计的梳理与分析
  13. 数乌龟(母牛,兔子....)[打表法]
  14. Python实现学生信息管理系统
  15. JQuary(从原生js到jq,就发现jq好简单)
  16. 在Windows Server 2008和Vista中增加恢复菜单WinRE
  17. linux手机+华为,基于Linux打造,华为重磅宣布,开始在6款手机测试新系统
  18. Incomplete Multimodal Learning(不完整多模态学习)
  19. android银行卡绑定,华为huawei pay怎么绑定银行卡 绑卡方法教程
  20. 《关爱码农成长计划》第一期报告

热门文章

  1. Ubuntu安装anaconda,tensorflow,keras,pytorch
  2. 通过深度优先搜索(DFS)对图的边进行分类
  3. QT+OPENCV+FFTW内存问题
  4. leetcode算法题第二题(c++)
  5. C# 构造函数base()实例演示
  6. day 15 模块、起别名、from导入
  7. Spark之MLlib
  8. 2015阿里秋招当中一个算法题(经典)
  9. HDU5763 another meaning -(KMP+DP)
  10. 【直通BAT】剑指Offer 经典试题整理(5)