Python
自然言語処理

自然言語処理における評価法のまとめ

はじめに

自然言語処理においては、「翻訳」「要約」「対話」「質問応答」など様々な難しいタスクが存在しています。どのタスクにも共通して問題になってくるのが、生成した解答の評価方法についてです。

例えば、翻訳タスクで「猫がマットの上にいます」を英語に訳す際、「The cat is on the mat」も「There is a cat on the mat」も同様に上手く訳しているように思えますが、これらを上手く評価することは簡単ではなさそうです。

そのため、自然言語処理では生成した文章に対して様々な評価方法が考案されており、以下にそれらを紹介していきます。

BLEU

言わずと知れたBilingual Evaluation Understudy (BLUEではないことに注意)
BLEU: a Method for Automatic Evaluation of Machine Translation

翻訳タスクでよく使われる評価方法です。人間が翻訳した文章に似ていれば似ているほど、機械が生成した文は正しそうだという前提に基づいています。
$ BLEU = e^{(1-r/c)} exp(\sum^{N}_{n=1}w_{n}logp_{n} )$

まず、BLEUスコアの式は以上のようになっています。ここで
$ r $ は人間が翻訳した文の長さ
$ c $ は機械が翻訳した文の長さ
$ w_{n} $は適当な重み
$ p_{n} $はmodified n-gram precisionsです

以下では、機械生成文をCandidate、人間が生成した文をReferenceと呼んでいます

modified n-gram precision

まず単なるprecisionでは、生成文の良さを上手く評価できないことはすぐにわかります。例えば、
Candidate: the the the the the the the
に対して
Reference: The cat is on the mat
の場合、Candidateの全単語(theのみですが)は、全てReferenceに含まれているのでprecisionは$ 7/7 = 1 $です。しかし、Candidateが明らかに正しい翻訳文でないのは直感的にわかります。
そこでこのmodified n-gram precisionが本論文で提案されています。この手法は単純で、precisionを計算するときにReference中の単語は一回使うともう使えないという制約を加えているのみです。先ほどの例だと、Referenceのtheは一度使われるともう無いものと見なされるのでmodified precisionは$ 1/7 $になります。これをn-gramに対して行います。

brevity penalty

しかし、modified n-gram precisionだけでは評価方法として十分ではありません。そこで、precisionに対するrecallのような概念を取り入れます。ReferenceよりCandidateのほうが長いパターンのときはすでにmodified precisionでペナルティが課されるのでここではそれは無視し、CandidateよりReferenceの方が長いパターンに対してペナルティを課します。それがBLEU式の$ e^{(1-r/c)} $です。これをペナルティとしていれておくことで、Candidateが単に短いためにmodified precisionが高くなり、BLEUが高くなるというのを防いでいます。

RE score

作成中です…

参考文献

BLEU: a Method for Automatic Evaluation of Machine Translation http://delivery.acm.org/10.1145/1080000/1073135/p311-papineni.pdf?ip=60.71.111.57&id=1073135&acc=OPEN&key=4D4702B0C3E38B35%2E4D4702B0C3E38B35%2E4D4702B0C3E38B35%2E6D218144511F3437&CFID=842433085&CFTOKEN=70833176&__acm__=1513773224_878c065403b6588eedd7ba928001a76a