Skip to content

多种常见开源分词工具的性能对比

冬日新雨 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.pytest_speed.sh感兴趣可进行自测
  • 源码中,影响 jiojio 分词速度的因素有如下若干:
    • unigram、bigram、feature_to_idx 哈希表的大小,哈希表越大,则占用内存空间越大,而hash 计算耗时越少,分词速度越快;unigram 和 bigram 直接影响模型的参数量 feature_to_idx,工具包中默认了采用 500万 参数的模型,参数越多,计算准确率越高,耗时自然越长。
    • default max feature length,该值默认了针对一个字符位置,特征数不超过20,若改小,也可进一步提升计算速度。