-
Notifications
You must be signed in to change notification settings - Fork 7
多种常见开源分词工具的性能对比
冬日新雨 edited this page Aug 15, 2023
·
12 revisions
- X86-64,Ubuntu 18.04 linux,Python3.8,gcc7.5.0
- 以下测试结果仅在上述条件下有效。若换机器进行计算,则不同的分词器的处理速度会有变化,但整体性能比例变化不大
- 分词器性能优化主要体现在 Linux 服务器上,而在 windows 等平台上则未优化。可自行在 windows 或 mac 平台上编译 C 优化代码,C文件目录位于
jiojio/jiojio_cpp/
目录下。如有问题可在 issues 中提出。
- 测试结果为多次测量的均值。
分词工具 | jiojio(300w参数) | jiojio(500w参数) | pkuseg | lac(cpu) | thuseg | jieba(带HMM) |
---|---|---|---|---|---|---|
处理速度(字/秒) | 172,304 | 134,024 | 38,617 | 41,158 | 17,823 | 211,078 |
- jiojio 分词工具为基于纯 C 编写的分词接口,性能速度大大优于除 jieba 之外的 python 接口的分词器。
- jieba 分词下速度比 jiojio 高出大约 30%,但其分词准确率比 jiojio 低大约 8%。
- 测速脚本位于 本项目的
test.py
和test_speed.sh
,感兴趣可进行自测。 - 源码中,影响 jiojio 分词速度的因素有如下若干:
- unigram、bigram、feature_to_idx 哈希表的大小,哈希表越大,则占用内存空间越大,而hash 计算耗时越少,分词速度越快;unigram 和 bigram 直接影响模型的参数量 feature_to_idx,工具包中默认了采用 500万 参数的模型,参数越多,计算准确率越高,耗时自然越长。
- default max feature length,该值默认了针对一个字符位置,特征数不超过20,若改小,也可进一步提升计算速度。