我是靠谱客的博主 懵懂啤酒,这篇文章主要介绍php 中文分词使用,现在分享给大家,希望可以做个参考。

scws 中文分词 文档地址 :http://www.xunsearch.com/scws/docs.php


1. 取得 scws-1.2.3 的代码

复制代码
1
wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2


2. 解开压缩包
复制代码
1
[hightman@d1 ~]$ tar xvjf scws-1.2.3.tar.bz2


3. 进入目录执行配置脚本和编译
复制代码
1
2
[hightman@d1 ~]$ cd scws-1.2.3 [hightman@d1 ~/scws-1.2.3]$ ./configure --prefix=/usr/local/scws && make && make install


注:这里和通用的 GNU 软件安装方式一样,具体选项参数执行 ./configure --help 查看。
常用选项为:--prefix=<scws的安装目录>


4. 顺利的话已经编译并安装成功到 /usr/local/scws 中了,执行下面命令看看文件是否存在
复制代码
1
[hightman@d1 ~/scws-1.2.3]$ ls -al /usr/local/scws/lib/libscws.la


5. 试试执行 scws-cli 文件
复制代码
1
2
3
4
[hightman@d1 ~/scws-1.2.3]$ /usr/local/scws/bin/scws -h scws (scws-cli/1.2.3) Simple Chinese Word Segmentation - Command line usage. Copyright (C)2007 by hightman.


6 用 wget 下载并解压词典,或从主页下载然后自行解压再将 *.xdb 放入 /usr/local/scws/etc 目录中
复制代码
1
2
3
4
5
[hightman@d1 ~/scws-1.2.3]$ cd /usr/local/scws/etc [hightman@d1 /usr/local/scws/etc]$ wget http://www.xunsearch.com/scws/down/scws-dict-chs-gbk.tar.bz2 [hightman@d1 /usr/local/scws/etc]$ wget http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2 [hightman@d1 /usr/local/scws/etc]$ tar xvjf scws-dict-chs-gbk.tar.bz2 [hightman@d1 /usr/local/scws/etc]$ tar xvjf scws-dict-chs-utf8.tar.bz2


7.8.9. 这三步是用C程序测试 直接跳过 我们要做的是php测试


10. 在 php 中调用分词,安装 php 扩展。

    假设您已经将 scws 按上述步骤安装到 /usr/local/scws 中。
    安装此扩展要求您的 php 和系统环境安装了相应的 autoconf automake 工具及 phpize 。


    1) 进入源码目录的 phpext/ 目录 ( cd ~/scws-1.2.3 )
    这里出现
    -bash: /usr/local/src/php-5.6.3/scripts/phpize: Permission denied
    解决办法:
    
复制代码
1
2
$ cd ~/scws-1.2.3/phpext/ $ locate phpize


    2) 执行 phpize (在PHP安装目录的bin/目录下)
    
复制代码
1
$ /usr/local/php/bin/phpize

    
    3) 执行 ./configure --with-scws=/usr/local/scws 
       若 php 安装在特殊目录 $php_prefix, 则请在 configure 后加上 --with-php-config=$php_prefix/bin/php-config
       编译出现错误
       configure: error: Cannot find php-config. Please use --with-php-config=PATH
       解决办法:
   下面第一条命令 查找php-config 目录位置    
复制代码
1
2
$ locate php-config $ ./configure --with-php-config=/usr/local/php/bin/php-config --with-scws=/usr/local/scws


    4) 执行 make 然后用 root 身份执行 make install     

复制代码
1
# make && make install


    安装成功后 扩展共享目录:/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/

    5) 在 php.ini 中加入以下几行
    我的地址:/usr/local/php/etc/php.ini

复制代码
1
2
3
4
5
6
7
8
[scws] ; ; 注意请检查 php.ini 中的 extension_dir 的设定值是否正确, 否则请将 extension_dir 设为空, ; 再把 extension = scws.so 指定绝对路径。 ; extension = scws.so scws.default.charset = utf8 scws.default.fpath = /usr/local/scws/etc


    6) 命令行下执行 php -m 就能看到 scws 了或者在 phpinfo() 中看看关于 scws 的部分,记得要重启 web 服务器
       才能使新的 php.ini 生效。
    注意 可能有的php 客户端版本比较低, 使用 php -m 显示的是客户端的版本 并不是实际安装的版本
    那么可以通过 程序中的 phpinfo() 在浏览器上访问查看
    重启脚本如下
复制代码
1
2
$ service php-fpm restart $ service nginx restart


    7) 这样就算安装完成了,余下的工作只是PHP代码编写问题了。
       关于 PHP 扩展的使用说明请参看代码中 phpext/README.md 文件或其它文档章节。

    

复制代码
1
$ cat README.md #获取函数使用说明

下面 写一个常用的 去重的分词结果:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php $so = scws_new(); $so->set_charset('utf8'); // 这里没有调用 set_dict 和 set_rule 系统会自动试调用 ini 中指定路径下的词典和规则文件 $so->send_text("我是一个中国人,我会C++语言,我也有很多T恤衣服"); $words = array(); while ($tmp = $so->get_result()) { foreach ($tmp as $val) { if(!new_in_array($val, $words,'word')){ $words[] = array( 'word' => $val['word'], 'weight' => $val['idf'], ); } } } print_r($words); $so->close(); function new_in_array($need,$array,$column=''){ $flag = false; foreach ($array as $val) { if($val[$column] == $need[$column]){ $flag = true; break; } } return $flag; } ?>





最后

以上就是懵懂啤酒最近收集整理的关于php 中文分词使用的全部内容,更多相关php内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部