PHP 安装 Friso 中文分词扩展


Last updated on 2 个月前 by ueaner


系统环境:

  • CentOS 7.3 x86_64
  • PHP 7.1.14

简介

Friso 是使用c语言开发的一款开源的高性能中文分词器,使用流行的 mmseg 算法实现。 类似于 coreseekLibMMSeg 中文分词软件包。

安装 friso 分词组件

# cd ~/tarball

# git clone https://gitee.com/lionsoul/friso
# cd friso/src
# make && make install
# mv /usr/lib/libfriso.so /usr/lib64

以上命令将会把:

  • friso 命令,放在 /usr/local/bin/friso
  • libfriso.so 共享库,放在 /usr/lib64/libfriso.so
  • friso 头文件,放在 /usr/include/friso

配置词典目录

注意:以下 friso.ini 配置文件词典文件 是根据笔者个人习惯规划的目录,并非绝对,请知晓。


friso.ini 配置文件放在 /usr/local/etc 目录下:

# cp ~/tarball/friso/friso.ini /usr/local/etc/friso.ini

词典文件放在 /usr/local/var/friso_dict 目录下,执行完毕后这个目录下会有 GBKUTF-8 两种编码词典文件,请按需选择使用:

# cp -r ~/tarball/friso/vendors/dict /usr/local/var/friso_dict

编辑 /usr/local/etc/friso.ini 配置 friso.lex_dir 选项指向 UTF-8 编码的词典目录,词典目录以 / 结尾:

# 0 表示 UTF-8 编码
friso.charset = 0
friso.lex_dir = /usr/local/var/friso_dict/UTF-8/

如果使用 GBK 编码,使用以下配置:

# 1 表示 GBK 编码
friso.charset = 1
friso.lex_dir = /usr/local/var/friso_dict/GBK/

现在来试用下 Friso 的命令行交互界面,验证配置的效果:

[ueaner@mybox ~]$ /usr/local/bin/friso -init /usr/local/etc/friso.ini
Initialized in 0.110000sec
Mode: Complex
+-Version: 1.6.2 (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 的 PHP 扩展

# cd ~/tarball/friso/vendors/binding/php7
# phpize
# ./configure
# make && make install

编辑 php.ini 添加 friso 扩展信息:

extension=friso.so
[Friso]
friso.ini_file=/usr/local/etc/friso.ini

重新加载 php-fpm,或重启 apache:

# systemctl restart php-fpm
OR
# service httpd restart

验证 PHP 是否已加载 friso 扩展:

# php -m | grep friso
friso

或查看 phpinfo,如图:

PHP Friso 中文分词扩展

使用

首先在Web服务根目录下创建一个名为 friso.php 的测试文件,使用 friso 的复杂切分模式进行测试,内容为:

<?php

$str = 'Friso是使用c语言开发的一款开源的高性能中文分词器';
$keywords = [];

$result = friso_split($str, ['mode' => FRISO_COMPLEX]);

foreach ($result as $item) {
    $keywords[] = $item['word'];
}

var_dump($keywords);

浏览器访问 http://localhost/friso.php 输出:

array (size=13)
  0 => string 'friso' (length=5)
  1 => string '是' (length=3)
  2 => string '使用' (length=6)
  3 => string 'c语言' (length=7)
  4 => string '开发' (length=6)
  5 => string '的' (length=3)
  6 => string '一款' (length=6)
  7 => string '开源' (length=6)
  8 => string '的' (length=3)
  9 => string '高性能' (length=9)
  10 => string '中文' (length=6)
  11 => string '国语' (length=6)
  12 => string '分词器' (length=9)

更多 friso 的分词模式及使用方法请查看 friso-help-doc.pdf 和源码中的 vendors/binding/php7/demo 文件夹。

如果使用 sphinx/coreseek,请查看 Linux 下配置 Sphinx(coreseek) 中文分词

转载请注明出处。
本文地址:http://blog.aboutc.net/post/php/php-installation-friso-chinese-word-extension