如何安装 php scws(分词组件)?-php教程

资源魔 30 0
centOs 环境下装置 scws

一、装置 bzip2 及 gcc gcc-c++
yum install bzip2
yum -y install gcc gcc-c++
二、下载  scws-1.2.3 的代码
wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2
三、解压
tar xvjf scws-1.2.3.tar.bz2
四、装置
cd scws-1.2.3
./configure --prefix=/usr/local/scws
make ; 
make install
顺遂的话曾经编译并装置胜利到 /usr/local/scws 中了,执行上面饬令看看文件能否存正在
ls -al /usr/local/scws/lib/libscws.la
五、用 wget 下载并解压辞书,或从主页下载而后自行解压再将 *.xdb 放入 /usr/local/scws/etc 目次中
cd /usr/local/scws/etc
wget http://www.xunsearch.com/scws/down/scws-dict-chs-gbk.tar.bz2
wget http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2
tar xvjf scws-dict-chs-gbk.tar.bz2
tar xvjf scws-dict-chs-utf8.tar.bz2
六、php扩大
假如您需求正在 php 中挪用分词,倡议持续浏览本文装置 php 扩大,不然可跳过没有看。
假定您曾经将 scws 按上述步骤装置到 /usr/local/scws 中。
装置此扩大要求您的 php 以及零碎环境装置了相应的 autoconf automake 对象及 phpize 。
1) 进入源码目次的 phpext/ 目次 
cd /var/scws-1.2.3/phpext
2) 执行 phpize (正在PHP装置目次的bin/目次下)[不装置phpize 应用 yum install php-devel 装置]
3) 执行 ./configure --with-scws=/usr/local/scws 
4) 若 php 装置正在非凡目次 $php_prefix, 则请正在 configure 后加之 --with-php-config=$php_prefix/bin/php-config
5) 正在 php.ini [/etc/php.ini] 中退出如下几行
[scws]
extension = scws.so
scws.default.charset = utf8
scws.default.fpath = /usr/local/scws/etc

Windows 环境下装置 scws

php 扩大下载地点
1. 依据您以后用的 PHP 版本,下载相应已编译好的 php_scws.dll 扩大库。
   今朝支持 PHP-4.4.x 以及 PHP-5.2.x 系列,下载地点辨别为:
   php-4.4.x: http://www.xunsearch.com/scws/down/php-4.4.x/php_scws.dll
   php-5.2.x: http://www.xunsearch.com/scws/down/php-5.2.x/php_scws.dll
   php-5.3.x: http://www.xunsearch.com/scws/down/php-5.3.x/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 通常位于 C:/windows/php.ini 或 C:/winnt/php.ini 之类的目次,
   正在 php.ini 的末尾退出如下几行:
[scws]
;
; 留意请反省 php.ini 中的 extension_dir 的设定值能否正确, 不然请将 extension_dir 设为空,
; 再把 php_scws.dll 指定为相对门路。
;
extension = php_scws.dll
scws.default.charset = gbk
scws.default.fpath = "c:/program files/scws/etc"
5. 重开 web 效劳器便可实现。

php 代码

php 代码
<?php
$so = scws_new();
//$so->set_charset('utf-8');
// 这里不挪用 set_dict 以及 set_rule 零碎会主动试挪用 ini 中指定门路下的辞书以及规定文件
$so->send_text("我是一个中国人,我会C++言语,我也有不少T恤衣服 name is hai");
while ($tmp = $so->get_result())
{
  print_r($tmp);
}
$so->close();
?>
预约义常量
-----------
* `SCWS_XDICT_XDB`  辞书文件为 XDB
* `SCWS_XDICT_MEM`  将辞书全副加载到内存里
* `SCWS_XDICT_TXT`  辞书文件为 TXT(纯文本)
* `SCWS_MULTI_NONE`     没有进行复合分词
* `SCWS_MULTI_SHORT` 短词复合  
* `SCWS_MULTI_DUALITY`   散字二元复合
* `SCWS_MULTI_ZMAIN` 首要单字
* `SCWS_MULTI_ZALL`     全副单字
预约义类
---------
这是一个相似 `Directory` 的内置式伪类操作,类办法建设请应用 `scws_new()` 函数,而不克不及间接用 `new SimpleCWS`。
不然没有会蕴含有 handle 指针,将无奈正确操作。它蕴含的办法有:
```php
class SimpleCWS  {
  resource handle;
  bool close(void);
  bool set_charset(string charset)
  bool add_dict(string dict_path[, int mode = SCWS_XDICT_XDB])
  bool set_dict(string dict_path[, int mode = SCWS_XDICT_XDB])
  bool set_rule(string rule_path)
  bool set_ignore(bool yes)
  bool set_multi(int mode)
  bool set_duality(bool yes)
  bool send_text(string text)
  mixed get_result(void)
  mixed get_tops([int limit [, string xattr]])
  bool has_word(string xattr)
  mixed get_words(string xattr)
  string version(void)
};
```
> **留意** 类办法的用与支 scws_xxx_xxx 系列函数用法分歧,只不外免去第一参数,
> 故没有另外编写阐明,请参见函数列表便可。
**例子1** 应用类办法分词
```php
<?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
<?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);
?>
```
> **留意** 为不便应用,当 `SimpleCWS::send_text` 办法或 `scws_send_text()` 函数被挪用前而且不
> 加载任何辞书以及规定集时,零碎会主动正在 `scws.default.fpath` (ini设置装备摆设)目次中查找相应的字符集辞书。
> 辞书以及规定文件的定名形式为 dict[.字符集].xdb 以及 rules[.字符集].ini ,当字符集是 gbk 时中括号外面的
> 局部则没有需求,间接应用 dict.xdb 以及 rules.ini 而没有是 dict.gbk.xdb 。
> 
> 别的,输出的文字,辞书、规定文件这三者的字符集必需对立,假如没有是默许的 gbk 字符集请挪用 
> `SimpleCWS::set_charset` 或 `scws_set_charset` 来设定,不然可能呈现不测谬误。
函数详解
--------
1. `mixed scws_new(void)` 创立并前往一个 `SimpleCWS` 类操尴尬刁难象。
   > **前往值** 胜利前往类操作句柄,失败前往 false。
2. `mixed scws_open(void)` 创立并前往一个分词操作句柄。
   > **前往值** 胜利前往 scws 操作句柄,失败前往 false。
3. `bool scws_close(resource scws_handle)`  
   `SimpleCWS::close(void)` 封闭一个已关上的 scws 分词操作句柄。
   > **参数 scws_handle** 即以前由 scws_open 关上的前往值。  
   > **前往值** 始终为 true  
   > **留意** 前面的 API 中省去引见 scws_handle 参数,含意以及本函数相反。
4. `bool scws_set_charset(resource scws_handle, string charset)`  
   `bool SimpleCWS::set_charset(string charset)` 设定分词辞书、规定集、欲分文本字符串的字符集。
   > **参数 charset** 要新设定的字符集,今朝只支持 utf8 以及 gbk。(注:默许为 gbk,utf8没有要写成utf-8)  
   > **前往值** 始终为 true
5. `bool scws_add_dict(resource scws_handle, string dict_path [, int mode])`
   `bool SimpleCWS::add_dict(string dict_path [, int mode])` 增加分词所用的辞书,新退出的优先查找。
   > **参数 dict_path** 辞书的门路,能够是绝对门路或齐全门路。(遵照平安模式下的 open_basedir)  
   > **参数 mode** 可选,示意加载的形式。其值有:
   >
   >   - SCWS_XDICT_TXT  示意要读取的辞书文件是文本格局,能够以及后2项连系用
   >   - SCWS_XDICT_XDB  示意间接读取 xdb 文件(此为默许值)
   >   - SCWS_XDICT_MEM  示意将 xdb 文件全副加载到内存中,以 XTree 构造寄存,可用异或连系另外2个应用。
   >
   > **前往值** 胜利前往 true 失败前往 false
6. `bool scws_set_dict(resource scws_handle, string dict_path [, int mode])`  
   `bool SimpleCWS::set_dict(string dict_path [, int mode])` 设定分词所用的辞书并肃清已存正在的辞书列表。
   > **参数 dict_path** 辞书的门路,能够是绝对门路或齐全门路。(遵照平安模式下的 open_basedir)  
   > **参数 mode** 可选,示意加载的形式。参见 `scws_add_dict`  
   > **前往值** 胜利前往 true 失败前往 false
7. `bool scws_set_rule(resource scws_handle, string rule_path)`  
   `bool SimpleCWS::set_rule(string rule_path)` 设定分词所用的新词辨认规定集(用于人名、地名、数字工夫年月等辨认)。
   > **参数 rule_path** 规定集的门路,能够是绝对门路或齐全门路。(遵照平安模式下的 open_basedir)  
   > **参数 mode** 可选,示意加载的形式。参见 `scws_add_dict`  
   > **前往值** 胜利前往 true 失败前往 false
8. `bool scws_set_ignore(resource scws_handle, bool yes)`  
   `bool SimpleCWS::set_ignore(bool yes)` 设定分词前往后果时能否去除了一些非凡的标点符号之类。
   > **参数 yes** 设定值,假如为 true 则后果中没有前往标点符号,假如为 false 则会前往,缺省为 false。  
   > **前往值** 始终为 true
9. `bool scws_set_multi(resource scws_handle, int mode)`  
   `bool SimpleCWS::set_multi(bool yes)` 设定分词前往后果时能否复式宰割,如“中国人”前往“中国+人+中国人”三个词。
   > **参数 mode** 复合分词法的级别,缺省没有复合分词。取值由上面几个常量异或组合(也可用 1-15 来示意):
   >
   >   - SCWS_MULTI_SHORT   (1)短词
   >   - SCWS_MULTI_DUALITY (2)二元(将相邻的2个单字组分解一个词)
   >   - SCWS_MULTI_ZMAIN   (4)首要单字
   >   - SCWS_MULTI_ZALL    (8)全副单字
   >
   > **前往值** 始终为 true
10. `bool scws_set_duality(resource scws_handle, bool yes)`  
    `bool SimpleCWS::set_duality(bool yes)` 设定能否将闲散文字主动以二字分词法聚合
   > **参数 yes** 设定值,假如为 true 则后果中多个单字会主动按二分法聚分,假如为 false 则没有解决,缺省为 false。  
   > **前往值** 始终为 true
11. `bool scws_send_text(resource scws_handle, string text)`  
    `bool SimpleCWS::send_text(string text)` 发送设定分词所要切割的文本。
   > **参数 text** 要切分的文本的内容。  
   > **前往值** 胜利前往 true 失败前往 false  
   > **留意** 零碎底层解决形式为对该文本添加一个援用,故不管多长的文本其实不会造成内存糜费;
   > 执行本函数时,若未加载任何辞书以及规定集,则会主动试图正在 ini 指定的缺省目次下查找缺省字符集的辞书以及规定集。
12. `mixed scws_get_result(resource scws_handle)`  
    `mixed SimpleCWS::get_result()` 依据 send_text 设定的文本内容,前往一系列切好的辞汇。
   > **前往值** 胜利前往切好的辞汇组成的数组,若无更多辞汇,前往 false。前往的辞汇蕴含的键值以下:
   >
   >   - word _string_ 词自身
   >   - idf _float_ 逆文本词频
   >   - off _int_ 该词正在原文本路的地位
   >   - attr _string_ 词性
   >
   > **留意** 每一次切词后本函数应该轮回挪用,直到前往 false 为止,由于顺序每一次前往的词数是没有确定的。
13. `mixed scws_get_tops(resource scws_handle [, int limit [, string attr]])`  
    `mixed SimpleCWS::get_tops([int limit [, string attr]])` 依据 send_text 设定的文本内容,前往零碎较量争论进去的最要害辞汇列表。
   > **参数 limit** 可选参数,前往的词的最年夜数目,缺省是 10  
   > **参数 attr** 可选参数,是一系列词性组成的字符串,各词性之间以半角的逗号离隔,
   > 这示意前往的词性必需正在列表中,假如以~扫尾,则示意取反,词性必需没有正在列表中,缺省为NULL,前往全副词性,不外滤。  
   > **前往值** 胜利前往统计好的的辞汇组成的数组,前往 false。前往的辞汇蕴含的键值以下:
   >
   >   - word _string_ 词自身
   >   - times _int_ 词正在文本中呈现的次数
   >   - weight _float_ 该词较量争论后的权重
   >   - attr _string_ 词性
14. `mixed scws_get_words(resource scws_handle, string attr)`  
    `mixed SimpleCWS::get_words(string attr)` 依据 send_text 设定的文本内容,前往零碎中词性合乎要求的要害辞汇。
   > **参数 attr** 是一系列词性组成的字符串,各词性之间以半角的逗号离隔,
   > 这示意前往的词性必需正在列表中,假如以~扫尾,则示意取反,词性必需没有正在列表中,若为空则前往全副词。  
   > **前往值** 胜利前往合乎要求辞汇组成的数组,前往 false。前往的辞汇蕴含的键值参见 `scws_get_result`
15. `bool scws_has_words(resource scws_handle, string attr)`  
    `mixed SimpleCWS::has_words(string attr)` 依据 send_text 设定的文本内容,前往零碎中能否包罗合乎词性要求的要害词。
   > **参数 attr** 是一系列词性组成的字符串,各词性之间以半角的逗号离隔,
   > 这示意前往的词性必需正在列表中,假如以~扫尾,则示意取反,词性必需没有正在列表中,若为空则前往全副词。  
   > **前往值** 假如有则前往 true,不就前往 false。
16. `string scws_version(void)`  
    `string SimpleCWS::version(void)` 前往 scws 版本号称号信息(字符串)。

以上就是若何装置 php scws(分词组件)?的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学 scws

抱歉,评论功能暂时关闭!