Skip to main content

rougers

CI PyPI Crates.io License

ROUGE metrics in Rust, with scores identical to Google's rouge-score, about 30 times faster on one core and over 100 times faster on all of them.

rouge-score is the reference implementation behind Hugging Face evaluate, most summarization papers and many LLM evaluation pipelines. It is written in pure Python and becomes the bottleneck once you score tens of thousands of outputs. rougers reproduces it exactly, down to the last bit of every float, including the tokenizer, NLTK's Porter stemmer and the summary-level rougeLsum.

The Rust crate is rougers; the Python package built on it is rouge-score-rs. This is an independent project, not affiliated with Google or the authors of rouge-score.

Python

pip install rouge-score-rs

Change the import and keep the rest of your code:

from rouge_score_rs import rouge_scorer  # was: from rouge_score import rouge_scorer

scorer = rouge_scorer.RougeScorer(["rouge1", "rouge2", "rougeL", "rougeLsum"], use_stemmer=True)
scores = scorer.score(
    "The quick brown fox jumps over the lazy dog",
    "The quick brown dog jumps on the log.",
)
scores["rouge1"]
# Score(precision=0.75, recall=0.6666666666666666, fmeasure=0.7058823529411765)

score_multi, custom tokenizers, split_summaries, scoring.BootstrapAggregator and tokenize.tokenize work the same way as in rouge-score, and scorers can be pickled for use in worker processes.

To score many pairs, use score_batch. It runs on all CPU cores and releases the GIL:

results = scorer.score_batch(references, predictions)  # list of dicts, one per pair

Set RAYON_NUM_THREADS to limit the number of threads.

Rust

[dependencies]
rougers = "0.1"
use rougers::{RougeScorer, RougeType};

let scorer = RougeScorer::new(["rouge1", "rougeL"], true)?;
let scores = scorer.score(
    "The quick brown fox jumps over the lazy dog",
    "The quick brown dog jumps on the log.",
);
let rouge_l = scores.get(RougeType::L).unwrap();
println!("{:.4}", rouge_l.fmeasure);

RougeScorer is Send + Sync, so it can be shared across threads, for example with Rayon.

Performance

10,000 pairs of English text from the NLTK Gutenberg corpus, about 60 words each, with rouge1, rouge2, rougeL, rougeLsum and stemming. Measured on an Apple M1 Pro with Python 3.12:

seconds pairs per second speedup
rouge-score 0.1.2 16.95 590 1×
rouge-score-rs score() 0.59 17,078 29×
rouge-score-rs score_batch(), 8 threads 0.12 83,957 142×

The script asserts that all three produce the same scores. To reproduce:

cd bindings/python
python benchmarks/compare.py --pairs 10000

Compatibility

The test suite compares rouge-score-rs with rouge-score and fails on any difference in any float:

  • the stemmer against NLTK on all 235,976 words of a system dictionary (NLTK 3.8–3.10 stem them identically);
  • tokenization against Python's str.lower for every Unicode code point;
  • thousands of random texts with repeated words, punctuation, digits, newlines and non-Latin scripts, plus property-based tests on arbitrary Unicode;
  • score_multi, custom tokenizers, split_summaries and bootstrap aggregation with a fixed NumPy seed.

Known differences:

  • An invalid ROUGE type raises ValueError when the scorer is created, not on the first call to score. Type names must be exactly rouge1…rouge9, rougeL or rougeLsum.
  • Texts must be str; rouge-score also accepts UTF-8 bytes.
  • BootstrapAggregator needs NumPy (pip install 'rouge-score-rs[aggregate]') and split_summaries=True needs NLTK (pip install 'rouge-score-rs[sentences]'). Without them, rouge-score-rs has no Python dependencies.

Development

cargo test -p rougers
cd bindings/python
uv sync --group dev
uv run pytest

License

Apache-2.0, the same licence as rouge-score and NLTK, whose scoring, tokenization and stemming logic this project ports. See NOTICE.

Metadata

Release files for rouge-score-rs 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rouge-score-rs 0.1.0
File Size Uploaded
rouge_score_rs-0.1.0.tar.gz 109.4 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for rouge-score-rs 0.1.0
File
rouge_score_rs-0.1.0-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
rouge_score_rs-0.1.0-cp39-abi3-musllinux_1_2_x86_64.whl CPython 3.9 abi3 Linux musl 1.2+ x86-64 Details
rouge_score_rs-0.1.0-cp39-abi3-musllinux_1_2_aarch64.whl CPython 3.9 abi3 Linux musl 1.2+ ARM64 Details
rouge_score_rs-0.1.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 abi3 Linux glibc 2.17+ x86-64 Details
rouge_score_rs-0.1.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.9 abi3 Linux glibc 2.17+ ARM64 Details
rouge_score_rs-0.1.0-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details
rouge_score_rs-0.1.0-cp39-abi3-macosx_10_12_x86_64.whl CPython 3.9 abi3 macOS 10.12+ x86-64 Details

Total release size: 2.7 MB

Release files / rouge_score_rs-0.1.0.tar.gz

Download URL rouge_score_rs-0.1.0.tar.gz
Size 109.4 kB
Tags Source
SHA-256 checksum
How to use checksums
f0d00bd2f9569261563c655b67f031d9215ef7361ebc20153ed73fec51cebb33
BLAKE2b-256 checksum
How to use checksums
e33473b0a8631ca7eb9d3dc0fca70e01fefe5d683a22be7075ba9aad0c1d8ec1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release files / rouge_score_rs-0.1.0-cp39-abi3-win_amd64.whl

Download URL rouge_score_rs-0.1.0-cp39-abi3-win_amd64.whl
Size 207.7 kB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
ce686dcd7ae3ba0777d267116e7a46819e02581db97815a3ff8ff2f08920256a
BLAKE2b-256 checksum
How to use checksums
3ec2b694dc20c157e501fc6fd0394945737c4170c74334458531d9668f39ac18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release files / rouge_score_rs-0.1.0-cp39-abi3-musllinux_1_2_x86_64.whl

Download URL rouge_score_rs-0.1.0-cp39-abi3-musllinux_1_2_x86_64.whl
Size 557.5 kB
Tags CPython 3.9 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
84aa950e73dc1ba41c3b86223db023a4b8a6ecff192ad644dac0bd942196d81e
BLAKE2b-256 checksum
How to use checksums
012ea7ab0dcc67a8a0e363af190d9771687591bb163086b5a21a796e04ff6db7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release files / rouge_score_rs-0.1.0-cp39-abi3-musllinux_1_2_aarch64.whl

Download URL rouge_score_rs-0.1.0-cp39-abi3-musllinux_1_2_aarch64.whl
Size 522.1 kB
Tags CPython 3.9 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
e17dfea0f9d16bcb4c4d9d81f62792e941660cf2f5a34d544ec3f86933b3a13c
BLAKE2b-256 checksum
How to use checksums
f04d02b505edae0e9f477098c6f7d447b3c03ed6e194614237f16b776f3c687f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release files / rouge_score_rs-0.1.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL rouge_score_rs-0.1.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 345.3 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
0e5373c7c0d81228dc96fc4a776110bb6ef909adc4b28ef552118c81d8749e32
BLAKE2b-256 checksum
How to use checksums
18b050f1938b77e6e3ec8db118bdce5a23ab69ea0f4bc095eb2611e280fe127e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release files / rouge_score_rs-0.1.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL rouge_score_rs-0.1.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 343.1 kB
Tags CPython 3.9 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
1fd7df1cde0ede9040790c5f348c21f063029c5846ef05483be77f189573ebe1
BLAKE2b-256 checksum
How to use checksums
0dcf003b549e4da4e8d672ad015b21494b8ed23f27ac906e5cba7c77bf15b678
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release files / rouge_score_rs-0.1.0-cp39-abi3-macosx_11_0_arm64.whl

Download URL rouge_score_rs-0.1.0-cp39-abi3-macosx_11_0_arm64.whl
Size 302.5 kB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4447afa57e667779bcc216208e604fef0be76e1e175122f212983f5baf19eb10
BLAKE2b-256 checksum
How to use checksums
40506b3c4d1243b3b9b97fa5722b5bb5cf33147382af09904a5a19edd2da0425
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release files / rouge_score_rs-0.1.0-cp39-abi3-macosx_10_12_x86_64.whl

Download URL rouge_score_rs-0.1.0-cp39-abi3-macosx_10_12_x86_64.whl
Size 306.5 kB
Tags CPython 3.9 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
215ad02c1c71dd36702d54ca21cd7107658eb77de2b86ac07b7c9d5acd7bfbc3
BLAKE2b-256 checksum
How to use checksums
d564cef5df7f11803d44a4a318ae8b5c6db0280582f1192b46b78eab3422933c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.1

8 release files

0.2.0

8 release files

0.1.1

8 release files

This release

0.1.0 This release

8 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page