加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

对于中文分词的实现的php代码

发布时间:2023-08-09 13:36:37 所属栏目:PHP教程 来源:
导读:以前有用过dedecms分词功能,经过测试还是不理想,后来经过一些处理得到的结果还是可以接受的,今天我再看到这款分词法,拿出来给大家看看,实例代码如下:

<?php
class NLP{
private static $cmd_path;
// 不以
以前有用过dedecms分词功能,经过测试还是不理想,后来经过一些处理得到的结果还是可以接受的,今天我再看到这款分词法,拿出来给大家看看,实例代码如下:

<?php 
class NLP{  
private static $cmd_path;  
// 不以'/'结尾  
static function set_cmd_path($path){  
self::$cmd_path = $path;  
}  
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,  
); //开源代码Cuoxin.com 
$tokens[] = $item;  
}  
}  
return $tokens;  
}  
}  
NLP::set_cmd_path(dirname(__FILE__));  
?> 
用起来很简单,确保 ICTCLAS 编译后的可执行文件和词典在当前目录,代码如下:

<?php  
require_once('NLP.php');  
var_dump(NLP::tokenize('Hello, World!'));  
?> 
进行中文分词的 PHP 类就在下面了,用 proc_open() 函数来执行分词程序,并通过管道和其交互, 输入要进行分词的文本, 读取分词结果.

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章