Skip to main content

Full Python ROUGE Score Implementation (not a wrapper)

Project description

# Rouge
*A full Python librarie for the ROUGE metric [(paper)](http://www.aclweb.org/anthology/W04-1013).*

### Disclaimer
This implementation is independant from the "official" ROUGE script (aka. `ROUGE-155`).
Results may be *slighlty* different, see [discussions in #2](https://github.com/pltrdy/rouge/issues/2).

## Quickstart
#### Clone & Install
```shell
git clone https://github.com/pltrdy/rouge
cd rouge
python setup.py install
# or
pip install -U .
```
or from pip:
```
pip install rouge
```
#### Use it from the shell (JSON Output)
```
$rouge -h
usage: rouge [-h] [-f] [-a] hypothesis reference

Rouge Metric Calculator

positional arguments:
hypothesis Text of file path
reference Text or file path

optional arguments:
-h, --help show this help message and exit
-f, --file File mode
-a, --avg Average mode

```

e.g.


```shell
# Single Sentence
rouge "transcript is a written version of each day 's cnn student" \
"this page includes the show transcript use the transcript to help students with"

# Scoring using two files (line by line)
rouge -f ./tests/hyp.txt ./ref.txt

# Avg scoring - 2 files
rouge -f ./tests/hyp.txt ./ref.txt --avg
```

#### As a library

###### Score 1 sentence

```python
from rouge import Rouge

hypothesis = "the #### transcript is a written version of each day 's cnn student news program use this transcript to he lp students with reading comprehension and vocabulary use the weekly newsquiz to test your knowledge of storie s you saw on cnn student news"

reference = "this page includes the show transcript use the transcript to help students with reading comprehension and vocabulary at the bottom of the page , comment for a chance to be mentioned on cnn student news . you must be a teac her or a student age # # or older to request a mention on the cnn student news roll call . the weekly newsquiz tests students ' knowledge of even ts in the news"

rouge = Rouge()
scores = rouge.get_scores(hypothesis, reference)
```

*Output:*

```json
[{"rouge-1": {"f": 0.49411764217577864,
"p": 0.5833333333333334,
"r": 0.42857142857142855},
"rouge-2": {"f": 0.23423422957552154,
"p": 0.3170731707317073,
"r": 0.18571428571428572},
"rouge-l": {"f": 0.42751590030718895,
"p": 0.5277777777777778,
"r": 0.3877551020408163}}]
```

###### Score multiple sentences
```python
import json
from rouge import Rouge

# Load some sentences
with open('./tests/data.json') as f:
data = json.load(f)

hyps, refs = map(list, zip(*[[d['hyp'], d['ref']] for d in data]))
rouge = Rouge()
scores = rouge.get_scores(hyps, refs)
# or
scores = rouge.get_scores(hyps, refs, avg=True)
```

*Output (`avg=False`)*: a list of `n` dicts:

```
{"rouge-1": {"f": _, "p": _, "r": _}, "rouge-2" : { .. }, "rouge-3": { ... }}
```


*Output (`avg=True`)*: a single dict with average values:

```
{"rouge-1": {"f": _, "p": _, "r": _}, "rouge-2" : { ..     }, "rouge-3": { ... }}
```

###### Score two files (line by line)
Given two files `hyp_path`, `ref_path`, with the same number (`n`) of lines, calculate score for each of this lines, or, the average over the whole file.

```python
from rouge import FilesRouge

files_rouge = FilesRouge(hyp_path, ref_path)
scores = files_rouge.get_scores()
# or
scores = files_rouge.get_scores(avg=True)
```


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rouge-0.3.2.tar.gz (11.8 kB view details)

Uploaded Source

Built Distribution

rouge-0.3.2-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

Details for the file rouge-0.3.2.tar.gz.

File metadata

  • Download URL: rouge-0.3.2.tar.gz
  • Upload date:
  • Size: 11.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.20.0 setuptools/41.0.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.6.8

File hashes

Hashes for rouge-0.3.2.tar.gz
Algorithm Hash digest
SHA256 8738a39c38c4555860e43102108c1e2a1efe201a3f13abdb5d8fe4a7c280d213
MD5 d82f8a5a4992b18c5207aa7b10357be5
BLAKE2b-256 7dd2439a06c6a2f1f8b2947720125ff3b9bafec0c3e2366daae19def377d33d6

See more details on using hashes here.

File details

Details for the file rouge-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: rouge-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 12.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.20.0 setuptools/41.0.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.6.8

File hashes

Hashes for rouge-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f374ba2c297f4d3ef89189c2edeaf4ecde14e8005e817e680d99d16e92ced00b
MD5 dfe4bda7ab4a481fcc49d23f0ce56928
BLAKE2b-256 63acb93411318529980ab7f41e59ed64ec3ffed08ead32389e29eb78585dd55d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page