• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

cli/H24-Feb-2016-1,2191,033

etc/H24-Feb-2016-1,4301,251

libscws/H24-Feb-2016-5,2043,988

phpext/H24-Feb-2016-1,3201,003

win32/H03-May-2022-1,5351,458

API.mdH A D08-Jan-201310.4 KiB229171

AUTHORSH A D08-Jan-201377 74

COPYINGH A D06-Jan-20131.7 KiB3731

ChangeLogH A D06-Jan-20137.1 KiB189152

INSTALLH A D24-Feb-201615.4 KiB371289

Makefile.amH A D11-Jul-2013549 3116

Makefile.inH A D24-Feb-201625.1 KiB834728

NEWSH A D08-Jan-201376 63

READMEH A D07-Jan-20137.4 KiB184133

aclocal.m4H A D24-Feb-2016363.6 KiB10,1829,205

compileH A D24-Feb-20167.2 KiB348258

config.guessH A D24-Feb-201641.9 KiB1,4221,230

config.h.inH A D24-Feb-20164.2 KiB163110

config.subH A D24-Feb-201635.1 KiB1,8081,670

configureH A D24-Feb-2016447 KiB15,34512,838

configure.acH A D24-Feb-20162.6 KiB9982

depcompH A D24-Feb-201623 KiB792502

install-shH A D24-Feb-201614.3 KiB502327

ltmain.shH A D24-Feb-2016316.5 KiB11,1487,979

missingH A D24-Feb-20166.7 KiB216143

README

1README of SCWS
2===============
3$Id$
4
5SCWS 简介
6---------
7
8[SCWS][1] 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统)。
9这是一套基于词频词典的机械式中文分词引擎,它能将一整段的中文文本基本正确地切分成词。词是
10中文的最小语素单位,但在书写时并不像英语会在词之间用空格分开,所以如何准确并快速分词一直
11是中文分词的攻关难点。
12
13SCWS 采用纯 C 语言开发,不依赖任何外部库函数,可直接使用动态链接库嵌入应用程序,支持的
14中文编码包括 `GBK`、`UTF-8` 等。此外还提供了 [PHP][2] 扩展模块,可在 PHP 中快速
15而方便地使用分词功能。
16
17分词算法上并无太多创新成分,采用的是自己采集的词频词典,并辅以一定的专有名称,人名,地名,
18数字年代等规则识别来达到基本分词,经小范围测试准确率在 90% ~ 95% 之间,基本上能满足一些
19小型搜索引擎、关键字提取等场合运用。首次雏形版本发布于 2005 年底。
20
21SCWS 由 [hightman][8] 开发,并以 BSD 许可协议开源发布 ,参见 [COPYING][7]。
22
23
24PHP 分词演示
25------------
26
27* _GBK_ <http://www.xunsearch.com/scws/demo/v4.php>
28* _UTF-8_ <http://www.xunsearch.com/scws/demo/v48.php>
29* _繁体中文_ <http://www.xunsearch.com/scws/demo/v48.cht.php>
30
31
32安装
33-----
34
35目前 scws 只提供源码包,和大多数 GNU 软件的编译安装步骤一样。下面我们以 `Linux` 系统为例,
36要求装有 `gcc` 编译器。`Windows` 上则建议用 [cygwin][3] 或 [mingw][4] 环境编译。
37
381. 取得 scws 源码并解压到当前目录
39   ```
40   wget -q -O - http://www.xunsearch.com/scws/down/scws-1.2.1.tar.bz2 | tar xjf -
41   ```
42
432. 进入源码目录配置和编译
44   ```
45   cd scws-1.2.1 ; ./configure ; make install
46   ```
47   > 注意:这是以默认方式安装到 `/usr/local` 目录。详细配置参数执行 `./configure --help` 查看。
48
49
50PHP 扩展
51---------
52
53在 UNIX 类的系统上,请直接从源码方式编译安装 PHP 扩展;对于 windows 系统,请直接下载我们编译好的
54`php_scws.dll` 即可。
55
56假定您已经将 scws 安装到 `$prefix` 目录,还要求系统环境装有 autoconf automake 及 phpize 工具。
57
581. 进入源码目录的 phpext/ 并执行 `phpize` (位于 php 安装目录下的 bin 目录里)
59
602. 执行 `configure` 进行配置和基础检测,假定您的 php 安装在 `$php_prefix` 目录
61   ```
62   ./configure --with-scws=/usr/local --with-php-config=$php_prefix/bin/php-config
63   ```
64
653. 先编译然后以 `root` 身份安装
66   ```
67   make
68   sudo make install
69   ```
70
714. 在 php.ini 中加入以下内容
72   ```
73   [scws]
74   ; 注意请检查 php.ini 中的 extension_dir 的设定值是否正确, 否则请将 extension_dir 设为空,
75   ; 再把 extension = scws.sophp_scws.dll 指定绝对路径。
76   extension = scws.so
77   scws.default.charset = gbk
78   scws.default.fpath = $prefix/etc
79   ```
80
815. 命令行下执行 `php -m` 就能看到 scws 了,phpinfo() 也会包含关于 scws 的信息。
82
836. windows 下的 php 扩展是采用 dll 库文件。我们已预编译若干个版本,采用 zip 压缩位于
84   `phpext/win32/php_scws-1.2.1-win32.zip`,请直接解压后选择相应版本的 `php_scws.dll`。
85   将它复制到 PHP 的扩展目录中(通常是 extensions 或 ext 目录),然后参考上面的方式修改 `php.ini`。
86
877. 关于 PHP 扩展的示例用法及开发参考,请参见 [phpext/README.md][6]。
88
89
90配套工具用法
91------------
92
931. **$prefix/bin/scws** 这是分词的命令行工具,执行 scws -h 可以看到详细帮助说明。
94   ```
95   Usage: scws [options] [[-i] input] [[-o] output]
96   ```
97   * _-i string|file_ 要切分的字符串或文件,如不指定则程序自动读取标准输入,每输入一行执行一次分词
98   * _-o file_ 切分结果输出保存的文件路径,若不指定直接输出到屏幕
99   * _-c charset_ 指定分词的字符集,默认是 gbk,可选 utf8
100   * _-r file_ 指定规则集文件(规则集用于数词、数字、专有名字、人名的识别)
101   * _-d file[:file2[:...]]_ 指定词典文件路径(XDB格式,请在 -c 之后使用)
102     ```
103     自 1.1.0 起,支持多词典同时载入,也支持纯文本词典(必须是.txt结尾),多词典路径之间用冒号(:)隔开,
104     排在越后面的词典优先级越高。
105
106     文本词典的数据格式参见 scws-gen-dict 所用的格式,但更宽松一些,允许用不定量的空格分开,只有<词>是必备项目,
107     其它数据可有可无,当词性标注为“!”(叹号)时表示该词作废,即使在较低优先级的词库中存在该词也将作废。
108     ```
109   * _-M level_ 复合分词的级别:1~15,按位异或的 1|2|4|8 依次表示 短词|二元|主要字|全部字,缺省不复合分词。
110   * _-I_ 输出结果忽略跳过所有的标点符号
111   * _-A_ 显示词性
112   * _-E_ 将 xdb 词典读入内存 xtree 结构 (如果切分的文件很大才需要)
113   * _-N_ 不显示切分时间和提示
114   * _-D_ debug 模式 (很少用,需要编译时打开 --enable-debug)
115   * _-U_ 将闲散单字自动调用二分法结合
116   * _-t num_ 取得前 num 个高频词
117   * _-a [~]attr1[,attr2[,...]]_ 只显示某些词性的词,加~表示过滤该词性的词,多个词性之间用逗号分隔
118   * _-v_ 查看版本
119
1202. **$prefix/bin/scws-gen-dict** 词典转换工具
121   ```
122   Usage: scws-gen-dict [options] [-i] dict.txt [-o] dict.xdb
123   ```
124   * _-c charset_ 指定字符集,默认为 gbk,可选 utf8
125   * _-i file_ 文本文件(txt),默认为 dict.txt
126   * _-o file_ 输出 xdb 文件的路径,默认为 dict.xdb
127   * _-p num_ 指定 XDB 结构 HASH 质数(通常不需要)
128   * _-U_ 反向解压,将输入的 xdb 文件转换为 txt 格式输出 (TODO)
129
130   > 文本词典格式为每行一个词,各行由 4 个字段组成,字段之间用若干个空格或制表符(\t)分隔。
131   > 含义(其中只有 <词> 是必须提供的),`#` 开头的行视为注释忽略不计:
132   > ```
133   > #<词>  <词频(TF)>  <词重(IDF)>  <词性(北大标注)>
134   > 新词条 12.0        2.2          n
135   > ```
136
137libscws API
138-------------
139
140这是整合 scws 到其它应和程序的接口说明,详见 [API][5]。
141
142
143rules.ini 规则集
144-----------------
145
146(暂缺)
147
148
149关于 XDB 词典
150--------------
151
152我们的词典使用的是自行开发的专用 XDB 格式,免费提供的词典是通用的互联网信息词汇集,
153收录了大约 28 万个词。
154
155如果您需要定制词典以作特殊用途,请与我们联系,可能会视情况进行收费。
156
157
158性能指标
159---------
160
161在 FreeBSD 6.2 系统,单核单 CPU 至强 3.0G 的服务器上,测试长度为 80,535 的文本。
162用附带的命令行工具耗时将约 0.17 秒,若改用 php 扩展方式调用,则耗时约为 0.65 秒。
163
164分词精度 95.60%,召回率 90.51% (F-1: 0.93)
165
166
167其它
168-------
169
170该文档由 hightman 于 2007/06/08 首次编写,同时在不断修订中!
171
172项目主页:<http://www.xunsearch.com/scws> 我的邮箱:hightman2@yahoo.com.cn
173
174
175[1]: http://www.xunsearch.com/scws
176[2]: http://www.php.net
177[3]: http://www.cygwin.com
178[4]: http://www.mingw.org
179[5]: https://github.com/hightman/scws/blob/master/API.md
180[6]: https://github.com/hightman/scws/blob/master/phpext/README.md
181[7]: https://github.com/hightman/scws/blob/master/COPYING
182[8]: http://www.hightman.cn
183
184