VicWordPHP 分詞庫(kù)
VicWord 一個(gè)純php的分詞
安裝
composer require lizhichao/word
分詞說(shuō)明
- 含有3種切分方法
-
getWord長(zhǎng)度優(yōu)先切分 。最快 -
getShortWord細(xì)粒度切分。比最快慢一點(diǎn)點(diǎn) -
getAutoWord自動(dòng)切分 (在相鄰詞做了遞歸) 。效果最好
-
- 可自定義詞典,自己添加詞語(yǔ)到詞庫(kù),詞庫(kù)支持文本格式
json和二級(jí)制格式igb二進(jìn)制格式詞典小,加載快 -
dict.igb含有175662個(gè)詞,歡迎大家補(bǔ)充詞語(yǔ)到dict.txt,格式(詞語(yǔ) \t idf \t 詞性)- idf 獲取方法 百度搜索這個(gè)詞語(yǔ)
Math.log(100000001/結(jié)果數(shù)量),如果你有更好的方法歡迎補(bǔ)充。 - 詞性 [標(biāo)點(diǎn)符號(hào),名詞,動(dòng)詞,形容詞,區(qū)別詞,代詞,數(shù)詞,量詞,副詞,介詞,連詞,助詞,語(yǔ)氣詞,擬聲詞,嘆詞] 取index ;標(biāo)點(diǎn)符號(hào)取0
- idf 獲取方法 百度搜索這個(gè)詞語(yǔ)
- 三種分詞結(jié)果對(duì)比
$fc = new VicWord('igb');
$arr = $fc->getWord('北京大學(xué)生喝進(jìn)口紅酒,在北京大學(xué)生活區(qū)喝進(jìn)口紅酒');
//北京大學(xué)|生喝|進(jìn)口|紅酒|,|在|北京大學(xué)|生活區(qū)|喝|進(jìn)口|紅酒
//$arr 是一個(gè)數(shù)組 每個(gè)單元的結(jié)構(gòu)[詞語(yǔ),詞語(yǔ)位置,詞性,這個(gè)詞語(yǔ)是否包含在詞典中] 這里只值列出了詞語(yǔ)
$arr = $fc->getShortWord('北京大學(xué)生喝進(jìn)口紅酒,在北京大學(xué)生活區(qū)喝進(jìn)口紅酒');
//北京|大學(xué)|生喝|進(jìn)口|紅酒|,|在|北京|大學(xué)|生活|區(qū)喝|進(jìn)口|紅酒
$arr = $fc->getAutoWord('北京大學(xué)生喝進(jìn)口紅酒,在北京大學(xué)生活區(qū)喝進(jìn)口紅酒');
//北京|大學(xué)生|喝|進(jìn)口|紅酒|,|在|北京大學(xué)|生活區(qū)|喝|進(jìn)口|紅酒
//對(duì)比
//qq的分詞和百度的分詞 http://nlp.qq.com/semantic.cgi#page2 http://ai.baidu.com/tech/nlp/lexical
分詞速度
機(jī)器阿里云 Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
getWord 每秒140w字
getShortWord 每秒138w字
getAutoWord 每秒40w字
測(cè)試文本在百度百科拷貝的一段5000字的文本
制作詞庫(kù)
- 詞庫(kù)支持utf-8的任意字符
- 詞典大小不影響 分詞速度
只有一個(gè)方法 VicDict->add(詞語(yǔ),詞性 = null)
//定義詞典文件路徑
define('_VIC_WORD_DICT_PATH_',__DIR__.'/Data/dict.igb');
require __DIR__.'/Lib/VicDict.php';
//目前可支持 igb 和 json 兩種詞典庫(kù)格式;igb需要安裝igbinary擴(kuò)展,igb文件小,加載快
$dict = new VicDict('igb');
//添加詞語(yǔ)詞庫(kù) add(詞語(yǔ),詞性) 不分語(yǔ)言,可以是utf-8編碼的任何字符
$dict->add('中國(guó)','n');
//保存詞庫(kù)
$dict->save();評(píng)論
圖片
表情
