NLPの結果をルージュ!

自然言語処理で使用されるメトリックに関するこの一連の投稿で説明されている次のメトリックは、Gisting Evaluation (ROUGE) のための Recall-Oriented Understudy です。
ROUGE は、テキストの要約や機械翻訳などの NLP タスクの品質を評価するために使用される評価指標です。BLEUとは異なり、ROUGE は再現率と適合率の両方を使用して、候補として知られるモデルで生成された要約を、参照として知られる人間が生成した一連の要約と比較します。これは、参照内の n グラムのうち、予測された候補に含まれる数を測定します。
まず、再現率 = 真陽性/(真陽性 + 偽陰性) を計算してみましょう。ここで、真陽性は、参照と候補の間で一致する n-gram です。False Negatives は、実際の文 (参照) には含まれているが候補には含まれていない n-gram と考えることができます。偽陽性は、候補には存在するが参照には存在しない n-gram です。True Positives、False Positives、Recall、Precision などの概念の復習が必要な場合は、このブログ記事Recall, Precision, F1-Score をチェックしてください。
したがって、再現率と精度は次のように取得できます。


再現率と精度は補完的な場合があるため、両方を組み合わせてバランスを取る必要があります。このため、ROUGE は Python では F1 スコアとして計算されます。値の範囲は 0 から 1 で、値が 1 に近いほど予測の品質が高くなります。
ルージュン
Huggingface の「evaluate」パッケージの evaluate モジュールを使用して、計算を段階的に検証してみましょう。要約モデルの結果から、候補ごとに 2 つの参照を含む次のコーパスが得られたとします。
!pip install evaluate
!pip install rouge-score
import evaluate
rouge = evaluate.load('rouge')
predictions = ["Transformers Transformers are fast plus efficient",
"Good Morning", "I am waiting for new Transformers"]
references = [
["HuggingFace Transformers are fast efficient plus awesome",
"Transformers are awesome because they are fast to execute"],
["Good Morning Transformers", "Morning Transformers"],
["People are eagerly waiting for new Transformer models",
"People are very excited about new Transformers"]
]
results = rouge.compute(predictions=predictions, references=references)
print(results)
{'rouge1': 0.6659340659340659, 'rouge2': 0.45454545454545453,
'rougeL': 0.6146520146520146, 'rougeLsum': 0.6146520146520146}
Candidate 1: Transformers Transformers are fast plus efficient
Reference 1: HuggingFace Transformers are fast efficient plus awesome
Reference 2: Transformers are awesome because they are fast to execute
Recall = 5/7 = 0.7142857
Precision = 5/6 = 0.8333333
F1-Score = 2 * (0.7142857) * (0.8333333)/(0.7142857 + 0.8333333) = 0.7692307
Candidate 2 and the respective Reference 1: 0.8
Candidate 3 and the respective Reference 1: 0.4285714
Mean F1-Score = (0.7692307 + 0.8 + 0.4285714)/3 = 0.665934
ルージュエル
ここで、L は Longest Common Subsequence (LCS) を表します。LCS は、参照と候補の両方で発生する最長のサブシーケンスとして定義されます。ここでのサブシーケンスは連続している必要はありません。一致する n-gram の数を数える代わりに、ここで LCS の長さを測定します。このアプローチの利点は、任意の順序で出現する可能性のある一致する n-gram のみを探すのではなく、文内の単語の順序が考慮されることです。さらに、計算に使用する n-gram の order(n) を指定する必要もありません。

上記の式で、X と Y はそれぞれ長さ m と n の参照と候補です。ベータは、リコールと精度のどちらがより重要かを制御するために使用されます。1 の場合、F_lcs は Recall(R_lcs) と Precision(P_lcs) の調和平均です。場合によっては、リコールを優先したい場合があります。つまり、参照内のほとんどの n グラムが候補に存在することがより重要です。これは、ベータ値を 1 より大きくすることで実現できます。
では、この式を実際に見てみましょう。各候補参照セットの LCS を以下に示します。
C1-R1: Transformers are fast plus
C1-R2: Transformers are fast
C2-R1: Good Morning
C2-R2: Morning
C3-R1: waiting for new
C3-R2: new Transformers
ROUGE-N と同様に、各候補の 2 つの参照間の最大長で参照を考慮します。したがって、LCS の長さが 4 の C1-R1 ペアの F1-スコアを計算します。候補 2 と 3 のスコアは ROUGE-1 と同じです。これは、参照間の LCS の長さが 2 と 3 の一致するユニグラム カウントと同じであるためです。計算全体は次のように合計されます。
C1-R1:
Recall = 4/7
Precision = 4/6
ROUGE-L F1 = 2 * (4/7) * (4/6)/((4/6) + (4/7)) = 0.6153846
C2-R1 ROUGE-L F1 = 0.8
C3-R1 ROUGE-L F1 = 0.4285714
Final ROUGE-L F1 = (0.6153846 + 0.8 + 0.4285714)/3 = 0.614652
利点
- 計算と理解が容易で、通常、テキスト要約システムの評価に使用されます。
- ROUGE とその変種は、単一のドキュメントと短いテキストの要約にうまく機能しています。
- ROUGE は同義語に関して BLEU と同じ問題を抱えています。n-gram の意味は考慮されないため、「速い」と「速い」は類似しているとは見なされません。
- スコアは、評価のために選択された参照の単語の選択と構造に大きく依存します。
参考文献
私はドルトムント工科大学でデータ サイエンスの修士号を取得している学生です。私の投稿や専門的なコミュニケーションに関するフィードバックについては、LinkedInでお気軽にお問い合わせください。