SCWS 百科内容来自于: 百度百科

简介

词是汉语的基本语素单位,而书写的时候不像英语会在词之间用空格分开,所以如何准确而又快速的分词一直是中文分词的攻关难点。
SCWS 在概念上其实并无创新成分,采用的是自行采集的词频词典,并辅以一定程度上的专有名称、人名、地名、数字年代等规则集,经小范围测试大概准确率在 90% ~ 95% 之间,已能基本满足一些中小型搜索引擎、关键字提取等场合运用。 SCWS 采用纯 C 代码开发,以 Unix-Like OS 为主要平台环境,提供共享函数库,方便植入各种现有软件系统。此外它支持 GBK,UTF-8,BIG5 等汉字编码,切词效率高。
SCWS 是开放源码并且免费的。
SCWS 智能卡网络服务器,是由SIM卡行业开发的一种解决方案,旨在为运营商提供一个功能丰富的便携式环境来开发基于多媒体SIM卡的应用。

特色与内容

SCWS 采用标准C开发由 hightman 个人开发,无任何第三方库函数依赖。提供 C的接口、PHP的扩展(源码、WIN32的DLL文件),是目前使用最方便的开源免费中文分词软件之一。
SCWS 特别为全文索引考虑,提供了自创的复合分词,可以把长词再分成短词,把散字按二元切词法进行结合的功能。
SCWS 默认提供通用的互联网信息词库,提供 PHP编写的词典导入导出工具 。自 1.1.1 版起,支持用户自定义文本词典,支持基于词性的规则权重。
SCWS 软件包中除包含核心库代码外,还包含一个命令行工具、词典转换工具。

版本情况

SCWS项目仍在不断开发和更新中,当前最新版本为 1.2.0 版。
SCWS-1.1.x
C 代码
*Unix*/*PHP*
准确: 95%, 召回: 91%, 速度: 1.2MB/sec
PHP扩展分词速度: 250KB/sec

  
php_scws.dll(1)
PHP扩展库
Windows/PHP 4.4.x
准确: 95%, 召回: 91%, 速度: 40KB/sec

  
php_scws.dll(2)
PHP扩展库
Windows/PHP 5.2.x
准确: 95%, 召回: 91%, 速度: 40KB/sec

  
php_scws.dll(3)
PHP扩展库
Windows/PHP 5.3.x
准确: 95%, 召回: 91%, 速度: 40KB/sec

  

C语言范例

一个简单的分词实例:
#include <scws.h>
#include <stdlib.h>
main()
{
scws_t s;
scws_res_t res, cur;
char *text = "Hello, 我名字叫李那曲是一个中国人, 我有时买Q币来玩, 我还听说过C#语言";
if (!(s = scws_new())) {
printf("error, can't init the scws_t!\n");
exit(-1);
}
scws_set_charset(s, "gbk");
scws_set_dict(s, "/usr/local/scws/etc/dict.xdb", SCWS_XDICT_XDB);
scws_set_rule(s, "/usr/local/scws/etc/rules.ini");
scws_send_text(s, text, strlen(text));
while (res = cur = scws_get_result(s))
{
while (cur != NULL)
{
printf("Word: %.*s/%s (IDF = %4.2f)\n",
cur->len, text+cur->off, cur->attr, cur->idf);
cur = cur->next;
}
scws_free_result(res);
}
scws_free(s);
}
编译:gcc -o test -I/usr/local/scws/include -L/usr/local/scws/lib test.c -lscws -Wl,--rpath -Wl,/usr/local/scws/lib

PHP调用范例

例子1. 使用类方法分词
<?php
$so = scws_new();
$so->set_charset('gbk');
// 这里没有调用 set_dict 和 set_rule 系统会自动试调用 ini 中指定路径下的词典和规则文件
$so->send_text("我是一个中国人,我会C++语言,我也有很多T恤衣服");
while ($tmp = $so->get_result())
{
print_r($tmp);
}
$so->close();
?>
例子2. 使用函数提取高频词
<?php
$sh = scws_open();
scws_set_charset($sh, 'gbk');
scws_set_dict($sh, '/path/to/dict.xdb');
scws_set_rule($sh, '/path/to/rules.ini');
$text = "我是一个中国人,我会C++语言,我也有很多T恤衣服";
scws_send_text($sh, $text);
$top = scws_get_tops($sh, 5);
print_r($top);
?>
$firstVoiceSent
- 来自原声例句
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定