杨庆荣的博客

接兼职私活:ecshop、zencart二次开发、discuz x2插件开发、spring boot、go、laravel、think php 5/6、uniapp。13714715608

使用rong framework + socket做php快速中文分词

点击 1283    创建时间 2014-07-29 18:46:04

转载请注明出处:

https://wudimei.com/yangqingrong/blog/item/166.html

rong framework 最新版下载:

https://github.com/wudimeicom/rongframework

https://github.com/wudimeicom/CnSegDict

通过socket server分词的原理是,用php写的服务器启动时把词典加载到内存中。以后不用再加载了,从而节省了磁盘访问时间。于时分词就明显加快了。

首先你要建一个ChineseSegment.php,内容如下:

<?php
ini_set("display_errors",1);
error_reporting(E_ALL |E_NOTICE|E_ERROR|E_WARNING);


define( "ROOT" , dirname(dirname(dirname(dirname( __FILE__ ))))   );

set_include_path( "." . PATH_SEPARATOR .
                  ROOT."/lib". PATH_SEPARATOR.
                  get_include_path()
                );

ini_set("memory_limit","256M");
require_once "Rong/Search/Analyzer/CS/Server.php";

$server = new Rong_Search_Analyzer_CS_Server("127.0.0.1",5050);
$server->driver ="Chinese";
$server->config = array('dictionary_path' => dirname(__FILE__) . "/../data/chinese_dict-1.0.dat");
$server->start();

请修改'dictionary_path'的值,指向词典的路径。词典是一个一行一个词语的文本文件。

然后建一个ChineseSegmentServer.bat 用来执行上面的那个文件,内容为:

D:\AppServ\php-5.4.8\php.exe -c D:\AppServ\php-5.4.8\php.ini ChineseSegmentServer.php

接下来,我们就可以在任意php中调用服务器的分词方法:

<?php
define( "ROOT" , dirname( __FILE__ ) . "/../../../" );

set_include_path( "." . PATH_SEPARATOR .
                  ROOT."/lib". PATH_SEPARATOR.
                  get_include_path()
                );

require_once "Rong/Search/Analyzer/CS/Client.php";
$client = new Rong_Search_Analyzer_CS_Client();
$ret =$client->segment($text="杨庆荣你好,how are you yang qing rong?");
print_r( $ret );

上一篇: 通达信极端指标
下一篇: iphone上传的图片变横着了