GitHub - fukuball/jieba-php: "結巴"中文分詞
文章推薦指數: 80 %
"結巴"中文分詞:做最好的PHP 中文分詞、中文斷詞組件。
/ "Jieba" (Chinese for "to stutter") Chinese text segmentation: built to be the best PHP Chinese word ...
Skiptocontent
{{message}}
fukuball
/
jieba-php
Public
Notifications
Fork
245
Star
1.2k
"結巴"中文分詞:做最好的PHP中文分詞、中文斷詞組件。
/"Jieba"(Chinesefor"tostutter")Chinesetextsegmentation:builttobethebestPHPChinesewordsegmentationmodule.
jieba-php.fukuball.com
License
MITlicense
1.2k
stars
245
forks
Star
Notifications
Code
Issues
22
Pullrequests
2
Actions
Projects
0
Wiki
Security
Insights
More
Code
Issues
Pullrequests
Actions
Projects
Wiki
Security
Insights
fukuball/jieba-php
Thiscommitdoesnotbelongtoanybranchonthisrepository,andmaybelongtoaforkoutsideoftherepository.
master
Branches
Tags
Couldnotloadbranches
Nothingtoshow
{{refName}}
default
Couldnotloadtags
Nothingtoshow
{{refName}}
default
2
branches
17
tags
Code
Latestcommit
fukuball
Updatereadme
…
8a16536
Dec23,2020
Updatereadme
8a16536
Gitstats
169
commits
Files
Permalink
Failedtoloadlatestcommitinformation.
Type
Name
Latestcommitmessage
Committime
src
test
.gitignore
.travis.yml
LICENSE
README.md
circle.yml
composer.json
composer.lock
phpunit.xml
Viewcode
jieba-php
線上展示
Feature
Usage
Algorithm
Interface
功能1):分词
功能2):添加自定義詞典
功能3):關鍵詞提取
功能4):詞性分詞
功能5):切換成繁體字典
功能5):切換成繁體字典
功能6):保留日语或者朝鲜语原文不进行过滤
功能7):返回詞語在原文的起止位置
其他詞典
常見問題
jieba-phpEnglishDocument
OnlineDemo
Feature
Usage
Algorithm
Interface
Function1)Segmentation
Function2)Addacustomdictionary
Function3)KeywordExtraction
Function4)WordSegmentationandTagging
Function5):UseTraditionalChinese
Function6):KeepingJapaneseorKoreanoriginaltext
詞性說明
Donate
License
README.md
jieba-php
"結巴"中文分詞:做最好的PHP中文分詞、中文斷詞組件,目前翻譯版本為jieba-0.33版本,未來再慢慢往上升級,效能也需要再改善,請有興趣的開發者一起加入開發!若想使用Python版本請前往fxsjy/jieba
現在已經可以支援繁體中文!只要將字典切換為big模式即可!
"Jieba"(Chinesefor"tostutter")Chinesetextsegmentation:builttobethebestPHPChinesewordsegmentationmodule.
ScrolldownforEnglishdocumentation.
線上展示
網站網址:http://jieba-php.fukuball.com
網站原始碼:https://github.com/fukuball/jieba-php.fukuball.com
Feature
支持三種分詞模式:
1)默認精確模式,試圖將句子最精確地切開,適合文本分析;
2)全模式,把句子中所有的可以成詞的詞語都掃描出來,但是不能解決歧義。
(需要充足的字典)
搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。
支持繁體斷詞
支持自定義詞典
Usage
自動安裝:使用composer安裝後,透過autoload引用
代碼示例
composerrequirefukuball/jieba-php:dev-master
代碼示例
require_once"/path/to/your/vendor/autoload.php";
手動安裝:將jieba-php放置適當目錄後,透過require_once引用
代碼示例
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";
Algorithm
基於Trie樹結構實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖(DAG)
採用了動態規劃查找最大概率路徑,找出基於詞頻的最大切分組合
對於未登錄詞,採用了基於漢字成詞能力的HMM模型,使用了Viterbi算法
BEMS的解釋fxsjy/jieba#7
Interface
組件只提供jieba.cut方法用於分詞
cut方法接受兩個輸入參數:1)第一個參數為需要分詞的字符串2)cut_all參數用來控制分詞模式
待分詞的字符串可以是utf-8字符串
jieba.cut返回的結構是一個可迭代的array
功能1):分词
cut方法接受想個輸入參數:1)第一個參數為需要分詞的字符串2)cut_all參數用來控制分詞模式
cutForSearch方法接受一個參數:需要分詞的字符串,該方法適合用於搜索引擎構建倒排索引的分詞,粒度比較細
注意:待分詞的字符串是utf-8字符串
cut以及cutForSearch返回的結構是一個可迭代的array
代碼示例(Tutorial)
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";
useFukuball\Jieba\Jieba;
useFukuball\Jieba\Finalseg;
Jieba::init();
Finalseg::init();
$seg_list=Jieba::cut("怜香惜玉也得要看对象啊!");
var_dump($seg_list);
$seg_list=Jieba::cut("我来到北京清华大学",true);
var_dump($seg_list);#全模式
$seg_list=Jieba::cut("我来到北京清华大学",false);
var_dump($seg_list);#默認精確模式
$seg_list=Jieba::cut("他来到了网易杭研大厦");
var_dump($seg_list);
$seg_list=Jieba::cutForSearch("小明硕士毕业于中国科学院计算所,后在日本京都大学深造");#搜索引擎模式
var_dump($seg_list);
Output:
array(7){
[0]=>
string(12)"怜香惜玉"
[1]=>
string(3)"也"
[2]=>
string(3)"得"
[3]=>
string(3)"要"
[4]=>
string(3)"看"
[5]=>
string(6)"对象"
[6]=>
string(3)"啊"
}
FullMode:
array(15){
[0]=>
string(3)"我"
[1]=>
string(3)"来"
[2]=>
string(6)"来到"
[3]=>
string(3)"到"
[4]=>
string(3)"北"
[5]=>
string(6)"北京"
[6]=>
string(3)"京"
[7]=>
string(3)"清"
[8]=>
string(6)"清华"
[9]=>
string(12)"清华大学"
[10]=>
string(3)"华"
[11]=>
string(6)"华大"
[12]=>
string(3)"大"
[13]=>
string(6)"大学"
[14]=>
string(3)"学"
}
DefaultMode:
array(4){
[0]=>
string(3)"我"
[1]=>
string(6)"来到"
[2]=>
string(6)"北京"
[3]=>
string(12)"清华大学"
}
array(6){
[0]=>
string(3)"他"
[1]=>
string(6)"来到"
[2]=>
string(3)"了"
[3]=>
string(6)"网易"
[4]=>
string(6)"杭研"
[5]=>
string(6)"大厦"
}
(此處,“杭研“並沒有在詞典中,但是也被Viterbi算法識別出來了)
SearchEngineMode:
array(18){
[0]=>
string(6)"小明"
[1]=>
string(6)"硕士"
[2]=>
string(6)"毕业"
[3]=>
string(3)"于"
[4]=>
string(6)"中国"
[5]=>
string(6)"科学"
[6]=>
string(6)"学院"
[7]=>
string(9)"科学院"
[8]=>
string(15)"中国科学院"
[9]=>
string(6)"计算"
[10]=>
string(9)"计算所"
[11]=>
string(3)"后"
[12]=>
string(3)"在"
[13]=>
string(6)"日本"
[14]=>
string(6)"京都"
[15]=>
string(6)"大学"
[16]=>
string(18)"日本京都大学"
[17]=>
string(6)"深造"
}
功能2):添加自定義詞典
開發者可以指定自己自定義的詞典,以便包含jieba詞庫裡沒有的詞。
雖然jieba有新詞識別能力,但是自行添加新詞可以保證更高的正確率
用法:Jieba::loadUserDict(file_name)#file_name為自定義詞典的絕對路徑
詞典格式和dict.txt一樣,一個詞佔一行;每一行分為三部分,一部分為詞語,一部分為詞頻,一部分為詞性,用空格隔開
範例:
云计算5n
李小福2n
创新办3n
之前:李小福/是/创新/办/主任/也/是/云/计算/方面/的/专家/
加載自定義詞庫後: 李小福/是/创新办/主任/也/是/云计算/方面/的/专家/
說明:"通过用户自定义词典来增强歧义纠错能力"---fxsjy/jieba#14
自定義詞典:https://github.com/fukuball/jieba-php/blob/master/src/dict/user_dict.txt
功能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";
useFukuball\Jieba\Jieba;
useFukuball\Jieba\Finalseg;
useFukuball\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);
JiebaAnalyse::setStopWords('/path/to/your/dict/stop_words.txt');
$tags=JiebaAnalyse::extractTags($content,$top_k);
var_dump($tags);
Output:
array(10){
'沒有'=>
double(1.0592831964595)
'所謂'=>
double(0.90795702553671)
'是否'=>
double(0.66385043195443)
'一般'=>
double(0.54607060161899)
'雖然'=>
double(0.30265234184557)
'來說'=>
double(0.30265234184557)
'肌迫'=>
double(0.30265234184557)
'退縮'=>
double(0.30265234184557)
'矯作'=>
double(0.30265234184557)
'怯懦'=>
double(0.24364586159392)
}
array(10){
'所謂'=>
double(1.1569129841516)
'一般'=>
double(0.69579963754677)
'矯作'=>
double(0.38563766138387)
'來說'=>
double(0.38563766138387)
'退縮'=>
double(0.38563766138387)
'雖然'=>
double(0.38563766138387)
'肌迫'=>
double(0.38563766138387)
'怯懦'=>
double(0.31045198493419)
'隨便說說'=>
double(0.19281883069194)
'一場'=>
double(0.19281883069194)
}
功能4):詞性分詞
詞性說明:https://gist.github.com/luw2007/6016931
代碼示例(Tutorial)
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";
useFukuball\Jieba\Jieba;
useFukuball\Jieba\Finalseg;
useFukuball\Jieba\Posseg;
Jieba::init();
Finalseg::init();
Posseg::init();
$seg_list=Posseg::cut("这是一个伸手不见五指的黑夜。
我叫孙悟空,我爱北京,我爱Python和C++。
");
var_dump($seg_list);
Output:
array(21){
[0]=>
array(2){
["word"]=>
string(3)"这"
["tag"]=>
string(1)"r"
}
[1]=>
array(2){
["word"]=>
string(3)"是"
["tag"]=>
string(1)"v"
}
[2]=>
array(2){
["word"]=>
string(6)"一个"
["tag"]=>
string(1)"m"
}
[3]=>
array(2){
["word"]=>
string(18)"伸手不见五指"
["tag"]=>
string(1)"i"
}
[4]=>
array(2){
["word"]=>
string(3)"的"
["tag"]=>
string(2)"uj"
}
[5]=>
array(2){
["word"]=>
string(6)"黑夜"
["tag"]=>
string(1)"n"
}
[6]=>
array(2){
["word"]=>
string(3)"。
"
["tag"]=>
string(1)"x"
}
[7]=>
array(2){
["word"]=>
string(3)"我"
["tag"]=>
string(1)"r"
}
[8]=>
array(2){
["word"]=>
string(3)"叫"
["tag"]=>
string(1)"v"
}
[9]=>
array(2){
["word"]=>
string(9)"孙悟空"
["tag"]=>
string(2)"nr"
}
[10]=>
array(2){
["word"]=>
string(3)","
["tag"]=>
string(1)"x"
}
[11]=>
array(2){
["word"]=>
string(3)"我"
["tag"]=>
string(1)"r"
}
[12]=>
array(2){
["word"]=>
string(3)"爱"
["tag"]=>
string(1)"v"
}
[13]=>
array(2){
["word"]=>
string(6)"北京"
["tag"]=>
string(2)"ns"
}
[14]=>
array(2){
["word"]=>
string(3)","
["tag"]=>
string(1)"x"
}
[15]=>
array(2){
["word"]=>
string(3)"我"
["tag"]=>
string(1)"r"
}
[16]=>
array(2){
["word"]=>
string(3)"爱"
["tag"]=>
string(1)"v"
}
[17]=>
array(2){
["word"]=>
string(6)"Python"
["tag"]=>
string(3)"eng"
}
[18]=>
array(2){
["word"]=>
string(3)"和"
["tag"]=>
string(1)"c"
}
[19]=>
array(2){
["word"]=>
string(3)"C++"
["tag"]=>
string(3)"eng"
}
[20]=>
array(2){
["word"]=>
string(3)"。
"
["tag"]=>
string(1)"x"
}
}
功能5):切換成繁體字典
代碼示例(Tutorial)
ini_set('memory_limit','1024M');
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";
useFukuball\Jieba\Jieba;
useFukuball\Jieba\Finalseg;
Jieba::init(array('mode'=>'default','dict'=>'big'));
Finalseg::init();
$seg_list=Jieba::cut("怜香惜玉也得要看对象啊!");
var_dump($seg_list);
$seg_list=Jieba::cut("憐香惜玉也得要看對象啊!");
var_dump($seg_list);
Output:
array(7){
[0]=>
string(12)"怜香惜玉"
[1]=>
string(3)"也"
[2]=>
string(3)"得"
[3]=>
string(3)"要"
[4]=>
string(3)"看"
[5]=>
string(6)"对象"
[6]=>
string(3)"啊"
}
array(7){
[0]=>
string(12)"憐香惜玉"
[1]=>
string(3)"也"
[2]=>
string(3)"得"
[3]=>
string(3)"要"
[4]=>
string(3)"看"
[5]=>
string(6)"對象"
[6]=>
string(3)"啊"
}
功能5):切換成繁體字典
代碼示例(Tutorial)
ini_set('memory_limit','1024M');
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";
useFukuball\Jieba\Jieba;
useFukuball\Jieba\Finalseg;
Jieba::init(array('mode'=>'default','dict'=>'big'));
Finalseg::init();
$seg_list=Jieba::cut("怜香惜玉也得要看对象啊!");
var_dump($seg_list);
$seg_list=Jieba::cut("憐香惜玉也得要看對象啊!");
var_dump($seg_list);
Output:
array(7){
[0]=>
string(12)"怜香惜玉"
[1]=>
string(3)"也"
[2]=>
string(3)"得"
[3]=>
string(3)"要"
[4]=>
string(3)"看"
[5]=>
string(6)"对象"
[6]=>
string(3)"啊"
}
array(7){
[0]=>
string(12)"憐香惜玉"
[1]=>
string(3)"也"
[2]=>
string(3)"得"
[3]=>
string(3)"要"
[4]=>
string(3)"看"
[5]=>
string(6)"對象"
[6]=>
string(3)"啊"
}
功能6):保留日语或者朝鲜语原文不进行过滤
代碼示例(Tutorial)
ini_set('memory_limit','1024M');
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";
useFukuball\Jieba\Jieba;
useFukuball\Jieba\Finalseg;
Jieba::init(array('cjk'=>'all'));
Finalseg::init();
$seg_list=Jieba::cut("한국어또는조선말은제주특별자치도를제외한한반도및그부속도서와한민족거주지역에서쓰이는언어로");
var_dump($seg_list);
$seg_list=Jieba::cut("日本語は、主に日本国内や日本人同士の間で使われている言語である。
");
var_dump($seg_list);
//加载日语词库可以对日语进行简单的分词
Jieba::loadUserDict("/path/to/your/japanese/dict.txt");
$seg_list=Jieba::cut("日本語は、主に日本国内や日本人同士の間で使われている言語である。
");
var_dump($seg_list);
Output:
array(15){
[0]=>
string(9)"한국어"
[1]=>
string(6)"또는"
[2]=>
string(12)"조선말은"
[3]=>
string(24)"제주특별자치도를"
[4]=>
string(9)"제외한"
[5]=>
string(9)"한반도"
[6]=>
string(3)"및"
[7]=>
string(3)"그"
[8]=>
string(6)"부속"
[9]=>
string(9)"도서와"
[10]=>
string(9)"한민족"
[11]=>
string(6)"거주"
[12]=>
string(12)"지역에서"
[13]=>
string(9)"쓰이는"
[14]=>
string(9)"언어로"
}
array(21){
[0]=>
string(6)"日本"
[1]=>
string(3)"語"
[2]=>
string(3)"は"
[3]=>
string(3)"主"
[4]=>
string(3)"に"
[5]=>
string(6)"日本"
[6]=>
string(6)"国内"
[7]=>
string(3)"や"
[8]=>
string(6)"日本"
[9]=>
string(3)"人"
[10]=>
string(6)"同士"
[11]=>
string(3)"の"
[12]=>
string(3)"間"
[13]=>
string(3)"で"
[14]=>
string(3)"使"
[15]=>
string(3)"わ"
[16]=>
string(6)"れて"
[17]=>
string(6)"いる"
[18]=>
string(6)"言語"
[19]=>
string(3)"で"
[20]=>
string(6)"ある"
}
array(17){
[0]=>
string(9)"日本語"
[1]=>
string(3)"は"
[2]=>
string(6)"主に"
[3]=>
string(9)"日本国"
[4]=>
string(3)"内"
[5]=>
string(3)"や"
[6]=>
string(9)"日本人"
[7]=>
string(6)"同士"
[8]=>
string(3)"の"
[9]=>
string(3)"間"
[10]=>
string(3)"で"
[11]=>
string(3)"使"
[12]=>
string(3)"わ"
[13]=>
string(6)"れて"
[14]=>
string(6)"いる"
[15]=>
string(6)"言語"
[16]=>
string(9)"である"
}
功能7):返回詞語在原文的起止位置
代碼示例(Tutorial)
ini_set('memory_limit','1024M');
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";
useFukuball\Jieba\Jieba;
useFukuball\Jieba\Finalseg;
Jieba::init(array('mode'=>'test','dict'=>'big'));
Finalseg::init();
$seg_list=Jieba::tokenize("永和服装饰品有限公司");
var_dump($seg_list);
Output:
array(4){
[0]=>
array(3){
'word'=>
string(6)"永和"
'start'=>
int(0)
'end'=>
int(2)
}
[1]=>
array(3){
'word'=>
string(6)"服装"
'start'=>
int(2)
'end'=>
int(4)
}
[2]=>
array(3){
'word'=>
string(6)"饰品"
'start'=>
int(4)
'end'=>
int(6)
}
[3]=>
array(3){
'word'=>
string(12)"有限公司"
'start'=>
int(6)
'end'=>
int(10)
}
}
其他詞典
佔用內容較小的詞典
https://github.com/fukuball/jieba-php/blob/master/src/dict/dict.small.txt
支持繁體斷詞的詞典
https://github.com/fukuball/jieba-php/blob/master/src/dict/dict.big.txt
常見問題
模型的數據是如何生成的?fxsjy/jieba#7
這個庫的授權是?fxsjy/jieba#2
jieba-phpEnglishDocument
OnlineDemo
DemoSiteUrl:http://jieba-php.fukuball.com
DemoSiteRepo:https://github.com/fukuball/jieba-php.fukuball.com
Feature
Supportthreetypesofsegmentationmode:
AccurateMode,attempttocutthesentenceintothemostaccuratesegmentation,whichissuitablefortextanalysis;
FullMode,breakthewordsofthesentenceintowordsscanned
SearchEngineMode,basedontheAccurateMode,withanattempttocutthelongwordsintoseveralshortwords,whichcanenhancetherecallrate
Usage
Installation:Usecomposertoinstalljieba-php,thenrequiretheautoloadfiletousejieba-php.
Algorithm
BasedontheTrietreestructuretoachieveefficientwordgraphscanning;sentencesusingChinesecharactersconstituteadirectedacyclicgraph(DAG).
Employsmemorysearchtocalculatethemaximumprobabilitypath,inordertoidentifythemaximumtangentialpointsbasedonwordfrequencycombination.
Forunknownwords,thecharacterpositionHMM-basedmodelisused,usingtheViterbialgorithm.
ThemeaningofBEMSfxsjy/jieba#7.
Interface
Thecutmethodacceptstwoparameters:1)firstparameteristhestringtosegmentation2)thesecondparametercut_alltocontrolsegmentationmode.
Thestringtosegmentationmayuseutf-8string.
cutForSearchaccpetsonlyonparameter:thestringthatrequiressegmentation,anditwillcutthesentenceintoshortwords
cutandcutForSearchreturnansegmentedarray.
Function1)Segmentation
Example(Tutorial)
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";
useFukuball\Jieba\Jieba;
useFukuball\Jieba\Finalseg;
Jieba::init();
Finalseg::init();
$seg_list=Jieba::cut("怜香惜玉也得要看对象啊!");
var_dump($seg_list);
seg_list=jieba.cut("我来到北京清华大学",true)
var_dump($seg_list);#全模式
seg_list=jieba.cut("我来到北京清华大学",false)
var_dump($seg_list);#默認精確模式
seg_list=jieba.cut("他来到了网易杭研大厦")
var_dump($seg_list);
seg_list=jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")#搜索引擎模式
var_dump($seg_list);
Output:
array(7){
[0]=>
string(12)"怜香惜玉"
[1]=>
string(3)"也"
[2]=>
string(3)"得"
[3]=>
string(3)"要"
[4]=>
string(3)"看"
[5]=>
string(6)"对象"
[6]=>
string(3)"啊"
}
FullMode:
array(15){
[0]=>
string(3)"我"
[1]=>
string(3)"来"
[2]=>
string(6)"来到"
[3]=>
string(3)"到"
[4]=>
string(3)"北"
[5]=>
string(6)"北京"
[6]=>
string(3)"京"
[7]=>
string(3)"清"
[8]=>
string(6)"清华"
[9]=>
string(12)"清华大学"
[10]=>
string(3)"华"
[11]=>
string(6)"华大"
[12]=>
string(3)"大"
[13]=>
string(6)"大学"
[14]=>
string(3)"学"
}
DefaultMode:
array(4){
[0]=>
string(3)"我"
[1]=>
string(6)"来到"
[2]=>
string(6)"北京"
[3]=>
string(12)"清华大学"
}
array(6){
[0]=>
string(3)"他"
[1]=>
string(6)"来到"
[2]=>
string(3)"了"
[3]=>
string(6)"网易"
[4]=>
string(6)"杭研"
[5]=>
string(6)"大厦"
}
(此處,“杭研“並沒有在詞典中,但是也被Viterbi算法識別出來了)
SearchEngineMode:
array(18){
[0]=>
string(6)"小明"
[1]=>
string(6)"硕士"
[2]=>
string(6)"毕业"
[3]=>
string(3)"于"
[4]=>
string(6)"中国"
[5]=>
string(6)"科学"
[6]=>
string(6)"学院"
[7]=>
string(9)"科学院"
[8]=>
string(15)"中国科学院"
[9]=>
string(6)"计算"
[10]=>
string(9)"计算所"
[11]=>
string(3)"后"
[12]=>
string(3)"在"
[13]=>
string(6)"日本"
[14]=>
string(6)"京都"
[15]=>
string(6)"大学"
[16]=>
string(18)"日本京都大学"
[17]=>
string(6)"深造"
}
Function2)Addacustomdictionary
Developerscanspecifytheirowncustomdictionarytoincludeinthejiebathesaurus.jiebahastheabilitytoidentifynewwords,butaddingyourownnewwordscanensureahigherrateofcorrectsegmentation.
Usage:Jieba::loadUserDict(file_name)#file_nameisacustomdictionarypath.
Thedictionaryformatisthesameasthatofdict.txt:onewordperline;eachlineisdividedintotwoparts,thefirstistheworditself,theotheristhewordfrequency,separatedbyaspace.
Example:
云计算5
李小福2
创新办3
之前:李小福/是/创新/办/主任/也/是/云/计算/方面/的/专家/
加載自定義詞庫後: 李小福/是/创新办/主任/也/是/云计算/方面/的/专家/
Function3)KeywordExtraction
JiebaAnalyse::extractTags($content,$top_k)
content:thetexttobeextracted
top_k:toreturnseveralTF/IDFweightsforthebiggestkeywords,thedefaultvalueis20
Example(keywordextraction)
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";
useFukuball\Jieba\Jieba;
useFukuball\Jieba\Finalseg;
useFukuball\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);
Output:
array(10){
["是否"]=>
float(1.2196321889395)
["一般"]=>
float(1.0032459890209)
["肌迫"]=>
float(0.64654314660465)
["怯懦"]=>
float(0.44762844339349)
["藉口"]=>
float(0.32327157330233)
["逼不得已"]=>
float(0.32327157330233)
["不安全感"]=>
float(0.26548304656279)
["同感"]=>
float(0.23929673812326)
["有把握"]=>
float(0.21043366018744)
["空洞"]=>
float(0.20598261709442)
}
Function4)WordSegmentationandTagging
WordTaggingMeaning:https://gist.github.com/luw2007/6016931
Example(wordtagging)
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";
useFukuball\Jieba\Jieba;
useFukuball\Jieba\Finalseg;
useFukuball\Jieba\Posseg;
Jieba::init();
Finalseg::init();
Posseg::init();
$seg_list=Posseg::cut("这是一个伸手不见五指的黑夜。
我叫孙悟空,我爱北京,我爱Python和C++。
");
var_dump($seg_list);
Output:
array(21){
[0]=>
array(2){
["word"]=>
string(3)"这"
["tag"]=>
string(1)"r"
}
[1]=>
array(2){
["word"]=>
string(3)"是"
["tag"]=>
string(1)"v"
}
[2]=>
array(2){
["word"]=>
string(6)"一个"
["tag"]=>
string(1)"m"
}
[3]=>
array(2){
["word"]=>
string(18)"伸手不见五指"
["tag"]=>
string(1)"i"
}
[4]=>
array(2){
["word"]=>
string(3)"的"
["tag"]=>
string(2)"uj"
}
[5]=>
array(2){
["word"]=>
string(6)"黑夜"
["tag"]=>
string(1)"n"
}
[6]=>
array(2){
["word"]=>
string(3)"。
"
["tag"]=>
string(1)"w"
}
[7]=>
array(2){
["word"]=>
string(3)"我"
["tag"]=>
string(1)"r"
}
[8]=>
array(2){
["word"]=>
string(3)"叫"
["tag"]=>
string(1)"v"
}
[9]=>
array(2){
["word"]=>
string(9)"孙悟空"
["tag"]=>
string(2)"nr"
}
[10]=>
array(2){
["word"]=>
string(3)","
["tag"]=>
string(1)"w"
}
[11]=>
array(2){
["word"]=>
string(3)"我"
["tag"]=>
string(1)"r"
}
[12]=>
array(2){
["word"]=>
string(3)"爱"
["tag"]=>
string(1)"v"
}
[13]=>
array(2){
["word"]=>
string(6)"北京"
["tag"]=>
string(2)"ns"
}
[14]=>
array(2){
["word"]=>
string(3)","
["tag"]=>
string(1)"w"
}
[15]=>
array(2){
["word"]=>
string(3)"我"
["tag"]=>
string(1)"r"
}
[16]=>
array(2){
["word"]=>
string(3)"爱"
["tag"]=>
string(1)"v"
}
[17]=>
array(2){
["word"]=>
string(6)"Python"
["tag"]=>
string(3)"eng"
}
[18]=>
array(2){
["word"]=>
string(3)"和"
["tag"]=>
string(1)"c"
}
[19]=>
array(2){
["word"]=>
string(3)"C++"
["tag"]=>
string(3)"eng"
}
[20]=>
array(2){
["word"]=>
string(3)"。
"
["tag"]=>
string(1)"w"
}
}
Function5):UseTraditionalChinese
Example(Tutorial)
ini_set('memory_limit','1024M');
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";
useFukuball\Jieba\Jieba;
useFukuball\Jieba\Finalseg;
Jieba::init(array('mode'=>'default','dict'=>'big'));
Finalseg::init();
$seg_list=Jieba::cut("怜香惜玉也得要看对象啊!");
var_dump($seg_list);
$seg_list=Jieba::cut("憐香惜玉也得要看對象啊!");
var_dump($seg_list);
Output:
array(7){
[0]=>
string(12)"怜香惜玉"
[1]=>
string(3)"也"
[2]=>
string(3)"得"
[3]=>
string(3)"要"
[4]=>
string(3)"看"
[5]=>
string(6)"对象"
[6]=>
string(3)"啊"
}
array(7){
[0]=>
string(12)"憐香惜玉"
[1]=>
string(3)"也"
[2]=>
string(3)"得"
[3]=>
string(3)"要"
[4]=>
string(3)"看"
[5]=>
string(6)"對象"
[6]=>
string(3)"啊"
}
Function6):KeepingJapaneseorKoreanoriginaltext
Example(Tutorial)
ini_set('memory_limit','1024M');
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";
useFukuball\Jieba\Jieba;
useFukuball\Jieba\Finalseg;
Jieba::init(array('cjk'=>'all'));
Finalseg::init();
$seg_list=Jieba::cut("한국어또는조선말은제주특별자치도를제외한한반도및그부속도서와한민족거주지역에서쓰이는언어로");
var_dump($seg_list);
$seg_list=Jieba::cut("日本語は、主に日本国内や日本人同士の間で使われている言語である。
");
var_dump($seg_list);
//LoadingcustomJapanesedictionarycandoasimplewordsegmentation
Jieba::loadUserDict("/path/to/your/japanese/dict.txt");
$seg_list=Jieba::cut("日本語は、主に日本国内や日本人同士の間で使われている言語である。
");
var_dump($seg_list);
Output:
array(15){
[0]=>
string(9)"한국어"
[1]=>
string(6)"또는"
[2]=>
string(12)"조선말은"
[3]=>
string(24)"제주특별자치도를"
[4]=>
string(9)"제외한"
[5]=>
string(9)"한반도"
[6]=>
string(3)"및"
[7]=>
string(3)"그"
[8]=>
string(6)"부속"
[9]=>
string(9)"도서와"
[10]=>
string(9)"한민족"
[11]=>
string(6)"거주"
[12]=>
string(12)"지역에서"
[13]=>
string(9)"쓰이는"
[14]=>
string(9)"언어로"
}
array(21){
[0]=>
string(6)"日本"
[1]=>
string(3)"語"
[2]=>
string(3)"は"
[3]=>
string(3)"主"
[4]=>
string(3)"に"
[5]=>
string(6)"日本"
[6]=>
string(6)"国内"
[7]=>
string(3)"や"
[8]=>
string(6)"日本"
[9]=>
string(3)"人"
[10]=>
string(6)"同士"
[11]=>
string(3)"の"
[12]=>
string(3)"間"
[13]=>
string(3)"で"
[14]=>
string(3)"使"
[15]=>
string(3)"わ"
[16]=>
string(6)"れて"
[17]=>
string(6)"いる"
[18]=>
string(6)"言語"
[19]=>
string(3)"で"
[20]=>
string(6)"ある"
}
array(17){
[0]=>
string(9)"日本語"
[1]=>
string(3)"は"
[2]=>
string(6)"主に"
[3]=>
string(9)"日本国"
[4]=>
string(3)"内"
[5]=>
string(3)"や"
[6]=>
string(9)"日本人"
[7]=>
string(6)"同士"
[8]=>
string(3)"の"
[9]=>
string(3)"間"
[10]=>
string(3)"で"
[11]=>
string(3)"使"
[12]=>
string(3)"わ"
[13]=>
string(6)"れて"
[14]=>
string(6)"いる"
[15]=>
string(6)"言語"
[16]=>
string(9)"である"
}
詞性說明
a形容词(取英语形容词adjective的第1个字母。
)
ad副形词(直接作状语的形容词,形容词代码a和副词代码d并在一起。
)
ag形容词性语素(形容词性语素,形容词代码为a,语素代码g前面置以a。
)
an名形词(具有名词功能的形容词,形容词代码a和名词代码n并在一起。
)
b区别词(取汉字「别」的声母。
)
c连词(取英语连词conjunction的第1个字母。
)
d副词(取adverb的第2个字母,因其第1个字母已用于形容词。
)
df副词*
dg副语素(副词性语素,副词代码为d,语素代码g前面置以d。
)
e叹词(取英语叹词exclamation的第1个字母。
)
eng外语
f方位词(取汉字「方」的声母。
)
g语素(绝大多数语素都能作为合成词的「词根」,取汉字「根」的声母。
)
h前接成分(取英语head的第1个字母。
)
i成语(取英语成语idiom的第1个字母。
)
j简称略语(取汉字「简」的声母。
)
k后接成分
l习用语(习用语尚未成为成语,有点「临时性」,取「临」的声母。
)
m数词(取英语numeral的第3个字母,n,u已有他用。
)
mg数语素
mq数词*
n名词(取英语名词noun的第1个字母。
)
ng名语素(名词性语素,名词代码为n,语素代码g前面置以n。
)
nr人名(名词代码n和「人(ren)」的声母并在一起。
)
nrfg名词*
nrt名词*
ns地名(名词代码n和处所词代码s并在一起。
)
nt机构团体(「团」的声母为t,名词代码n和t并在一起。
)
nz其他专名(「专」的声母的第1个字母为z,名词代码n和z并在一起。
)
o拟声词(取英语拟声词onomatopoeia的第1个字母。
)
p介词(取英语介词prepositional的第1个字母。
)
q量词(取英语quantity的第1个字母。
)
r代词(取英语代词pronoun的第2个字母,因p已用于介词。
)
rg代词语素
rr代词*
rz代词*
s处所词(取英语space的第1个字母。
)
t时间词(取英语time的第1个字母。
)
tg时语素(时间词性语素,时间词代码为t,在语素的代码g前面置以t。
)
u助词(取英语助词auxiliary的第2个字母,因a已用于形容词。
)
ud助词*
ug助词*
uj助词*
ul助词*
uv助词*
uz助词*
v动词(取英语动词verb的第一个字母。
)
vd副动词(直接作状语的动词,动词和副词的代码并在一起。
)
vg动语素
vi动词*
vn名动词(指具有名词功能的动词,动词和名词的代码并在一起。
)
vq动词*
w标点符号
x非语素字(非语素字只是一个符号,字母x通常用于代表未知数、符号。
)
y语气词(取汉字「语」的声母。
)
z状态词(取汉字「状」的声母的前一个字母。
)
zg状态词*
Donate
Ifyoufindfuku-mluseful,pleaseconsideradonation.Thankyou!
bitcoin:1BbihQU3CzSdyLSP9bvQq7Pi1z1jTdAaq9
eth:0x92DA3F837bf2F79D422bb8CEAC632208F94cdE33
License
TheMITLicense(MIT)
Copyright(c)2015fukuball
Permissionisherebygranted,freeofcharge,toanypersonobtainingacopy
ofthissoftwareandassociateddocumentationfiles(the"Software"),todeal
intheSoftwarewithoutrestriction,includingwithoutlimitationtherights
touse,copy,modify,merge,publish,distribute,sublicense,and/orsell
copiesoftheSoftware,andtopermitpersonstowhomtheSoftwareis
furnishedtodoso,subjecttothefollowingconditions:
Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedinall
copiesorsubstantialportionsoftheSoftware.
THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR
IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY,
FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALLTHE
AUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER
LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISINGFROM,
OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHERDEALINGSINTHE
SOFTWARE.
About
"結巴"中文分詞:做最好的PHP中文分詞、中文斷詞組件。
/"Jieba"(Chinesefor"tostutter")Chinesetextsegmentation:builttobethebestPHPChinesewordsegmentationmodule.
jieba-php.fukuball.com
Topics
nlp
machine-learning
natural-language-processing
chinese-text-segmentation
Resources
Readme
License
MITlicense
Stars
1.2k
stars
Watchers
57
watching
Forks
245
forks
Releases
17
jieba-php0.33
Latest
Nov22,2017
+16releases
Packages0
Nopackagespublished
Usedby234
+226
Contributors10
Languages
PHP
100.0%
Youcan’tperformthatactionatthistime.
Yousignedinwithanothertaborwindow.Reloadtorefreshyoursession.
Yousignedoutinanothertaborwindow.Reloadtorefreshyoursession.
延伸文章資訊
- 1实用PHP+jieba(结巴)中文关键字提取 - CSDN博客
jieba(结巴)中文分词是目前国内一款较好的中文分词插件。 1.兼容当前绝大部分流行开发语言,例:Java、C/C++、PHP、Ios、 Node.js 等开发语言。
- 2jieba-php/composer.json at master - GitHub
"結巴"中文分詞:做最好的PHP 中文分詞、中文斷詞組件。 / "Jieba" (Chinese for "to stutter") Chinese text segmentation: bui...
- 3實用PHP+jieba(結巴)中文關鍵字提取 - 台部落
jieba(結巴)中文分詞jieba(結巴)中文分詞是目前國內一款較好的中文分詞插件。 1.兼容當前絕大部分流行開發語言,例:Java、C/C++、PHP、Ios、 ...
- 4fukuball jieba-php - ReleaseEye
結巴"中文分詞:做最好的PHP 中文分詞、中文斷詞組件。 / "Jieba" (Chinese for "to stutter") Chinese text segmentation: buil...
- 5Laravel 中使用PHP 分词库(jieba) 和(scws) - LearnKu
laravel中使用php分词库(jieba)和(scws) 坚持开源,坚持分享这篇文章旨在介绍我用过的两个PHP分词库以及他们的简单使用目的:完成一段段落的分词1.Jieba分词库Jieba分...