ROUGEとは
Recall-Oriented Understudy for Gisting Evaluation
生成された要約と参照要約との単語の重なりから、要約品質を自動評価する指標群
ひとことで言うと
AIが作った要約の質を、お手本の要約との言葉の重なり具合で測る指標。
概要
ROUGE(Recall-Oriented Understudy for Gisting Evaluation)とは、自動生成された要約と、人間が作成した参照要約との間の単語やn-gramの重なりを計算することで、要約の品質を評価する評価指標群の総称。 単語の並びの一致数を再現率(Recall)の観点から評価するROUGE-Nや、最長共通部分列を用いるROUGE-L等、複数のバリエーションが存在し、自動要約タスクの評価における事実上標準的な指標として広く使われている。 BLEUが主に精度(Precision)寄りの指標であるのに対し、ROUGEは参照要約の内容がどれだけ生成要約に含まれているかという再現率(Recall)寄りの視点を重視する設計になっている。
背景
自動要約システムの評価を人手のみで行うのはコストが高く、大量の候補やモデル間の比較を効率的に行う手段が求められていた。 ROUGEは、参照要約との語彙的な重なりを自動的に計算することで、この評価を効率化するために考案された。
歴史
2004年: LinがROUGEを提案する論文を発表。 以降、自動要約研究における標準的な評価指標として広く採用された。
アーキテクチャ
ROUGE-Nは生成要約と参照要約間のn-gramの一致数を数え、主に再現率を基準にスコアを算出する。 ROUGE-Lは、両者の最長共通部分列(LCS)の長さをもとにスコアを算出し、単語の並び順の類似性もある程度反映する。
ワークフロー
生成要約と参照要約をトークンに分割 → ROUGE-Nの場合はn-gramの一致数、ROUGE-Lの場合は最長共通部分列(LCS)を算出 → 再現率を中心にスコアを計算し出力(用途によっては適合率・F値もあわせて算出)。
コード例
rouge_scoreでROUGEスコアを計算する
from rouge_score import rouge_scorer
scorer = rouge_scorer.RougeScorer(["rouge1", "rougeL"], use_stemmer=True)
scores = scorer.score(
"the cat is on the mat",
"the cat sat on the mat",
)
print(scores)利点
- 人手評価と比べて低コスト・高速に、大量の要約結果を一貫した基準で評価できる
- 複数のバリエーション(ROUGE-N、ROUGE-L等)があり、評価したい観点に応じて使い分けられる
- rouge_score等のライブラリが整備されており、手軽に導入できる
欠点
- 単語の表層的な一致に基づくため、意味は同じでも表現が異なる要約を正しく評価できない場合がある
- 要約の一貫性・事実の正確さといった、より高次の品質までは直接評価できない
- ステミングの有無やn-gramの取り方等、設定によってスコアが変動しやすい
比較
関連用語
よくある質問
ROUGEスコアが高ければ良い要約?
参照要約との語彙的な重なりが大きいことを示すが、要約としての流暢さや事実の正確さは別途確認が必要で、ROUGEスコアのみで要約品質を判断するのは不十分とされる。
ROUGE-NとROUGE-Lはどう使い分ける?
ROUGE-Nは単語の一致数に基づく指標で、ROUGE-1(単語単位)やROUGE-2(2単語連続)がよく使われる。 ROUGE-Lは最長共通部分列に基づくため、単語の並び順の類似性も評価したい場合に用いられる。