近日在项目开发过程中使用到了SCWS中文分词系统,先将基本安装过程及使用总结如下。
1、SCWS简介
SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统)。这是一套基于词频词典的机械式中文分词引擎,它能将一整段的中文文本基本正确地切分成词。 词是中文的最小语素单位,但在书写时并不像英语会在词之间用空格分开, 所以如何准确并快速分词一直是中文分词的攻关难点。
SCWS 采用纯 C 语言开发,不依赖任何外部库函数,可直接使用动态链接库嵌入应用程序, 支持的中文编码包括 GBK、UTF-8 等。此外还提供了 PHP 扩展模块, 可在 PHP 中快速而方便地使用分词功能。分词算法上并无太多创新成分,采用的是自己采集的词频词典,并辅以一定的专有名称,人名,地名, 数字年代等规则识别来达到基本分词,经小范围测试准确率在 90% ~ 95% 之间, 基本上能满足一些小型搜索引擎、关键字提取等场合运用。首次雏形版本发布于 2005 年底。SCWS 由 hightman 开发, 并以 BSD 许可协议开源发布,源码托管在 github。
2、SCWS的PHP扩展安装
下载地址: http://www.xunsearch.com/scws/download.php#dll
1)到上述给出的网址,根据当前使用 PHP 版本,下载相应已编译好的 php_scws.dll 扩展库。
2)将下载后的 php_scws.dll 放到 php 安装目录的extensions/ 目录中去(通常为:X:/php/extensions/或 X:/php/ext/)。
3)建立一个本地目录放规则集文件和词典文件,建议使用:C:/program files/scws/etc。
4) 从 scws 主页(上面给出的网址)上下载词典文件,解压后将 *.xdb 放到上述目录中。
词典系列:http://www.xunsearch.com/scws/down/scws-dict-chs-gbk.tar.bz2
http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2
http://www.xunsearch.com/scws/down/scws-dict-cht-utf8.tar.bz2
5)从 scws 主页上下载规则集文件,解压后将 *.ini 放到第 3 步建立的目录。
规则集文件压缩包:http://www.xunsearch.com/scws/down/rules.tgz
解压后有三个文件分别为 rules.ini 、 rules.utf8.ini 、rules_cht.utf8.ini, 将三件文件拷到第 3 步所述的目录中。
6) 修改 php.ini 。
在 php.ini 的末尾加入以下几行:
[scws]
extension = php_scws.dll
scws.default.charset = utf8
scws.default.fpath = "c:/program files/scws/etc"
7) 重开 web 服务器即可完成。在phpinfo()中可以查看是否存在scws。
3、SCWS开发实例
function splitkeyword($keyword)
{
$so = scws_new();
$so->set_charset('utf8');
// 这里没有调用 set_dict 和 set_rule 系统会自动试调用 ini 中指定路径下的词典和规则文件
$so->send_text($keyword);
$result="";
while ($tmp = $so->get_result())
{
foreach ($tmp as &$aa)
{
$result=$result." ".$aa["word"];
}
}
$so->close();
return $result;
}