VicWord 一個純php的分詞

安裝

composer require lizhichao/word
複製代碼

github:github.com/lizhichao/V…php

分詞說明

  • 含有3種切分方法
    • getWord 長度優先切分 。最快
    • getShortWord 細粒度切分。比最快慢一點點
    • getAutoWord 自動切分 。效果最好
  • 可自定義詞典,本身添加詞語到詞庫,詞庫支持文本格式json和二級制格式igb 二進制格式詞典小,加載快
  • dict.igb含有175662個詞,歡迎你們補充詞語到 dict.txt ,格式(詞語 \t idf \t 詞性)
    • idf 獲取方法 百度搜索這個詞語 Math.log(100000001/結果數量),若是你有更好的方法歡迎補充。
    • 詞性 [標點符號,名詞,動詞,形容詞,區別詞,代詞,數詞,量詞,副詞,介詞,連詞,助詞,語氣詞,擬聲詞,嘆詞] 取index ;標點符號取0
  • 三種分詞結果對比
$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字的文本git

製做詞庫

  • 詞庫支持utf-8的任意字符
  • 詞典大小不影響 分詞速度

只有一個方法 VicDict->add(詞語,詞性 = null)github

//定義詞典文件路徑
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();
複製代碼

demo

demoshell

該做者的其餘軟件

一個極簡的高性能框架,可在php-fpm或者swoole異步協程環境運行json

相關文章
相關標籤/搜索