php中文分词类库,可自定义更新词典

阅读19 评论0
分词有什么用?文章或短语分词后可自动提取关键词,可以实现文章自动关键词、分词搜索等功能。用于分词搜索的比较多点,比如百度或淘宝的搜索功能。本文中使用的分词程序是:PHPAnalysis分词PHPAnalysis分词程序使用居于unicode的词库,使用反向匹配模式分词,理论上兼容编码更广泛,并且对utf-8编码尤为方便。PHPAnalysis的词库是用一种类...

分词有什么用?

文章或短语分词后可自动提取关键词,可以实现文章自动关键词、分词搜索等功能。

用于分词搜索的比较多点,比如百度或淘宝的搜索功能。

本文中使用的分词程序是: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、词典操作

文件名称:PHPAnalysis分词.zip

文件大小:2.72 MB

更新日期:2020-06-24 12:01:51

作者信息:网络游客

授权类型:免费

0 位网友评论:

欢迎 来评论

请填写验证码