分词系统简介: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

测试代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<!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>

 

效果如下:

时间: 2024-11-03 01:20:56

分词系统简介:PHPAnalysis分词程序的相关文章

中文分词工具简介与安装教程(jieba、nlpir、hanlp、pkuseg、foolnltk、snownlp、thulac)

2.1 jieba 2.1.1 jieba简介 Jieba中文含义结巴,jieba库是目前做的最好的python分词组件.首先它的安装十分便捷,只需要使用pip安装:其次,它不需要另外下载其它的数据包,在这一点上它比其余五款分词工具都要便捷.另外,jieba库支持的文本编码方式为utf-8. Jieba库包含许多功能,如分词.词性标注.自定义词典.关键词提取.基于jieba的关键词提取有两种常用算法,一是TF-IDF算法:二是TextRank算法.基于jieba库的分词,包含三种分词模式: 精准

.net 的一个分词系统(jieba中文分词的.NET版本:jieba.NET)

简介 平时经常用Python写些小程序.在做文本分析相关的事情时免不了进行中文分词,于是就遇到了用Python实现的结巴中文分词.jieba使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以到它的在线演示站点体验下(注意第三行文字). .NET平台上常见的分词组件是盘古分词,但是已经好久没有更新了.最明显的是内置词典,jieba的词典有50万个词条,而盘古的词典是17万,这样会造成明显不同的分词效果.另外,对于未登录词,jieba“采用了基于汉字成词能力的HMM模型,使用了Viterb

中科院中文分词系统ICTCLAS如何在安卓平台上使用

============问题描述============ 最近的安卓开发中需要用到中文分词,就用了中科院的这个分词系统,但是按java应用程序方法引入API中的文件(DATA,ICTCLAS,Configure)等程序总会报错,请问有人在安卓平台上用过吗?麻烦告诉我该如何引用,如果有别的分词系统使用方法也可以~~ ============解决方案1============ dll貌似不能行啊...

使用NLPIR-ICTCLAS2014分词系统

0.使用NLPIR-ICTCLAS2014分词系统之前的准备 下载NLPIR-ICTCLAS2014的下载包.高速传送门: http://ictclas.nlpir.org/upload/20140618094605_ICTCLAS2014.zip 须要有自己的词库(事实上没有都没问题,词库仅仅是我自己须要用到的,某个方面的词汇,来帮助进行页面分析的) 1.高速从NLPIR-ICTCLAS2014的下载包中获得我们须要的东西 首先来看一下整个目录的结构 Data目录中,含有分词须要用到的字典,C

Lucene.net站内搜索2—Lucene.Net简介和分词

Lucene.Net简介 Lucene.Net是由Java版本的Lucene(卢思银)移植过来的,所有的类.方法都几乎和Lucene一模一样,因此使用时参考Lucene 即可.Lucene.Net只是一个全文检索开发包(就像ADO.Net和管理系统的关系),不是一个成型的搜索引擎,它的功能就是:把数据扔给Lucene.Net ,查询数据的时候从Lucene.Net 查询数据,可以看做是提供了全文检索功能的一个数据库.SQLServer中和Lucene.Net各存一份,目的不一样.Lucene.N

几款开源的中文分词系统

中文分词是做好中文内容检索.文本分析的基础,主要应用于搜索引擎与数据挖掘领域.中文是以词为基本语素单位,而词与词之间并不像英语一样有空格来分隔,因而中文分词的难点在于如何准确而又快速地进行分词 以下介绍4款开源中文分词系统. 1.ICTCLAS – 全球最受欢迎的汉语分词系统 中文词法分析是中文信息处理的基础与关键.中国科学院计算技术研究所在多年研究工作积累的基础上,研制出了汉语词法分析系统ICTCLAS(Institute of Computing Technology, Chinese Le

ICTCLAS20160405分词系统调试过程

一.前期准备: 1.下载最新版本的资源包:CTCLAS20160405171043_ICTCLAS2016分词系统下载包 2.下载最新版本的licence:https://github.com/NLPIR-team/NLPIR/tree/master/License 二.调试程序 1.将JnaTest_NLPIR工程工程导入到MyEclipse. 2.修改NLPIR目录 这个与操作系统有关,在\汉语分词20140928\lib\操作系统目录下.我的是win7 64bit,所以在汉语分词20140

Apache Lucene 几种分词系统

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

NLPIR(北理工张华平版中文分词系统)的SDK(C++)调用方法

一.本文内容简介 二.具体内容 1. 中文分词的基本概念 2.关于NLPIR(北理工张华平版中文分词系统)的基本情况 3.具体SDK模块(C++)的组装方式 ①准备内容: ②开始组装 三.注意事项 一.本文内容简介 关于中文分词的基本概念 关于NLPIR(北理工张华平版中文分词系统)的基本情况 具体SDK模块(C++版)的组装方法 二.具体内容 1. 中文分词的基本概念 中文分词是自然语言处理的一个分支,自然语言即人们在日常生活中使用的语言,包含书面语,口语,例如报纸上的一篇通讯,博客里面的一篇