テキスト要約の評価
前提知識
- N-gram
- 任意の文字列や文書を連続したn個の文字で分割するテキスト分割方法.特に,nが1の場合をユニグラム(uni-gram),2の場合をバイグラム(bi-gram),3の場合をトライグラム(tri-gram)と呼ぶ.
- 再現率(recall)
- 結果として出てくるべきもの(記事や文書)のうち、実際に出て来たものの割合。網羅性に関する指標。
- 適合率(precision)
- システムが出した結果において、本当に正しかったものの割合。検索対象の文書群の中から、正しく検索された文書の割合を指す。正確性に関する指標。
- F-尺度(F-measure)またはF値
- 適合率(precision)と再現率(recall)という、正確性と網羅性の総合的な評価の際に利用される尺度のこと。 Wikipedia - 検索性能の評価
要約文書の評価方法
- 上記のQiitaを参考にした、ROUGE-NはBLEUを参考にしたようだ
要約を評価する観点としては、通常の機械学習と同様適合率(Precision)と再現率(Recall)の観点があります。
ROUGEによる評価はRecall的
例えば,ROUGE-1は1gramでの一致,ROUGE-2では2gramでの一致をみます
ROUGE-N = "正解テキストに含まれるN-gramの数" / "正解テキストと生成テキストとの間で一致するN-gramの数"
評価指標 | 観点 |
---|---|
BLEU | 一致率の評価 |
ROUGE-N | カバー率の評価。N-gram単位での一致を取る手法。 |
ROUGE-S/ROUGE-SU | ROUGE-Nでできなかった、並んでいない単語のペア(文中の単語の純粋な組み合わせ)を考慮 |
ROUGE-L/ROUGE-W | 生成した要約と人手で作成した要約とで「一致する最大のシーケンス」(longest common subsequence=LCS)を評価 |
ROUGE-BE | 文法的な要素間の関係(係り受け)を考慮 |
METEOR | 参照訳と出力のユニグラムの合致数をもとにした評価 |
- どれを使うか
各ROUGEのスコアと、人が要約につけたスコアの相関を調べた結果があります。
ROUGE: A Package for Automatic Evaluation of Summaries
こちらを見ると、ROUGE-L/ROUGE-SU4がなかなかいい働きをするのではないかと思えます。
- 結論としてはROUGE-L/ROUGE-SU4がよさそう
- と、思ったのだがROUGEでは言い換え表現の評価がつけられないという批判がある(以下画像)
- Get To The Point: Summarization with Pointer-Generator Networks_acl17_論文紹介 より
→ よって、言い換え表現の評価軸を持たせたい場合METEORを併用したほうがよい
fast_abs_rlの要約評価を確かめてみる
- https://github.com/ChenRocks/fast_abs_rl#results
- 交差検証、テストのデータセットに対して以下を試している
- ROUGEs (R-1, R-2, R-L)、N-gramが1,2のときとROUGE-L
- METEOR
- 交差検証、テストのデータセットに対して以下を試している
- fast_abs_rl は要約の答えが一応あるので、ROUGE-LとMETEORが試せるわけか
- モデルはnewのほうだけ試すことにする
実行の準備
- ROUGEはPerlのスクリプトが必要
- ROUGE-1.5.5
- これをDLしてプロジェクトのルートディレクトリに置く
- 実行
$ DATA=/path/to/decompressed \ ROUGE=/path/to/ROUGE-1.5.5 \ python eval_full_model.py --rouge --decode_dir=<fast_abs_rl で作成した要約が格納されているディレクトリ>
結果の精査
- 検証の対象
- 論文発表時のパラメータ(acl)と論文発表後に改良されたパラメータ(new)が公開されている
- また、要約作成時のパラメータ(bean_sizeは1か5から選べる)
→ 今回はnewでbeam_size=1で実施
- beam_sizeの詳細
beam_size: number of hypothesis for (diverse) beam search. (use beam_size > 1 to enable reranking) beam_size=1 to get greedy decoding results (rnn-ext + abs + RL) beam_size=5 is used in the paper for the +rerank model (rnn-ext + abs + RL + rerank)
- 論文のほうで公開されているROUGEの結果
For all the datasets, we evaluate standard ROUGE1, ROUGE-2, and ROUGE-L (Lin, 2004) on fulllength F1 (with stemming) following previous works
とあるように、結果はすべてF値で計算している
- Validation set
- 表は公式のGitHubで公開されている指標(new, beam_size=1のみ)
Models | ROUGEs (R-1, R-2, R-L) | METEOR |
---|---|---|
① rnn-ext + abs + RL | (41.23, 18.45, 38.71) | 21.14 |
- 手元で実施して出力された指標(①と同じ)
- ほぼGitHubで公開されている指標と一致した
- ROUGEの指標が_R, _P, _Fと出力されるが、それぞれ
- recall: 再現率
- precision: 適合率
- F-measure: F値
--------------------------------------------- 1 ROUGE-1 Average_R: 0.48969 (95%-conf.int. 0.48743 - 0.49185) 1 ROUGE-1 Average_P: 0.37611 (95%-conf.int. 0.37395 - 0.37817) 1 ROUGE-1 Average_F: 0.41233 (95%-conf.int. 0.41050 - 0.41415) <-- ここ --------------------------------------------- 1 ROUGE-2 Average_R: 0.22027 (95%-conf.int. 0.21802 - 0.22245) 1 ROUGE-2 Average_P: 0.16787 (95%-conf.int. 0.16605 - 0.16962) 1 ROUGE-2 Average_F: 0.18440 (95%-conf.int. 0.18260 - 0.18623) <-- ここ --------------------------------------------- 1 ROUGE-L Average_R: 0.45969 (95%-conf.int. 0.45738 - 0.46191) 1 ROUGE-L Average_P: 0.35329 (95%-conf.int. 0.35121 - 0.35535) 1 ROUGE-L Average_F: 0.38719 (95%-conf.int. 0.38539 - 0.38898) <-- ここ
- Test set
- 表は公式のGitHubで公開されている指標(new, beam_size=1のみ)
Models | ROUGEs (R-1, R-2, R-L) | METEOR |
---|---|---|
① rnn-ext + abs + RL | (40.41, 17.92, 37.87) | 21.13 |
- 手元で実施して出力された指標(①と同じ)
- ほぼGitHubで公開されている指標と一致した
--------------------------------------------- 1 ROUGE-1 Average_R: 0.49097 (95%-conf.int. 0.48840 - 0.49353) 1 ROUGE-1 Average_P: 0.36062 (95%-conf.int. 0.35856 - 0.36280) 1 ROUGE-1 Average_F: 0.40390 (95%-conf.int. 0.40197 - 0.40579) --------------------------------------------- 1 ROUGE-2 Average_R: 0.21874 (95%-conf.int. 0.21628 - 0.22101) 1 ROUGE-2 Average_P: 0.15937 (95%-conf.int. 0.15760 - 0.16117) 1 ROUGE-2 Average_F: 0.17893 (95%-conf.int. 0.17700 - 0.18073) --------------------------------------------- 1 ROUGE-L Average_R: 0.46010 (95%-conf.int. 0.45764 - 0.46255) 1 ROUGE-L Average_P: 0.33808 (95%-conf.int. 0.33604 - 0.34021) 1 ROUGE-L Average_F: 0.37859 (95%-conf.int. 0.37670 - 0.38046)
ROUGEの公開されている実装
- これから新しくROUGEを計測する場合以下を使用したほうがよさそう
評価の方法について
- ROUGE-NのF値を使う評価方法が一般的であるとわかった
- 言い換え表現を評価する場合ROUGEは使えないので、別の方法を探す必要がある
- それがMETEORになる
- https://github.com/chakki-works/sumeval ROUGEはこれで使えそう
because-of-meteor.png
paper-fast-abs-rl.png