php中文分词类库,可自定义更新词典
分词有什么用?
文章或短语分词后可自动提取关键词,可以实现文章自动关键词、分词搜索等功能。
用于分词搜索的比较多点,比如百度或淘宝的搜索功能。
本文中使用的分词程序是:PHPAnalysis分词
PHPAnalysis分词程序使用居于unicode的词库,使用反向匹配模式分词,理论上兼容编码更广泛,并且对utf-8编码尤为方便。PHPAnalysis的词库是用一种类似哈希(Hash)的数据结构进行存储的,因此对于比较短的字符串分词,只需要占极小的资源,比那种一次性载入所有词条的实际性要高得多,并且词库容量大小不会影响分词执行的速度。
PHPAnalysis分词先对需要分词的词进行粗分,然后对粗分的短句子进行二次逆向最大匹配法(RMM)的方法进行分词,分词后对分词结果进行优化,然后才得到最终的分词结果。
类变量解释:
//生成的分词结果数据类型 1 为全部, 2为 词典词汇及单个中日韩简繁字符及英文, 3 为词典词汇及英文。SetResultType($rstype)方法进行设置。 $resultType = 1; //切分句子最短长度,长度小于这个数值时不拆分,notSplitLen = n(个汉字) * 2 + 1 $notSplitLen = 5; //把英文单词全部转小写 $toLower = false; //使用最大切分模式对二元词进行消岐 $differMax = false; //尝试合并单字 $unitWord = true; //使用热门词优先模式进行消岐 $differFreq = false;
类方法解释:
1、public function __construct($source_charset='utf-8', $target_charset='utf-8', $load_all=true, $source='')
参数:
$source_charset 源字符串编码
$target_charset 目录字符串编码
$load_all 是否完全加载词典
$source 源字符串
2、public function SetSource($source, $source_charset='utf-8', $target_charset='utf-8')
说明:设置源字符串
参数:
$source 源字符串
$source_charset 源字符串编码
$target_charset 目录字符串编码
返回值:bool
3、public function SetResultType($rstype)
说明:设置返回结果的类型
参数:
$rstype 1为全部, 2为 词典词汇及单个中日韩简繁字符及英文, 3 为词典词汇及英文
返回值:void
4、public function StartAnalysis($optimize=true)
说明:开始执行分词操作
参数:
$optimize 分词后是否尝试优化结果
返回值:void
5、public function GetFinallyKeywords($num = 10)
说明:获取最终关键字
参数:
$num = 10 返回词条个数
返回值:用","间隔的关键字
6、public function GetFinallyResult($spword=' ', $word_meanings=false)
说明:获取最终结果字符串
参数:
$spword 词条之间的分隔符
$word_meanings 是否获取词的词性及词频信息
返回值:用空格分开后的分词结果
7、public function GetSimpleResult()
说明:获取粗分结果,不包含粗分属性
返回值:array
8、public function GetSimpleResultAll()
说明:获取粗分结果,包含粗分属性(1中文词句、2 ANSI词汇(包括全角),3 ANSI标点符号(包括全角),4数字(包括全角),5 中文标点或无法识别字符)
返回值:array
9、public function GetFinallyIndex()
说明:获取hash索引数组
返回值:array('word'=>count,...) 按出现频率排序
10、public function MakeDict($source_file, $target_file='')
说明:编译词典,注意, 需要PHP开放足够的内存才能完成操作
参数:
$source_file 源文本文件
$target_file 目标文件(如果不指定,则为当前词典)
返回值:void
11、public function ExportDict($targetfile)
说明:导出词典的词条
参数:
$targetfile 保存位置
返回值:void
简单DEMO:
<?php //是否预载全部词条 $pri_dict = false; //多元切分 $do_multi = true; //新词识别 $do_unit = true; //岐义处理 $do_fork = true; //初始化类 PhpAnalysis::$loadInit = false; $pa = new PhpAnalysis('utf-8', 'utf-8', $pri_dict); //载入词典 $pa->LoadDict(); //执行分词 $pa->SetSource('需要分词的字符串'); $pa->differMax = $do_multi; $pa->unitWord = $do_unit; $pa->SetResultType(1); $pa->StartAnalysis($do_fork); //获取结果 $result = $pa->GetFinallyKeywords();
效果图:
1、文章分词:
2、搜索分词
3、词典操作
有 0 位网友评论: