ROUGE-1.5.5的纯Python实现。
项目描述
Python ROUGE实现
概述
这是一个ROUGE的本地Python实现,旨在复制原始perl包的结果。
维护者可以通过rouge-opensource@google.com联系。
ROUGE最初在以下论文中介绍:
Lin, Chin-Yew. ROUGE: a Package for Automatic Evaluation of Summaries. In Proceedings of the Workshop on Text Summarization Branches Out (WAS 2004), Barcelona, Spain, July 25 - 26, 2004.
Python ROUGE
目前已有适用于Python的ROUGE实现,但其中一些由于依赖于perl脚本而并非原生Python,还有一些与原始实现相比提供不同的结果,这使得直接比较已知结果变得困难。
本软件包旨在复制perl的结果。它实现了
- ROUGE-N(N-gram)评分
- ROUGE-L(最长公共子序列)评分
- 文本归一化
- 用于置信区间计算的自助重采样
- 可选的Porter词干提取,用于去除复数和词缀(如ing, ion, ment)。
请注意,原始perl ROUGE脚本提供的所有选项并不都得到支持,但已实现的选项子集应能复制原始功能。
停用词去除
原始ROUGE perl脚本实现了可选的停用词去除(使用-s参数)。然而,ROUGE使用了约600个停用词,这些词来自另一个现已停用的包。这个单词列表包含许多可能不适合某些任务的字词,例如星期和月份的名称以及数字。它也没有明确的重新分发许可。由于我们无法精确地复制此功能,因此不包括停用词去除。
两种ROUGE-L版本
在ROUGE论文中,描述了两种ROUGE版本
- 句子级别:计算两段文本之间的最长公共子序列(LCS)。忽略换行符。在这个包中称为
rougeL
。 - 摘要级别:将文本中的换行符解释为句子边界,计算每对参考和候选句子之间的LCS,并计算某种称为union-LCS的东西。在这个包中称为
rougeLsum
。这是在Get To The Point: Summarization with Pointer-Generator Networks中报告的ROUGE-L,例如。如果你的参考/候选没有换行符分隔符,可以使用--split_summaries标志(或在RougeScorer中的可选参数)。
如何运行
此包将目标文件(每行包含一个示例)与相同格式的预测文件进行比较。可以从google-research/启动如下:
python -m rouge.rouge \
--target_filepattern=*.targets \
--prediction_filepattern=*.decodes \
--output_filename=scores.csv \
--use_stemmer=true \
--split_summaries=true
使用pip
pip install -r rouge/requirements.txt
pip install rouge-score
然后在python
from rouge_score import rouge_scorer
scorer = rouge_scorer.RougeScorer(['rouge1', 'rougeL'], use_stemmer=True)
scores = scorer.score('The quick brown fox jumps over the lazy dog',
'The quick brown dog jumps on the log.')
许可证
根据Apache 2.0许可证授权。
免责声明
这不是一个官方的Google产品。