VicWord 一个纯 php 的分词
(顺便安利一下:本人从帝都回来,打算找个兼职 。如果你们正好缺个前端 或者 php 后端 不妨联系我。微信:dongxi828 )
star 地址 https://github.com/lizhichao/VicWord
分词说明
- 含有 3 种切分方法
getWord长度优先切分 。最快getShortWord细粒度切分。比最快慢一点点getAutoWord自动切分 (在相邻词做了递归) 。效果最好
- 可自定义词典,自己添加词语到词库,词库支持文本格式
json和二级制格式igb二进制格式词典小,加载快 dict.igb含有 175662 个词- 三种分词结果对比
$fc = new VicWord('igb');
$arr = $fc->getWord('北京大学生喝进口红酒,在北京大学生活区喝进口红酒');
//北京大学|生喝|进口|红酒|,|在|北京大学|生活区|喝|进口|红酒
//$arr 是一个数组 每个单元的结构[词语,词语位置,词性,这个词语是否包含在词典中] 这里只值列出了词语
$arr = $fc->getShortWord('北京大学生喝进口红酒,在北京大学生活区喝进口红酒');
//北京|大学|生喝|进口|红酒|,|在|北京|大学|生活|区喝|进口|红酒
$arr = $fc->getAutoWord('北京大学生喝进口红酒,在北京大学生活区喝进口红酒');
//北京|大学生|喝|进口|红酒|,|在|北京大学|生活区|喝|进口|红酒
//准确度对比
//q 的分词和百度的分 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)