php的函数是谁写的,一个用PHP写的中文分词函数
一个用PHP写的中文分词函数
class Segmentation{
var$options=array(‘lowercase‘=>TRUE,
‘segment_english‘=>FALSE);
var$dict_name=‘Unknown‘;
var$dict_words=array();
function setLowercase($value){
if($value){
$this->options[‘lowercase‘]=TRUE;
}else{
$this->options[‘lowercase‘]=FALSE;
}
return TRUE;
}
function setSegmentEnglish($value){
if($value){
$this->options[‘segment_english‘]=TRUE;
}else{
$this->options[‘segment_english‘]=FALSE;
}
return TRUE;
}
function load($dict_file){
if(!file_exists($dict_file)){
return FALSE;
}
$fp=fopen($dict_file,‘r‘);
$temp=fgets($fp,1024);
if($temp===FALSE){
return FALSE;
}else{
if(strpos($temp,"“t")!==FALSE){
list($dict_type,$dict_name)=explode("“t",trim($temp));
}else{
$dict_type=trim($temp);
$dict_name=‘Unknown‘;
}
$this->dict_name=$dict_name;
if($dict_type!==‘DICT_WORD_W‘){
return FALSE;
}
}
while(!feof($fp)){
$this->dict_words[rtrim(fgets($fp,32))]=1;
}
fclose($fp);
return TRUE;
}
function getDictName(){
return$this->dict_name;
}
function segmentString($str){
if(count($this->dict_words)===0){
return FALSE;
}
$lines=explode("“n",$str);
return$this->_segmentLines($lines);
}
function segmentFile($filename){
if(count($this->dict_words)===0){
return FALSE;
}
$lines=file($filename);
return$this->_segmentLines($lines);
}
function_segmentLines($lines){
$contents_segmented=‘‘;
foreach($lines as$line){
$contents_segmented.=$this->_segmentLine(rtrim($line))."“n";
}
do{
$contents_segmented=str_replace(‘‘,‘‘,$contents_segmented);
}while(strpos($contents_segmented,‘‘)!==FALSE);
return$contents_segmented;
}
function_segmentLine($str){
$str_final=‘‘;
$str_array=array();
$str_length=strlen($str);
if($str_length>0){
if(ord($str{$str_length-1})>=129){
$str.=‘‘;
}
}
for($i=0;$i
if(ord($str{$i})>=129){
$str_array[]=$str{$i}.$str{$i+1};
$i++;
}else{
$str_tmp=$str{$i};
for($j=$i+1;$j
if(ord($str{$j})<129){
$str_tmp.=$str{$j};
}else{
break;
}
}
$str_array[]=array($str_tmp);
$i=$j-1;
}
}
$pos=count($str_array);
while($pos>0){
$char=$str_array[$pos-1];
if(is_array($char)){
$str_final_tmp=$char[0];
if($this->options[‘segment_english‘]){
$str_final_tmp=preg_replace("/([“!“"“#“$“%“&“‘“(“)“*“+“,“-“.“/“:“;““?“@“[“““““]“^“_“`“{““}“~“t“f]+)/","$1",$str_final_tmp);
$str_final_tmp=preg_replace("/([“!“"“#“$“%“&“‘“(“)“*“+“,“-“.“/“:“;““?“@“[“““““]“^“_“`“{““}“~“t“f])([“!“"“#“$“%“&“‘“(“)“*“+“,“-“.“/“:“;““?“@“[“““““]“^“_“`“{““}“~“t“f])/","$1$2",$str_final_tmp);
}
if($this->options[‘lowercase‘]){
$str_final_tmp=strtolower($str_final_tmp);
}
$str_final="$str_final_tmp$str_final";
$pos;
}else{
$word_found=0;
$word_array=array(0=>‘‘);
if($pos<4){
$word_temp=$pos+1;
}else{
$word_temp=5;
}
for($i=1;$i
$word_array[$i]=$str_array[$pos-$i].$word_array[$i-1];
}
for($i=($word_temp-1);$i>1;$i){
if(array_key_exists($word_array[$i],$this->dict_words)){
$word_found=$i;
break;
}
}
if($word_found){
$str_final="$word_array[$word_found]$str_final";
$pos=$pos-$word_found;
}else{
$str_final="$char$str_final";
$pos;
}
}
}
return$str_final;
}
}
?>
分享到:
php的函数是谁写的,一个用PHP写的中文分词函数相关推荐
- php自定义中文分词方法,一个用PHP写的中文分词函数_php
class Segmentation { var $options = array('lowercase' => TRUE, 'segment_english' => FALSE); va ...
- 已知计算组合的公式如下,用递归算法写出一个计算组合Cmn的值的函数zh(m,n),并写出主函数调用该函数。
/* 已知计算组合数的公式如下,用递归算法写出一个计算组合Cmn的值的函数zh(m,n),并写出主函数调用该函数. 输入 两个整数 m,n(m>=n)输出 组合值样例输入 4 2 样例输出 6 ...
- 面试让写一个“bind”函数,详解五层bind函数进阶写法,带你写出一个让面试官满意的 “bind” 函数
文章目录 手写bind函数 第一层 - 绑定在原型上的方法 第二层 - 改变this的指向 第三层 - 支持柯里化 第四层 - 考虑 new 的调用 第五层 - 保留函数原型 总结最终版bind函数 ...
- 1. 写出一个能创建多级目录的 PHP 函数(新浪网技术部)
function create_dir($path,$mode){if (is_dir($path)){echo "该目录已经存在";}else{if(mkdir($path,$m ...
- “应付”大学作业,我花3小时写了一个“文本转手写”神器
作者 | Saurabh Daware 译者 | 弯月,责编 | 郭芮 来源 | CSDN(ID:CSDNnews) 最近,有一个名叫Saurabh Daware的印度大学生只花了3个小时就编写了一款 ...
- 阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和 ...
- 我写了一个“文本转手写”神器来搞定作业!
作者 | Saurabh Daware 译者 | 弯月,责编 | 郭芮 头图 | CSDN 下载自视觉中国 出品 | CSDN(ID:CSDNnews) 以下为译文: 最近,有一个名叫Saurabh ...
- php函数库快速记忆法_史上最全的php函数大全
定义了一下方法,具体用法可查百度 usleep() 函数延迟代码执行若干微秒. unpack() 函数从二进制字符串对数据进行解包. uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID ...
- ACMNO.27 Python的两行代码解决 C语言-字符逆序 写一函数。使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串。 输入 一行字符 输出 逆序后的字符串
题目描述 写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串. 输入 一行字符 输出 逆序后的字符串 样例输入 123456abcdef 样例输出 fedcba654321 来源 ...
最新文章
- 不是报错就是崩盘,这些代码迁移问题你遇到过几个?
- 《理解 ES6》阅读整理:块绑定(Block Binding)
- Java 面试知识点解析(二)——高并发编程篇
- 【c++面向对象编程】工资管理系统
- CentOS 编译Hadoop 2.6 32位
- Web前端之移动端课程开发之06.bootstrap
- 如何使用 SpringCloud 搭建服务注册中心?
- [物理学与PDEs]第2章第4节 激波 4.2 熵条件
- R语言ETL工程系列:检索(select)
- android mms 广播,Android-如何成为第一个接收WAP PUSH(MMS)的人
- zend studio12配置php,Zend Studio 12.0调试php代码
- 遇到电脑中病毒了怎么办
- python神奇的小海龟_Python绘图——认识turtle小海龟
- 小学数学题的Java实现
- 史上最详细的WinHex数据恢复大师(六大章节)视频教程
- JAVA线程 -- 线程状态
- gt710显卡驱动linux,华硕 GT710-SL-2G驱动下载_asus GT710-SL-2G显卡驱动下载-硬件之家...
- SoLoMo:移动互联网创新的“三维模式”分析
- 配置apache和nginx的tomcat负载均衡
- DSP2837d双核调试
热门文章
- Linux按照行数、大小切分文件
- 考研数学自整理,弥补知识漏洞(强化、冲刺)
- 计算机英语词汇论文,【计算机英语论文】计算机英语词汇教育思索(共2137字)
- php微信40037,服务号发送模板消息问题,错误码:40037
- 安卓的短信记录导入苹果_安卓换苹果手机如何进行便签数据转移?
- centos6.5 nginx1.8 php mysql,CentOS6.5 源码安装Nginx1.8 + PHP7.0.6 + MySQL5.7.12
- 用计算机听音乐和看电影的ppt,五年级下册信息技术课件-第六课 用计算机听音乐和看电影 川教版 (共13张PPT)...
- kubernetes ConfigMap和Secret:配置应用程序
- 48.孩子们的游戏(圆圈中最后剩下的数)
- Python学习之路—初识Python