php做的简单中文分词代码
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-08 12:30:01 浏览: 评论:0
中文搜索引擎来说,中文分词是整个系统最基础的部分之一,因为目前基于单字的中文搜索算法并不是太好,当然,本文不是要对中文搜索引擎做研究,而是分享如果用 PHP 做一个站内搜索引擎,本文是这个系统中的一篇.
进行中文分词的 PHP 类就在下面了,用 proc_open() 函数来执行分词程序,并通过管道和其交互,输入要进行分词的文本,读取分词结果.
- <?php
- class NLP{
- private static $cmd_path;
- // 不以'/'结尾
- static function set_cmd_path($path){
- self::$cmd_path = $path;
- }//开源代码phpfensi.com
- private function cmd($str){
- $descriptorspec = array(
- 0 => array("pipe", "r"),
- 1 => array("pipe", "w"),
- );
- $cmd = self::$cmd_path . "/ictclas";
- $process = proc_open($cmd, $descriptorspec, $pipes);
- if (is_resource($process)) {
- $str = iconv('utf-8', 'gbk', $str);
- fwrite($pipes[0], $str);
- $output = stream_get_contents($pipes[1]);
- fclose($pipes[0]);
- fclose($pipes[1]);
- $return_value = proc_close($process);
- }
- /*
- $cmd = "printf '$input' | " . self::$cmd_path . "/ictclas";
- exec($cmd, $output, $ret);
- $output = join("n", $output);
- */
- $output = trim($output);
- $output = iconv('gbk', 'utf-8', $output);
- return $output;
- }
- /**
- * 进行分词, 返回词语列表.
- */
- function tokenize($str){
- $tokens = array();
- $output = self::cmd($input);
- if($output){
- $ps = preg_split('/s+/', $output);
- foreach($ps as $p){
- list($seg, $tag) = explode('/', $p);
- $item = array(
- 'seg' => $seg,
- 'tag' => $tag,
- );
- $tokens[] = $item;
- }
- }
- return $tokens;
- }
- }
- NLP::set_cmd_path(dirname(__FILE__));
- ?>
使用起来很简单(确保 ICTCLAS 编译后的可执行文件和词典在当前目录):
- <?php
- require_once('NLP.php');
- var_dump(NLP::tokenize('你好啊, 世界!'));
- ?>
站长经验:如果想做到搜索引擎分词,需要强大的词库及更智能化的汉语拼音以及写法,习惯等功能库.
Tags: php中文分词 php分词代码
相关文章
- ·中文分词的php代码(2014-09-06)
- ·开源php中文分词系统SCWS安装和使用实例(2020-11-09)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)