中文分词的php代码
以前有用过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 , ); //开源代码phpfensi测试数据 $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() 函数来执行分词程序,并通过管道和其交互, 输入要进行分词的文本, 读取分词结果.
查看更多关于中文分词的php代码 - php高级应用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did30251