系统环境:
- CentOS 6.5 x86_64
- PHP 5.5.9
简介
Robbe 是建立在 friso 中文分词上的一个高性能 PHP 中文分词扩展。采用流行的 mmseg 算法实现, 类似于 coreseek 的 LibMMSeg 中文分词软件包。
安装 friso 分词组件
# wget https://friso.googlecode.com/files/friso-1.6.0-src-lib-dict.zip
# unzip friso-1.6.0-src-lib-dict.zip -d /usr/local/src/
# cd /usr/local/src/friso-1.6.0/src
# make && make install
Robbe 源码中的 README.txt 文件, 告诉我们:将friso里面的dict和friso.ini拷贝到一个好点的目录吧, 那我们就拷贝到好点的目录吧。
# cp /usr/local/src/friso-1.6.0/friso.ini /etc/
配置词典目录
编辑 /etc/friso.ini
,friso.lex_dir
指向我们的分词目录:
friso.lex_dir = /usr/local/src/friso-1.6.0/dict/UTF-8/
注意其他用户使用 friso 时,对 /usr/local/src/friso-1.6.0/dict/ 词典目录的访问权限。
从 1.6.0 版本后添加了 GBK 编码支持,新添了 GBK
和 UTF-8
两个目录,friso.lex_dir 的目录配置为 /usr/local/src/friso-1.6.0/dict/UTF-8/
或 /usr/local/src/friso-1.6.0/dict/GBK/
,如果是 GBK friso.charset
选项设置为 1 。
1.6.0 版本之前,请设置 friso.lex_dir 目录地址为 /usr/local/src/friso-x.x.x/dict/
.
首次运行:
# /usr/local/bin/friso -init /etc/friso.ini
./friso: error while loading shared libraries: libfriso.so: cannot open shared object file: No such file or directory
解决:
# cp libfriso.so /usr/lib64/
再次运行:
# /usr/local/bin/friso -init /etc/friso.ini
Initialized in 0.150000sec
+-Version: 1.6.0 (UTF-8)
+-----------------------------------------------------------+
| friso - a chinese word segmentation writen by c. |
| bug report email - chenxin619315@gmail.com. |
| or: visit http://code.google.com/p/friso. |
| java edition for http://code.google.com/p/jcseg |
| type 'quit' to exit the program. |
+-----------------------------------------------------------+
friso>> 我是中国人
分词结果:
我 是 中国人
Done, cost < 0.000000sec
friso>> 走路去拉萨
分词结果:
走路 去 拉萨
Done, cost < 0.000000sec
friso>> quit
Thanks for trying friso.
friso 安装并配置完毕。
安装 Robbe PHP 扩展
# wget https://robbe.googlecode.com/files/robbe-1.6.0-src-lib-dict.zip
# unzip robbe-1.6.0-src-lib-dict.zip -d /usr/local/src/
# cd /usr/local/src/robbe-1.6.0/src/
# phpize
# ./configure
到此步需要注意:无论是64位系统还是32位系统(lionsoul 注)均需编辑 Makefile
文件,分别将 robbe.lo: 和 robbe.la: 两处的 -o
参数前 添加 -lfriso
,最后为 -lfriso -o
。 详情请查看:http://www.oschina.net/question/853816_119031
# make && make install
配置 PHP 添加 Robbe 扩展,编辑 php.ini
添加以下内容:
extension=robbe.so
[robbe]
robbe.ini_file=/etc/friso.ini
重新加载 php-fpm,或重启 apache:
# service php-fpm reload
OR
# service httpd restart
验证 PHP 是否已加载 Robbe 扩展:
# php -m | grep robbe
robbe
或查看 phpinfo,如图:
使用
首先我们创建一个 robbe.php 测试文件,使用 robbe 的简易分词模式进行测试,内容为:
<?php
$str = 'PHP 安装 Robbe 中文分词扩展';
$participle = array();
if (defined('RB_CMODE')) { // robbe 版本 = 1.6
$_cfg = array('mode' => RB_CMODE);
$splitKeywords = rb_split($str, $_cfg);
foreach($splitKeywords as $keyword) {
$participle[] = $keyword['word'];
}
} else if (defined('__RB_SIMPLE_MODE__')) { // robbe 版本 < 1.6
$participle = rb_split($str, __RB_SIMPLE_MODE__);
}
var_dump($participle);
浏览器访问 http://localhost/robbe.php,输出:
array (size=5)
0 => string 'php' (length=3)
1 => string '安装' (length=6)
2 => string 'robbe' (length=5)
3 => string '中文分词' (length=12)
4 => string '扩展' (length=6)
更多 robbe 的分词模式及使用方法请查看源码中 php 文件夹
下的文件。
从结果可以看出 friso 好像不区分大小写。(为了检索方便, friso统一将大写转换成了小写, 统一将圆角转换成了半角... lionsoul 注)
如果你使用的 sphinx/coreseek,请查看 配置官方版 Sphinx 一元分词,支持中文 或 Linux 下配置 Sphinx(coreseek) 中文分词。
Good Luck!
转载请注明出处。
本文地址:http://blog.aboutc.net/php/59/php-installation-robbe-chinese-word-extension