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

 

效果如下:

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

  1. SharpICTCLAS分词系统简介

    SharpICTCLAS分词系统简介(4)NShortPath-1http://www.cnblogs.com/zhenyulu/articles/669795.html SharpICTCLAS 1 ...

  2. php 分词 —— PHPAnalysis无组件分词系统

    分词,顾名思义就是把词语分开,从哪里分开?当然是一大堆词语里了,一大堆词语是什么?是废话或者名言.这在数据库搜索时非常有用. 官方网站 http://www.phpbone.com/phpanalys ...

  3. ICTCLAS20160405分词系统调试过程

    一.前期准备: 1.下载最新版本的资源包:CTCLAS20160405171043_ICTCLAS2016分词系统下载包 2.下载最新版本的licence:https://github.com/NLP ...

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

    目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...

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

    简介 平时经常用Python写些小程序.在做文本分析相关的事情时免不了进行中文分词,于是就遇到了用Python实现的结巴中文分词.jieba使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以 ...

  6. Lucene.Net简介和分词

    Lucene.net站内搜索—2.Lucene.Net简介和分词 2015-03-24 23:10 by 邹琼俊, 118 阅读, 1 评论, 收藏, 编辑 Lucene.Net简介 Lucene.N ...

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

    一.本文内容简介 二.具体内容 1. 中文分词的基本概念 2.关于NLPIR(北理工张华平版中文分词系统)的基本情况 3.具体SDK模块(C++)的组装方式 ①准备内容: ②开始组装 三.注意事项 一 ...

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

    2.1 jieba 2.1.1 jieba简介 Jieba中文含义结巴,jieba库是目前做的最好的python分词组件.首先它的安装十分便捷,只需要使用pip安装:其次,它不需要另外下载其它的数据包 ...

  9. Python环境下NIPIR(ICTCLAS2014)中文分词系统使用攻略

    一.安装 官方链接:http://pynlpir.readthedocs.org/en/latest/installation.html 官方网页中介绍了几种安装方法,大家根据个人需要,自行参考!我采 ...

随机推荐

  1. mysql中的SQL_CACHE(性能更优化)

    mysql中的sql_cache是个容易忽视的地方,要 使用的话,必须先设置query_cache_size, 以及设置query_cache_type ,其中 query_cache_type 这个 ...

  2. AC日记——【模板】最小费用最大流 P3381

    题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表 ...

  3. AC日记——Milking Grid poj 2185

    Milking Grid Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 8314   Accepted: 3586 Desc ...

  4. 精读《Function Component 入门》

    1. 引言 如果你在使用 React 16,可以尝试 Function Component 风格,享受更大的灵活性.但在尝试之前,最好先阅读本文,对 Function Component 的思维模式有 ...

  5. win10下ubuntu虚拟机互传文件

    前言 用过虚拟机的都知道在向linux传文件的时候总是会遇到各种问题 安装虚拟机的增强工具不好用,反正就是各种麻烦各种麻烦 准备-------方案一 使用专门的xshell可以直接链接到虚拟机,同时配 ...

  6. 小W摆石子

    可以确定, 最后围成是 一个长方形 + 多出一列 的形状. 而且多出的那一列应该是和较短的边相邻. 贴代码. #include<iostream> #include<algorith ...

  7. Java中泛型T和Class<T>以及Class<?>的理解(转)

    注意:class是java的关键字, 在声明Java类时使用; Class类的实例表示Java应用运行时的类(class ans enum)或接口(interface and annotation)( ...

  8. MySQL中limit使用动态参数的解决方法(拼接SQL字符串语句来执行SQL)

    官方好像说过limit已经在5.6版本上支持了动态参数,但是测试时依然还是不行. 那么要解决limit动态参数唯一能做的就是使用字符串SQL拼接的形式,然后再进行执行. 一般有以下方式解决: 1.存储 ...

  9. Chrom查看Flash缓存文件及Flash下载方法

    比如在优酷看视频时,或者熊猫直播,如果使用Flash进行播放的基本都会先缓存在本地,只不过这个缓存的名字后缀不叫flv,而是类似tmp这样:通常只要找到这个缓存文件,然后改为flv即可播放:如果出现文 ...

  10. 配置laravel的nginx站点

    server{}配置 server{ #端口配置 listen 80; #域名配置 server_name laravel.cc; index index.php index.html index.h ...