.Net 下分词组件选择不多,最近看到宝玉发布了改进版本的mmseg分词,正好跟使用已久的盘古分词做个对比。
盘古是用自动机来实现分词
mmseg的算法相对先进一些
这里只对比盘古默认的配置,因为默认中不打开一元分词已经满足需求,mmseg只对比maxword的配置,目标是多元分词的效率和效果。
效率对比硬件配置:CPU i7 2.3GHz RAM 4GB
盘古分词
官方效率:Core Duo 1.8 GHz 下单线程 分词速度为 390K 字符每秒,2线程分词速度为 690K 字符每秒。
默认配置单线程:395kw/s,比官方要慢一些因为硬件配置比官方高,但相差不多。
默认配置多线程:744.7,也跟官方差不多;
mmseg分词
官方效率(java):
- 1.5版的分词速度simple算法是 1100kb/s左右、complex算法是 700kb/s左右,(测试机:AMD athlon 64 2800+ 1G内存 xp)。
- 1.6版在complex基础上实现了最多分词(max-word)。“很好听” -> "很好|好听"; “中华人民共和国” -> "中华|华人|共和|国"; “中国人民银行” -> "中国|人民|银行"。
- 1.7-beta 版, 目前 complex 1200kb/s左右, simple 1900kb/s左右, 但内存开销了50M左右. 上几个版都是在10M左右.
- 1.8 后,增加 CutLetterDigitFilter过虑器,切分“字母和数”混在一起的过虑器。比如:mb991ch 切为 "mb 991 ch"。
MaxWord方式单线程:比盘古慢很多,可能跟mmseg算法比较复杂有关,每个chunk都要计算四个因子。
MaxWord方式多线程:没有提升很多,这也说明了mmseg的瓶颈实在计算上。
作者:KKcat