PHPAnalysis简单方便的PHP分词系统类

PHPAnalysis分词程序使用居于unicode的词库,使用反向匹配模式分词,理论上兼容编码更广泛,并且对utf-8编码尤为方便。 由于PHPAnalysis是无组件的系统,因此速度会比有组件的稍慢,不过在大量分词中,由于边分词边完成词库载入,因此内容越多,反而会觉得速度越 快,这是正常现象。

PHPAnalysis的词库是用一种类似哈希(Hash)的数据结构进行存储的,因此对于比较短的字符串分词,只需要占极小的资源, 比那种一次性载入所有词条的实际性要高得多,并且词库容量大小不会影响分词执行的速度。

PHPAnalysis分词系统是基于字符串匹配的分词方法进行分词的,这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与 一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。

按照扫描方向的不同,串匹配分词方法可以分为正向匹配 和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与 标注相结合的一体化方法。常用的几种机械分词方法如下:

正向最大匹配法(由左到右的方向)。
逆向最大匹配法(由右到左的方向)。
最少切分(使每一句中切出的词数最小)。
还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向 最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。

统计结果表明,单纯使用正向最大匹配的错误率为1/169, 单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各 种其它的语言信息来进一步提高切分的准确率。

另一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明 显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。

另一种方法是将分词和词类标注结合起来,利用丰富的词类 信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。

PHPAnalysis分词先对需要分词的词进行粗分,然后对粗分的短句子进行二次逆向最大匹配法(RMM)的方法进行分词,分词后对分词结果进行优化,然后才得到最终的分词结果。

API文档

成员变量

变量 默认值 描述
$resultType 1 生成的分词结果数据类型
1 为全部
2为词典词汇及单个中日韩简繁字符及英文
3 为词典词汇及英文
这个变量一般用 SetResultType( $rstype ) 这方法进行设置。

$notSplitLen 5 切分句子最短长度
$toLower false 把英文单词全部转小写
$differMax false 使用最大切分模式对二元词进行消岐
$unitWord true 尝试合并单字(即是新词识别)
$differFreq false 使用热门词优先模式进行消岐
成员函数

__construct()

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 方法设置要操作的文本

SetSource()

public function SetSource( $source, $source_charset='utf-8', $target_charset='utf-8' )
函数说明:设置源字符串

参数列表:
$source 源字符串
$source_charset 源字符串编码
$target_charset 目录字符串编码

返回值:bool

StartAnalysis()

public function StartAnalysis($optimize=true)
函数说明:开始执行分词操作

参数列表:
$optimize 分词后是否尝试优化结果
返回值:void

一个基本的分词过程:

$pa = new PhpAnalysis();
$pa->SetSource('需要进行分词的字符串');
//设置分词属性
$pa->resultType = 2;
$pa->differMax  = true;
$pa->StartAnalysis();
//获取你想要的结果
$pa->GetFinallyIndex();
SetResultType()

public function SetResultType( $rstype )
函数说明:设置返回结果的类型,实际是对成员变量$resultType的操作

参数 $rstype 值为:

1 为全部
2为 词典词汇及单个中日韩简繁字符及英文
3 为词典词汇及英文
返回值:void

GetFinallyKeywords()

public function GetFinallyKeywords( $num = 10 )
函数说明:获取出现频率最高的指定词条数(通常用于提取文档关键字)

参数列表:
$num = 10 返回词条个数

返回值:用”,”分隔的关键字列表

GetFinallyResult()

public function GetFinallyResult($spword=' ')
函数说明:获得最终分词结果

参数列表:

$spword 词条之间的分隔符

返回值:string

GetSimpleResult()

public function GetSimpleResult()
函数说明:获得粗分结果

返回值:array

GetSimpleResultAll()

public function GetSimpleResultAll()
函数说明:获得包含属性信息的粗分结果

属性(1中文词句、2 ANSI词汇(包括全角),3 ANSI标点符号(包括全角),4数字(包括全角),5 中文标点或无法识别字符)

返回值:array

GetFinallyIndex()

public function GetFinallyIndex()
函数说明:获取hash索引数组
返回值:array(‘word’=>count,…) 按出现频率排序

MakeDict()

public function MakeDict( $source_file, $target_file='' )
函数说明:把文本文件词库编译成词典

参数列表:
$source_file 源文本文件
$target_file 目标文件(如果不指定,则为当前词典)

返回值:void

ExportDict()

public function ExportDict( $targetfile )
函数说明:导出当前词典全部词条为文本文件

参数列表:
$targetfile 目标文件
返回值:void

简单示例

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>";

时间: 2024-12-30 17:59:18

PHPAnalysis简单方便的PHP分词系统类的相关文章

几款开源的中文分词系统_相关技巧

以下介绍4款开源中文分词系统. 1.ICTCLAS – 全球最受欢迎的汉语分词系统         中文词法分析是中文信息处理的基础与关键.中国科学院计算技术研究所在多年研究工作积累的基础上,研制出了汉语词法分析系统ICTCLAS(Institute of Computing Technology, Chinese Lexical Analysis System),主要功能包括中文分词:词性标注:命名实体识别:新词识别:同时支持用户词典:支持繁体中文:支持GBK.UTF-8.UTF-7.UNIC

推荐 几种Apache Lucene 分词系统

1. StopAnalyzer StopAnalyzer能过滤词汇中的特定字符串和词汇,并且完成大写转小写的功能. 2. StandardAnalyzer StandardAnalyzer根据空格和符号来完成分词,还可以完成数字.字母.E-mail地址.IP地址以及中文字符的分析处理,还可以支持过滤词表,用来代替StopAnalyzer能够实现的过滤功能. 3. SimpleAnalyzer SimpleAnalyzer具备基本西文字符词汇分析的分词器,处理词汇单元时,以非字母字符作为分割符号.

简单的php新闻发布系统教程_php实例

简单的php新闻发布系统教程(第一版)第一讲:用 phpmyadmin 建立数据库首先建立一个数据库,名为 yayu .在这个数据库下建立一个数据表,名为 news .下面进入一个重点,那就是在表 news 下建立各个字段. 那么,什么叫字段呢?通俗点,就是一类事物的总称.比如说,所有的新闻发表时间用一个名词来代表(从偶的经验来看,用 phpmyadmin 建立 字段可以用中文,但从习惯来说还是用英文,没办法,计算机美国最牛嘛).偶们用" time "来表示.在字段 time 下可以有

开源php中文分词系统SCWS安装和使用实例_php实例

一.SCWS简介 SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统).这是一套基于词频词典的机械式中文分词引擎,它能将一整段的中文文本基本正确地切分成词. 词是中文的最小语素单位,但在书写时并不像英语会在词之间用空格分开, 所以如何准确并快速分词一直是中文分词的攻关难点.SCWS 采用纯 C 语言开发,不依赖任何外部库函数,可直接使用动态链接库嵌入应用程序, 支持的中文编码包括 GBK.UTF-8 等.此外还提供了 PHP 扩展模

用asp写个简单的加密和解密的类

加密|解密 用asp写个简单的加密和解密的类,在这个类中简单的实现了一个加密和解密.目的是和大家分享一下.这个类的破解非常简单.看看我的注释就知道是怎么回事了.下次编写一个java的加密和解密的类. class Base64Class rem Const dim sBASE_64_CHARACTERS'转化码 dim lenString '计算字符串的长度 dim iCount '计数器 dim returnValue '返回值 dim tempChar'缓存字符 dim tempString'

软件工程之系统建模篇:设计系统类模型

类模型是面向对象分析的核心,系统类模型用包图描述,前面的文章我们分析 了实体类.接口类.接口控制类和用例控制类,本章我们将介绍系统类模型的设 计,首先简要介绍类模型的设计方法,然后设计子系统的类模型,最后设计系统 类模型. 1.设计方法 设计系统类模型,要明确子系统或系统的组成,及各个组成部分之间的关系, 子系统的划分和前面介绍过的接口类包的划分相同,主要包括:发文办理.收文 办理.会议管理.档案管理.公告管理.个人助理.系统管理.用户登录8个子系 统,无论是子系统模型还是系统类模型,都包含接口

ASP.NET实现的简单易用文件上传类

  这篇文章主要介绍了ASP.NET实现的简单易用文件上传类,本文给出实现代码和使用方法示例,需要的朋友可以参考下 调用方法: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 UploadFile uf = new UploadFile();   /*可选参数*/ uf.SetIsUseOldFileName(true);//是否使用原始文件名作为新文件的文件名(默认:true),true原始文件名,false系统生成新文件名

objective ...-基于oc的ios开发,如何给一个系统类添加一个属性?

问题描述 基于oc的ios开发,如何给一个系统类添加一个属性? 基于oc的ios开发,如何给一个系统类添加一个属性? 目前我知道可以用继承或类别实现.但不知道哪种方式好 解决方案 用类别: .h文件 #import @interface UIButton (TLButton) @property(nonatomic,strong,readwrite)NSNumber* cityId; @property(nonatomic,strong,readwrite)NSNumber* typeId; @

ictclas分词系统-ICTCLAS分词系统的使用

问题描述 ICTCLAS分词系统的使用 怎么用ICTCLAS分词系统对一个TXT文档里面的所有中文语料进行分词操作,求大神指点,越详细越好 解决方案 ICTCLAS分词系统可以高效地实现分词.下面把过程贴出来. 使用方法,首先到网上下载ICTCLAS,因为我是windows下的C++实现,所以在http://ictclas.org/ictclas_download.aspx下载ICTCLAS2011_Windows_32_c,解压,里面有很好的Demo,Doc,copy API目录下的所有文件(