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分词是一款灵活,强大的中文分词工具