好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

中文分词的php代码 - php高级应用

中文分词的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高级应用的详细内容...

  阅读:37次