まとめ
- 言語モデル評価の代表指標とタスクごとの使い分けを整理します。
- 翻訳・要約・生成タスクで使われる自動指標とその計算例を紹介します。
- 人手評価や LLM を用いた評価との組み合わせ方、バイアス対策をまとめます。
言語モデル評価の全体像 #
翻訳、要約、自由生成などの言語タスクでは「正解が 1 つでない」ケースが多く、評価指標にも多様なアプローチがあります。ここでは n-gram ベース、埋め込みベース、LLM を用いた評価 の 3 つに分類し、それぞれの特徴と注意点を解説します。
1. n-gram ベース指標(語彙一致を重視) #
| 指標 | 何を見るか | 特徴 |
|---|---|---|
| BLEU | n-gram Precision + 短縮ペナルティ | 機械翻訳の定番。短文や語順の違いに弱い |
| ROUGE-1/2/L | n-gram Recall / 最長共通部分列 (LCS) | 要約タスクで頻用。参照が複数あると実用的 |
| METEOR | Unigram マッチと同義語・語形変化 | Recall 志向。英語では WordNet を利用 |
| chrF++ | 文字 n-gram の F-score | サブワード言語でも頑健。chrF を拡張 |
使い分けのヒント #
- BLEU: 既存ベンチマークとの比較が必要な翻訳タスクで。短文には smoothing パラメータを設定。
- ROUGE: 抽出型要約など Recall を重視するタスク向け。
rouge-scoreパッケージで容易に計算。 - METEOR: 同義語や語形変化を評価したいタスクに。ただし日本語のリソースは限定的。
- chrF++: 形態素解析が難しい言語(日本語・中国語など)での翻訳評価に適用。
# sacrebleu を使った BLEU / chrF++ の計算例
import sacrebleu
references = [["今日は良い天気です。"]]
candidate = "今日はとてもいい天気だ。"
bleu_score = sacrebleu.corpus_bleu([candidate], references)
chrf_score = sacrebleu.corpus_chrf([candidate], references)
print(bleu_score.score, chrf_score.score)
2. 埋め込みベース指標(意味的適合を重視) #
| 指標 | モデル | メモ |
|---|---|---|
| BERTScore | BERT / RoBERTa などのトークン埋め込み | F1 スコアで意味類似度を算出。多言語対応モデルも利用可能 |
| MoverScore | Word Mover’s Distance の改良版 | 低頻度語も重視。計算コストがやや高い |
| BLEURT | RoBERTa を人手評価でファインチューニング | 小規模データでも人手評価と高い相関 |
| COMET | 多言語 Transformer + QA 損失 | 翻訳ベンチマークで高い相関。専用 CLI / API が提供される |
| QAEval / ParaScore | 質問生成・回答の整合性を確認 | 意味的一貫性を QA を通して評価。準備コストが高い |
使い分けのヒント #
- BERTScore は
bert-scoreパッケージで簡単に利用でき、日本語 BERT など任意のモデルに対応。 - BLEURT / COMET は事前学習済みチェックポイントをダウンロードして利用。人手評価との相関が高いが推論コストも大きい。
- 意味一致を重視したいが計算資源が限られる場合は BERTScore、より精度が必要なら BLEURT / COMET を検討。
from bert_score import score
cands = ["今日はとてもいい天気だ。"]
refs = ["今日は良い天気です。"]
P, R, F1 = score(cands, refs, lang="ja", model_type="cl-tohoku/bert-base-japanese")
print(F1.mean().item())
3. LLM を用いた評価(LLM-as-a-Judge) #
| 手法 | 概要 | 注意点 |
|---|---|---|
| LLM 直接採点 | GPT-4 などに参照と候補を渡し採点させる | プロンプト設計が重要。バイアスと一貫性に注意 |
| LLM + ルーブリック | 評価基準(流暢さ・忠実度など)を明示し、各項目を採点 | 粒度が上がるがコストも増加 |
| LLM + 自動QA | LLM に質問生成と回答整合性チェックをさせる | 長文要約で有効。質問品質が評価に影響 |
ガイドライン #
- プロンプトとシステムメッセージを共有し透明性を確保。
- 温度・乱数の設定を固定し、複数回実行して平均を取る。
- 自動指標だけでなく、人手評価との相関を定期的に確認。
指標選定のフローチャート #
- タスクを明確化
- 翻訳・要約 → n-gram 指標 + 意味指標
- 自由生成・対話 → 埋め込み指標 + LLM 評価
- 参照データの有無
- 参照が十分 → n-gram 指標に加えて BERTScore など
- 参照が少ない → LLM 評価や人手評価を併用
- コストと再現性のバランス
- 軽量・高速 → SacreBLEU / BERTScore
- 高精度重視 → BLEURT / COMET / GPT-Judge
チェックリスト #
- 参照データの品質と量を確認したか
- 自動指標と人手評価(または LLM 評価)の両方で傾向を把握したか
- 語彙一致と意味的整合性のどちらを重視するか決めたか
- 評価プロンプトやパラメータを文書化し再現性を担保したか
- バイアス(評価者・モデル・データ)を検知するための仕組みを整えたか
参考リンク #
- BLEU / chrF++: SacreBLEU
- ROUGE:
rouge-scoreパッケージ - BERTScore: GitHub - bert-score
- BLEURT: Google Research BLEURT
- COMET: Unbabel COMET
- LLM-as-a-Judge: OpenAI evals などの事例
複数の指標を組み合わせ、定期的に人手評価との相関を確認しながら、目的に合った評価パイプラインを構築してください。