2007-06-06, 09:42 AM
关于 PHP 版简易中文分词
目前已经发布的PHP版分词有第2版和第3版,这两个版本的用法完全一样,主要区别在于分词的算法,前者采用正向最大匹配2级交叉消岐,而后者采用的是双向匹配综合消岐。并没有绝对的谁优谁劣,似乎半斤八两。
两者都是基于词典词频查询,推荐词典格式为 cdb,因为它在 PHP 中有捆绑而且同时支持 windows 和 *Unix* ,只需要在PHP编译时加入 --with-dba --with-cdb 即可,在 windows 中打开 php-dba.dll 扩展就行了。
下载及演示
1. 在线第2/3版综合演示 - http://www.hightman.cn/demo/scws/demo.php
2. 全部下载包,只包括 .cdb 和 .txt 格式词典(cdb 若需要用于 php5 请自行转换词典)
http://www.hightman.cn/down/php-scws-v23.tgz (5.3MB)
词典转换办法写一个小程序在 php4 下将词典全部读出并存在 .txt ,然后再到 php5 环境将解析 txt 文件并存回 cdb,详情可参见回贴中的相关代码,或参见下载包中的 dict/mk_***.php (这些脚本并非在WEB中调用而是命令行执行)
类库调用方法说明
require '/path/to/my_SimpledCWS2.class.php';
// 如果是第3版请用 my_SimpledCWS3.class.php
$cws = new my_SimpledCWS2('dict/dict.cdb');
$rs = $cws->segment($string);
print_r($rs);
// 其它可用方法介绍:
// 设定词典路径 (后缀名为库类型,内置支持 sqlite txt cdb gdbm四个格式)
->set_dict($fpath);
// 设定是否删除标点符号
->set_ignore_mark($trueORfalse);
// 设定是否自动进行人名识别
->set_autodis($trueORflase);
// 展示切词过程
->set_debug($trueORfalse);
// 分词执行
->segment($string, [$callback]);
针对 $string 执行分词, $callback 作为回调函数,可选。参数是切割好的词组成的数组。若未设定 callback 则该函数返回切好的词组成的数组。特别注意:由于本函数一次性全部操作完成才返回, 若文本过长建议一行行传入切割
目前已经发布的PHP版分词有第2版和第3版,这两个版本的用法完全一样,主要区别在于分词的算法,前者采用正向最大匹配2级交叉消岐,而后者采用的是双向匹配综合消岐。并没有绝对的谁优谁劣,似乎半斤八两。
两者都是基于词典词频查询,推荐词典格式为 cdb,因为它在 PHP 中有捆绑而且同时支持 windows 和 *Unix* ,只需要在PHP编译时加入 --with-dba --with-cdb 即可,在 windows 中打开 php-dba.dll 扩展就行了。
下载及演示
1. 在线第2/3版综合演示 - http://www.hightman.cn/demo/scws/demo.php
2. 全部下载包,只包括 .cdb 和 .txt 格式词典(cdb 若需要用于 php5 请自行转换词典)
http://www.hightman.cn/down/php-scws-v23.tgz (5.3MB)
词典转换办法写一个小程序在 php4 下将词典全部读出并存在 .txt ,然后再到 php5 环境将解析 txt 文件并存回 cdb,详情可参见回贴中的相关代码,或参见下载包中的 dict/mk_***.php (这些脚本并非在WEB中调用而是命令行执行)
类库调用方法说明
require '/path/to/my_SimpledCWS2.class.php';
// 如果是第3版请用 my_SimpledCWS3.class.php
$cws = new my_SimpledCWS2('dict/dict.cdb');
$rs = $cws->segment($string);
print_r($rs);
// 其它可用方法介绍:
// 设定词典路径 (后缀名为库类型,内置支持 sqlite txt cdb gdbm四个格式)
->set_dict($fpath);
// 设定是否删除标点符号
->set_ignore_mark($trueORfalse);
// 设定是否自动进行人名识别
->set_autodis($trueORflase);
// 展示切词过程
->set_debug($trueORfalse);
// 分词执行
->segment($string, [$callback]);
针对 $string 执行分词, $callback 作为回调函数,可选。参数是切割好的词组成的数组。若未设定 callback 则该函数返回切好的词组成的数组。特别注意:由于本函数一次性全部操作完成才返回, 若文本过长建议一行行传入切割