BLEUとは
Bilingual Evaluation Understudy
機械翻訳の出力と参照訳とのn-gramの一致度から翻訳品質を自動評価する指標
ひとことで言うと
AIが翻訳した文章の質を、お手本の翻訳とどれだけ似ているかで測る指標。
概要
BLEU(Bilingual Evaluation Understudy)とは、機械翻訳システムが生成した訳文と、人間が作成した参照訳(正解訳)とのn-gram(連続する単語の並び)の一致度を計算することで、翻訳品質を自動的にスコア化する評価指標。 人手による評価と比べて低コストかつ高速に、大量の翻訳結果を一貫した基準で評価できるため、機械翻訳研究における事実上標準的な自動評価指標として長年使われてきた。 一方で語順の違いや同義表現による言い換えを適切に評価しづらいという弱点があり、流暢さや意味的な妥当性を人間の感覚に近い形で評価するには限界があるとも指摘されている。 スコアは0〜1(または0〜100)の範囲で表され、複数の参照訳と比較する場合もあるが、翻訳文の長さが極端に短い場合を補正するペナルティ項も組み込まれている。
背景
機械翻訳の品質評価を人手のみで行うのはコストと時間がかかり、モデルの改良サイクルを回すうえでの制約になっていた。 BLEUは、参照訳との表現の一致度という代理指標を用いることで、翻訳品質を自動的かつ再現可能な形で評価できるよう考案された。
歴史
2002年: IBMの研究チームがBLEUを提案する論文を発表。 以降、機械翻訳分野における標準的な自動評価指標として広く採用された。
アーキテクチャ
生成された訳文と参照訳との間で、1単語(1-gram)から4単語程度の連続(n-gram)までの一致数を数え、その適合率(Precision)を基本としたスコアを算出する。 訳文が参照訳より極端に短い場合にスコアが不当に高くならないよう、長さに対するペナルティ(brevity penalty)も組み込まれている。
ワークフロー
訳文と参照訳をトークンに分割 → 1-gramから4-gram程度までの一致数をそれぞれ数える → 各n-gramの適合率を算出し幾何平均をとる → brevity penaltyを乗じて最終的なBLEUスコアを算出。
コード例
NLTKでBLEUスコアを計算する
from nltk.translate.bleu_score import sentence_bleu
reference = ["the cat is on the mat".split()]
candidate = "the cat sat on the mat".split()
score = sentence_bleu(reference, candidate)
print(score)利点
- 人手評価と比べて低コスト・高速に、大量の翻訳結果を一貫した基準で評価できる
- 長年の実績があり、研究間での比較がしやすい
- NLTKやsacrebleu等、主要なライブラリで手軽に計算できる
欠点
- 単語の並びの一致に基づくため、意味は同じでも表現が異なる訳文を正しく評価できない場合がある
- 文法的な自然さや流暢さを直接的には評価しない
- トークナイズの方法や参照訳の数によってスコアが変動しやすく、実装間での単純比較には注意を要する
比較
関連用語
よくある質問
BLEUスコアは高いほど良い翻訳?
一般的な傾向としては高いほど参照訳に近いとされるが、意味は同じで表現が異なる場合を正しく評価できないという限界があり、絶対的な品質指標としては注意が必要。
BLEUの計算にはどんなツールが使われる?
NLTKのbleu_scoreモジュールや、トークナイズ方法を標準化して実装間の差異を減らしたsacrebleuというライブラリがよく使われる。
参考文献
- Research PaperBLEU: a Method for Automatic Evaluation of Machine Translation
- Research PaperA Call for Clarity in Reporting BLEU Scores