PHP分词

本文对比分析了SCWS和phpanalysis两种分词工具的特点与使用方法。SCWS擅长快速处理中文文本,但对数字、字母和标点的识别有限;phpanalysis则更全面,能够细致地处理各种字符类型,尽管处理速度稍慢。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

废话不多说,直接上代码

常用的也就两种:

SCWS 和 phpanalysis

先给一段字符串:

$str = '真怕有一天,我们jg1552再次成为交叉线,我想那时就再也不可23454能回归了,快乐永远!$%是拿痛苦做代价,你现在^&%多幸福,多快乐,你以后^^&就会越FG伤心越难过,不想发生!';

一、SCWS

1、下载这两

a、pscws4中的 pscws4.class.php和xdb_r.class.php文件放到根目录的/extend/org下

b、修改命名规则,使之符合tp5

c、加命名空间,方便引入与调用

2、开始测试

$result=$this->get_tags($str);

dump($result);

//scws分词函数
    public function get_tags($title){
        //新建实例对象
        $pscws=new Pscws('utf8');

        $path = \Env::get('root_path');

        $path = str_replace('\\','/',$path);

        //设置字典文件和规则集文件
        $pscws->set_dict($path . 'application/Common/Conf/etc/dict.utf8.xdb');
        $pscws->set_rule($path . 'application/Common/Conf/etc/rules.utf8.ini');

        //调用send_text()方法
        $pscws->send_text($title);

        $tags['words']= $pscws->get_result();
        $pscws->close();

        return $tags;

    }

结果图

二、phpanalysis

下载文件包

1、放到根目录extend中,修改命名并加命名空间

2、测试结果

        $pa = new PhpAnalysis();

        $pa::$loadInit = false;
        $pa->LoadDict();
        $pa->SetSource($str);
        $pa->StartAnalysis( false );
        $result = $pa->GetFinallyResult();

        $result = explode(' ',$result);
        dump($result);

结果图

 

 因此,可以看出,SCWS只能分割中文,遇到标点、字母、数字就会停止分割。但是分词速度很快

phpanalysis分词比较全面,会稍微慢点

 

含有3种切分方法 getWord 长度优先切分 。最快 getShortWord 细粒度切分。比最快慢一点点 getAutoWord 自动切分 (在相邻词做了递归) 。效果最好 可自定义词典,自己添加词语到词库,词库支持文本格式json和二级制格式igb 二进制格式词典小,加载快 dict.igb含有175662个词,欢迎大家补充词语到 dict.txt ,格式(词语 \t idf \t 词性) idf 获取方法 百度搜索这个词语 Math.log(100000001/结果数量),如果你有更好的方法欢迎补充。 词性 [标点符号,名词,动词,形容词,区别词,代词,数词,量词,副词,介词,连词,助词,语气词,拟声词,叹词] 取index ;标点符号取0 三种分词结果对比 $fc = new VicWord('igb'); $arr = $fc->getWord('北京大学生喝进口红酒,在北京大学生活区喝进口红酒'); //北京大学|生喝|进口|红酒|,|在|北京大学|生活区|喝|进口|红酒 //$arr 是一个数组 每个单元的结构[词语,词语位置,词性,这个词语是否包含在词典中] 这里只值列出了词语 $arr = $fc->getShortWord('北京大学生喝进口红酒,在北京大学生活区喝进口红酒'); //北京|大学|生喝|进口|红酒|,|在|北京|大学|生活|区喝|进口|红酒 $arr = $fc->getAutoWord('北京大学生喝进口红酒,在北京大学生活区喝进口红酒'); //北京|大学生|喝|进口|红酒|,|在|北京大学|生活区|喝|进口|红酒 //对比 //qq的分词和百度的分词 http://nlp.qq.com/semantic.cgi#page2 http://ai.baidu.com/tech/nlp/lexical 分词速度 机器阿里云 Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz getWord 每秒140w字 getShortWord 每秒138w字 getAutoWord 每秒40w字 测试文本在百度百科拷贝的一段5000字的文本
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值