TLDR WHAT: Rust 实现BLEU Score计算GitHub: https://github.com/shenxiangzhuang/bleuscorePyPI: https://pypi.org/project/bleuscore/crates: https://crates.io/crates/bleuscoreDocs: https://docs.rs/bleuscore/latest/bleuscore/ Why Huggingface 的 Evaluate 库真的不好用,且慢,见issueTalk is cheap: 看了太多和 Rust 相关的争论,还是决定动手写一下再做判断BLEU 的计算是难度相对较低,比较适合作练习的项目 Overview Rust 实现 BLEU Score 计算(采用和 Huggingface evaluate完全一致的算法),通过 Binding 构建 Python 库 做了大量的结果对比测试来保证此 Rust 实现的结果和 Huggingface 结果是一致的 基于 Hypothesis ,一个仿 Haskell QuickCheck 的 property test 库 做了较为充分的 Benchmark 来测试当前 Rust 实现的性能 初步结论 开发体验: 总体的过程(编译,测试,文档,依赖管理等)还是很丝滑的(个人之前并没有太多 Rust 基础),主要得益于 Rust 完整的生态机器学习: 当算法正已经在 Python 实现,想追求更好的性能时,用 Rust 来实现算法可以有效提升算法运行效(同时可以用 Python 实现来验证当前 Rust 实现的正确性)性能: 当前 bleuscore 的性能提升在大规模数据集上更为显著,性能提升主要来自目前的实现用了多核并行(基于 rayon)。在数据集本身比较小或没有使用多核时,其实性能提升并不大(详情见 Benchmark ) 最后 欢迎理性讨论,欢迎 PR !