分词类(analysis/phpanalysis.php)

Source:94hwan 与众不同  Author:网络部
2011-09-20 15:14

    phpanalysis 类的词典是用unicode编码编译为二叉树结构的,如果需要修改词条,需要重新编译,国内目前的分词系统大多数都是原生gbk编码 的,phpanalysis是唯一一个用unicode原生分词的分词程序,更适合我们公司的常规项目应用,有需要的项目可以使用,并且环境最好配置 php-apc 这样可以达到最佳性能。

    phpanalysis 类放在 library 文件夹,由于不是直接放在非标准存放路径,因此使用时需要用
    require PATH_LIBRARY.'/phpanalysis/phpanalysis.class.php';
    引入类文件
  
phpanalysis 类基本用法如下:

1、构造函数
public function __construct($source_charset='utf-8', $target_charset='utf-8', $load_all=false, $source='')
$source_charset='utf-8'   源字符串的编码
$target_charset='utf-8'     输出目标的编码
$load_all=false                 是否载入所有词条(false的情况下只载入基本的head)
$source=''                         源字符串

2、设置待分词的源字符串
public function SetSource( $source, $source_charset='utf-8', $target_charset='utf-8' )

3、执行分词
public function StartAnalysis($optimize=true)
$optimize 是否对分词结果进行消岐优化

4、获得最终的分词结果
public function GetFinallyResult($spword=' ', $word_meanings=false)
$spword 分隔符,通常是空格
$word_meanings 是否包含词义?

5、重新编译词典
public function MakeDict( $sourcefile, $maxWordLen=16, $target='' )
$sourcefile  未编译的词典文件(phpanalysis/dict/not-build/base_dic_full.txt)
$maxWordLen 最大词长($maxWordLen/2 个unicode汉字)
$target  目标文件(phpanalysis/dict/base_dic_full.dic)

使用范例:

  1. //岐义处理 
  2. $do_fork = true; 
  3. //新词识别 
  4. $do_unit = true; 
  5. //多元切分 
  6. $do_multi = false; 
  7. //词性标注 
  8. $do_prop = false; 
  9. //是否预载全部词条 
  10. $pri_dict = false; 
  11.  
  12. //初始化类 
  13. $pa = new PhpAnalysis('utf-8''utf-8'$pri_dict); 
  14. $pa->differMax = $do_multi
  15. $pa->unitWord = $do_unit
  16.  
  17. //执行分词 
  18. $pa->SetSource($str); 
  19. $pa->StartAnalysis( $do_fork ); 
  20. $okresult = $pa->GetFinallyResult(' '$do_prop); 


  >>点击此浏览分词程序的实例演示>>
 

...