实用 PHP+jieba(结巴)中文关键字提取

jieba(结巴)中文分词


jieba(结巴)中文分词是目前国内一款较好的中文分词插件。

1.兼容当前绝大部分流行开发语言,例:Java、C/C++、PHP、Ios、 Node.js 等开发语言。

2.搜索引擎模式,全模式和精确模式匹配,以及关键词提取的实用性的功能

3.代码开源,词库自定义等优势

4.对GBK不是特别友好、需要转译一次;中英文分词兼容性不是很好;词库更新较缓慢,如果是长期的分词使用,需要频繁更新词库。

下面通过PHP+jieba来进行中文分词

安装


代码(zip)下载地址:https://github.com/fukuball/jieba-php 

下载之后放在PHP运行环境中并且在使用时需要引入

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"

composer 安装:

composer require fukuball/jieba-php:dev-master

基本分词


注:本文是通过zip下载方式进行安装

目录结构

在test下建立我们测试的.php文件,导入以下代码:

//设置PHP运行占用内存
ini_set('memory_limit', '1024M');
//导入文件
require_once "../src/vendor/multi-array/MultiArray.php";
require_once "../src/vendor/multi-array/Factory/MultiArrayFactory.php";
require_once "../src/class/Jieba.php";
require_once "../src/class/Finalseg.php";
use Fukuball\Jieba\Jieba;
use Fukuball\Jieba\Finalseg;
Jieba::init();
Finalseg::init();

echo "<pre/>";
$seg_list = Jieba::cut("结巴中文分词:做最好的中文分词!");
var_dump($seg_list);
echo "<hr/>";
$seg_list = Jieba::cut("结巴分词-全模式分词", true);
var_dump($seg_list); #全模式
echo "<hr/>";
$seg_list = Jieba::cut("默认就是精确模式", false);
var_dump($seg_list); #默認精確模式
echo "<hr/>";
$seg_list = Jieba::cutForSearch("搜索引擎模式,会将这句话分词成功类似搜索引擎的模式"); #搜索引擎模式
var_dump($seg_list);
echo "<hr/>";

关键词提取


//设置PHP运行占用内存
ini_set('memory_limit', '600M');
//导入核心文件
require_once "../src/vendor/multi-array/MultiArray.php";
require_once "../src/vendor/multi-array/Factory/MultiArrayFactory.php";
require_once "../src/class/Jieba.php";
require_once "../src/class/Finalseg.php";
require_once "../src/class/JiebaAnalyse.php";
use Fukuball\Jieba\Jieba;
use Fukuball\Jieba\Finalseg;
use Fukuball\Jieba\JiebaAnalyse;
//实例化:第一个参数表示开启测试模式   dict表示读取small词库,如果是繁体需要改成big
Jieba::init(array('mode'=>'test','dict'=>'small'));
Finalseg::init();
JiebaAnalyse::init();
//越小精确度越高|提取的关键词越准|默认20
$top_k = 10;
//读取luric.txt文件中的中文字符,进行提取
$content = file_get_contents("../src/dict/lyric.txt", "r");
$tags = JiebaAnalyse::extractTags($content, $top_k);
var_dump($tags);

导入自定义的词库


//设置PHP运行占用内存
ini_set('memory_limit', '1024M');
//导入核心文件
require_once "../src/vendor/multi-array/MultiArray.php";
require_once "../src/vendor/multi-array/Factory/MultiArrayFactory.php";
require_once "../src/class/Jieba.php";
require_once "../src/class/Finalseg.php";
use Fukuball\Jieba\Jieba;
use Fukuball\Jieba\Finalseg;
Jieba::init();
Finalseg::init();
jieba::loadUserDict("../src/dict/user_dict.txt");//重点在这里,导入自定义的词库
//接下来的词库中就会有你导入的词库
$seg_list = Jieba::cut("结巴中文分词:做最好的中文分词!");
var_dump($seg_list);

导入自定义词库并提取关键词


这个主要是用在某种特定的情况下,看看我们分析的文本中,我们自定义的关键字比重是多大

//设置PHP运行占用内存
ini_set('memory_limit', '600M');
//导入核心文件
require_once "../src/vendor/multi-array/MultiArray.php";
require_once "../src/vendor/multi-array/Factory/MultiArrayFactory.php";
require_once "../src/class/Jieba.php";
require_once "../src/class/Finalseg.php";
require_once "../src/class/JiebaAnalyse.php";
use Fukuball\Jieba\Jieba;
use Fukuball\Jieba\Finalseg;
use Fukuball\Jieba\JiebaAnalyse;
//实例化:第一个参数表示开启测试模式   dict表示读取small词库,如果是繁体需要改成big
Jieba::init(array('mode'=>'test','dict'=>'small'));
Finalseg::init();
JiebaAnalyse::init();
jieba::loadUserDict("../src/dict/user_dict.txt");//导入自定义的词语
//越小精确度又高|提取的关键词越准|默认20
$top_k = 10;
$content = file_get_contents("../src/dict/lyric.txt", "r");
//这里是定义截断性比重占比分析
JiebaAnalyse::setStopWords('../src/dict/stop_words.txt');
//调用方法分析词语的占比
$tags = JiebaAnalyse::extractTags($content, $top_k);
echo "<pre/>";
var_dump($tags);

其他还有很多可以用到的,博主觉得比较实用的就这几种,不同的业务环境,可以使用不同的方式,总体来说,jieba分词是一款灵活,强大的中文分词工具

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值