PHP分词类库phpanalysis的基本用法是怎样的
Admin 2022-08-17 群英技术资讯 267 次浏览
一位网友推荐了SCWS分词系统,看着挺不错,在这里记一下。
最近做实验,苦于php分词的问题,从网上找了很多,但都不行,导致试验结果不是很好,今天早晨抱着不放弃的努力,又试着重网上找开源的php分词词库,终于功夫不负有心人。
发现了一个很好的分词类库phpanalysis2.0。
原文连接地址:http://www.phpbone.com/phpanalysis/
分词系统简介:PHPAnalysis分词程序使用居于unicode的词库,使用反向匹配模式分词,理论上兼容编码更广泛,并且对utf-8编码尤为方便。 由于PHPAnalysis是无组件的系统,因此速度会比有组件的稍慢,不过在大量分词中,由于边分词边完成词库载入,因此内容越多,反而会觉得速度越快,这是正常现象,PHPAnalysis的词库是用一种类似哈希(Hash)的数据结构进行存储的,因此对于比较短的字符串分词,只需要占极小的资源,比那种一次性载入所有词条的实际性要高得多,并且词库容量大小不会影响分词执行的速度。
PHPAnalysis分词系统是基于字符串匹配的分词方法进行分词的,这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与 一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配 和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与 标注相结合的一体化方法。常用的几种机械分词方法如下:
1)正向最大匹配法(由左到右的方向);
2)逆向最大匹配法(由右到左的方向);
3)最少切分(使每一句中切出的词数最小)。
还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向 最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169, 单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各 种其它的语言信息来进一步提高切分的准确率。另一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明 显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。另一种方法是将分词和词类标注结合起来,利用丰富的词类 信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。
PHPAnalysis分词先对需要分词的词进行粗分,然后对粗分的短句子进行二次逆向最大匹配法(RMM)的方法进行分词,分词后对分词结果进行优化,然后才得到最终的分词结果。
PHPAnalysis类API文档
一、比较重要的成员变量 $resultType = 1 生成的分词结果数据类型(1 为全部, 2为 词典词汇及单个中日韩简繁字符及英文, 3 为词典词汇及英文) 这个变量一般用 SetResultType( $rstype ) 这方法进行设置。 $notSplitLen = 5 切分句子最短长度 $toLower = false 把英文单词全部转小写 $differMax = false 使用最大切分模式对二元词进行消岐 $unitWord = true 尝试合并单字(即是新词识别) $differFreq = false 使用热门词优先模式进行消岐 二、主要成员函数列表 1、public function __construct($source_charset='utf-8', $target_charset='utf-8', $load_all=true, $source='') 函数说明:构造函数 参数列表: $source_charset 源字符串编码 $target_charset 目录字符串编码 $load_all 是否完全加载词典(此参数已经作废) $source 源字符串 如果输入输出都是utf-8,实际上可以不必使用任何参数进行初始化,而是通过 SetSource 方法设置要操作的文本 2、public function SetSource( $source, $source_charset='utf-8', $target_charset='utf-8' ) 函数说明:设置源字符串 参数列表: $source 源字符串 $source_charset 源字符串编码 $target_charset 目录字符串编码 返回值:bool 3、public function StartAnalysis($optimize=true) 函数说明:开始执行分词操作 参数列表: $optimize 分词后是否尝试优化结果 返回值:void 一个基本的分词过程: ////////////////////////////////////// $pa = new PhpAnalysis(); $pa->SetSource('需要进行分词的字符串'); //设置分词属性 $pa->resultType = 2; $pa->differMax = true; $pa->StartAnalysis(); //获取你想要的结果 $pa->GetFinallyIndex(); //////////////////////////////////////// 4、public function SetResultType( $rstype ) 函数说明:设置返回结果的类型 实际是对成员变量$resultType的操作 参数 $rstype 值为: 1 为全部, 2为 词典词汇及单个中日韩简繁字符及英文, 3 为词典词汇及英文 返回值:void 5、public function GetFinallyKeywords( $num = 10 ) 函数说明:获取出现频率最高的指定词条数(通常用于提取文档关键字) 参数列表: $num = 10 返回词条个数 返回值:用","分隔的关键字列表 6、public function GetFinallyResult($spword=' ') 函数说明:获得最终分词结果 参数列表: $spword 词条之间的分隔符 返回值:string 7、public function GetSimpleResult() 函数说明:获得粗分结果 返回值:array 8、public function GetSimpleResultAll() 函数说明:获得包含属性信息的粗分结果 属性(1中文词句、2 ANSI词汇(包括全角),3 ANSI标点符号(包括全角),4数字(包括全角),5 中文标点或无法识别字符) 返回值:array 9、public function GetFinallyIndex() 函数说明:获取hash索引数组 返回值:array('word'=>count,...) 按出现频率排序 10、public function MakeDict( $source_file, $target_file='' ) 函数说明:把文本文件词库编译成词典 参数列表: $source_file 源文本文件 $target_file 目标文件(如果不指定,则为当前词典) 返回值:void 11、public function ExportDict( $targetfile ) 函数说明:导出当前词典全部词条为文本文件 参数列表: $targetfile 目标文件 返回值:void
测试代码:
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <title>test</title> </head> <body> <?php require_once 'phpanalysis2.0/phpanalysis.class.php'; $pa=new PhpAnalysis(); $pa->SetSource("PHPAnalysis分词系统是基于字符串匹配的分词方法进行分词的,这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与 一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配 和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与 标注相结合的一体化方法。常用的几种机械分词方法如下: "); $pa->resultType=2; $pa->differMax=true; $pa->StartAnalysis(); $arr=$pa->GetFinallyIndex(); echo "<pre>"; print_r($arr); echo "</pre>"; ?> </body> </html>
效果如下:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
PHP的概念可能大多数从事编程行业或者在职编程人士都是很清楚的,然而,很多人都只知道这是一门服务端编程脚本,可以用来做一些WEB开发。
认证又称“验证”、“鉴权”,是指通过一定的手段,完成对用户身份的确认。身份验证的方法有很多,基本上可分为:基于共享密钥的身份验证、基于生物学特征的身份验证和基于公开密钥加密算法的身份验证。
在用户系统中,生成唯一uid,是很多初级程序员头痛的事情,因为你并不能保证完全的唯一性,如果要保证唯一性,必须要查一次数据库。本文将介绍php生成唯一uid的思路,希望能对大家有所帮助
在本篇内容里小编给大家整理的是一篇关于php文件下载后无法打开的处理方案及代码内容,有兴趣的朋友们可以学习下。
PHP允许您从脚本直接发送电子邮件。本节将为你介绍PHP发送电子邮件的具体方法。下文有实例供大家参考,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家,下面我们一起来了解看看吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008