安裝
composer require lizhichao/word
複製程式碼
github:github.com/lizhichao/V…
分詞說明
- 含有3種切分方法
getWord
長度優先切分 。最快getShortWord
細粒度切分。比最快慢一點點getAutoWord
自動切分 。效果最好
- 可自定義詞典,自己新增詞語到詞庫,詞庫支援文字格式
json
和二級制格式igb
二進位制格式詞典小,載入快 dict.igb
含有175662個詞,歡迎大家補充詞語到dict.txt
,格式(詞語 \t idf \t 詞性)- idf 獲取方法 百度搜尋這個詞語
Math.log(100000001/結果數量)
,如果你有更好的方法歡迎補充。 - 詞性 [標點符號,名詞,動詞,形容詞,區別詞,代詞,數詞,量詞,副詞,介詞,連詞,助詞,語氣詞,擬聲詞,嘆詞] 取index ;標點符號取0
- idf 獲取方法 百度搜尋這個詞語
- 三種分詞結果對比
$fc = new VicWord('igb');
$arr = $fc->getWord('北京大學生喝進口紅酒,在北京大學生活區喝進口紅酒');
//北京大學|生喝|進口|紅酒|,|在|北京大學|生活區|喝|進口|紅酒
//$arr 是一個陣列 每個單元的結構[詞語,詞語位置,詞性,這個詞語是否包含在詞典中] 這裡只值列出了詞語
$arr = $fc->getShortWord('北京大學生喝進口紅酒,在北京大學生活區喝進口紅酒');
//北京|大學|生喝|進口|紅酒|,|在|北京|大學|生活|區喝|進口|紅酒
$arr = $fc->getAutoWord('北京大學生喝進口紅酒,在北京大學生活區喝進口紅酒');
//北京|大學生|喝|進口|紅酒|,|在|北京大學|生活區|喝|進口|紅酒
//對比
//qq的分詞 http://nlp.qq.com/semantic.cgi#page2
//百度的分詞 http://ai.baidu.com/tech/nlp/lexical
複製程式碼
分詞速度
機器阿里雲 Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
getWord
每秒140w字
getShortWord
每秒138w字
getAutoWord
每秒40w字
測試文字在百度百科拷貝的一段5000字的文字
製作詞庫
- 詞庫支援utf-8的任意字元
- 詞典大小不影響 分詞速度
只有一個方法 VicDict->add(詞語,詞性 = null)
//定義詞典檔案路徑
define('_VIC_WORD_DICT_PATH_',__DIR__.'/Data/dict.igb');
require __DIR__.'/Lib/VicDict.php';
//目前可支援 igb 和 json 兩種詞典庫格式;igb需要安裝igbinary擴充套件,igb檔案小,載入快
$dict = new VicDict('igb');
//新增詞語詞庫 add(詞語,詞性) 不分語言,可以是utf-8編碼的任何字元
$dict->add('中國','n');
//儲存詞庫
$dict->save();
複製程式碼