【Github】项目名:jieba – php:做最好的PHP中文分词组件
一、项目简介
jieba – php是一个在PHP环境下用于中文分词、中文断词的组件。它有多种功能,如支持三种分词模式(默认精确模式、全模式、搜索引擎模式),能支持繁体断词,可自定义词典,还有关键词提取、词性分词等功能。并且,它还能切换成繁体字典,可保留日语或者朝鲜语原文不进行过滤,能返回词语在原文的起止位置等。
二、核心技术
基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)。采用了动态规划查找最大概率路径,找出基于词频的最大切分组合。对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法。
三、项目使用示例
1. 分词功能
支持自动安装(使用composer安装后,透过autoload引用)和手动安装(将jieba – php放置适当目录后,透过require_once引用)。其提供jieba.cut方法用于分词,cut方法接受两个输入参数,第一个参数为需要分词的字符串,cut_all参数用来控制分词模式。例如:
ini_set('memory_limit','1024M'); require_once"/path/to/your/vendor/multi - array/MultiArray.php"; require_once"/path/to/your/vendor/multi - array/Factory/MultiArrayFactory.php"; require_once"/path/to/your/class/Jieba.php"; require_once"/path/to/your/class/Finalseg.php"; use Fukuball\Jieba\Jieba; use Fukuball\Jieba\Finalseg; Jieba::init(); Finalseg::init(); $seg_list = Jieba::cut("怜香惜玉也得要看对象啊!"); var_dump($seg_list);
2. 自定义词典
开发者可以指定自己自定义的词典,以便包含jieba词库里没有的词。用法为Jieba::loadUserDict(file_name),词典格式为一个词占一行,每一行分为三部分(词语、词频、词性),用空格隔开。例如:
云计算5n 李小福2n 创新办3n
3. 关键词提取
可使用JiebaAnalyse::extractTags($content,$top_k)进行关键词提取,content为待提取的文本,top_k为返回几个TF/IDF权重最大的关键词(默认值为20),还可使用setStopWords增加自定义stopwords。例如:
ini_set('memory_limit','600M'); require_once"/path/to/your/vendor/multi - array/MultiArray.php"; require_once"/path/to/your/vendor/multi - array/Factory/MultiArrayFactory.php"; require_once"/path/to/your/class/Jieba.php"; require_once"/path/to/your/class/Finalseg.php"; require_once"/path/to/your/class/JiebaAnalyse.php"; use Fukuball\Jieba\Jieba; use Fukuball\Jieba\Finalseg; use Fukuball\Jieba\JiebaAnalyse; Jieba::init(array('mode'=>'test','dict'=>'small')); Finalseg::init(); JiebaAnalyse::init(); $top_k = 10; $content = file_get_contents("/path/to/your/dict/lyric.txt","r"); $tags = JiebaAnalyse::extractTags($content,$top_k); var_dump($tags);
4. 词性分词
例如以下代码示例:
ini_set('memory_limit','600M'); require_oncedirname(dirname(__FILE__))."/vendor/multi - array/MultiArray.php"; require_oncedirname(dirname(__FILE__))."/vendor/multi - array/Factory/MultiArrayFactory.php"; require_oncedirname(dirname(__FILE__))."/class/Jieba.php"; require_oncedirname(dirname(__FILE__))."/class/Finalseg.php"; require_oncedirname(dirname(__FILE__))."/class/Posseg.php"; use Fukuball\Jieba\Jieba; use Fukuball\Jieba\Finalseg; use Fukuball\Jieba\Posseg; Jieba::init(); Finalseg::init(); Posseg::init(); $seg_list = Posseg::cut("这是一个伸手不见五指的黑夜。我叫孙悟空,我爱北京,我爱Python和C++。"); var_dump($seg_list);
四、项目总结
jieba – php功能丰富多样,在PHP中文处理方面提供了多种实用的功能。无论是对于普通的文本分析,还是搜索引擎构建倒排索引等场景都非常有用。希望大家在使用过程中有任何想法或者问题都可以在下方留言参与讨论。
项目地址
数据统计
数据评估
本站链氪巴士提供的jieba-php:做最好的PHP中文分词组件都来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由链氪巴士实际控制,在2024年12月6日 上午12:00收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,链氪巴士不承担任何责任。