共参照解析の評価指標
以前読んだ共参照解析の話をはじめ最近の話で評価に用いられるconll 2012 shared taskの評価指標であるMUC,, 辺りが馴染みがなかったので 自然言語処理シリーズの文脈解析を片手に調べた3.3節のメモ。この辺全く詳しくないのでなんか間違いがあるかも。
まず,多くの場合評価は同一エンティティを指す言及の集合に対して行われる。 個々の先行詞-言及のペアについてPrecision/Recallを出す方法も出来なくはないが,それだと例えば正解が であった時,システムが というリンクを推定した場合と というリンクを推定した場合で、どちらもの3つを同じエンティティに対する言及の集合だと考えているにも関わらず結果が異なってしまう。
MUC (Message Understanding Conference)
上記の問題を解決するために,MUCでは「正解データのそれぞれの集合を生成するのに必要となるリンクのうちいくつをシステムが生成したか」でRecallを,逆に「システムが生成したそれぞれの集合を生成するのに必要となるリンクのうちいくつが正解データに含まれていたか」でPrecisionを評価する。 p97の図が分かりやすい。
具体的にどう計算するかというと
は正解データ / システム出力のi番目のエンティティに関する集合の要素(言及)数, はの要素をシステム出力における集合ごとにまとめたもの, はの要素を正解データにおける集合ごとにまとめたもの(別々のクラスタだとみなした数),は正解データ / システム出力におけるエンティティの数。
Recallを例に式の意味を説明すると,個の要素があった時にそれら全てを繋いだグラフ(正解データ)を作るのに必要なエッジの数が 本 (分母)で,そこからエッジが1本減るごとに細かいグラフに分かれる(分子)ので,逆に言うとグラフがどれだけ細かく分かれてしまっているかで足りないエッジの数が計算出来るということ。
しかしMUCはなるべく多くのリンクを出力したほうが良いスコアになりがちであったり,例えば正解データがであったとして,システムの出力とを比べた時に本来異なる2つのエンティティを同一の集合で考えてしまっている前者と,関係ないリンク()が1つ紛れ込んでいるだけでそれ以外はほぼ完璧な後者が同じスコアになるなど問題点もあるため,やCEATが提案されたらしい。
(B-CUBED)
での計算式は以下の通り。
Recallを例にとると,それぞれのエンティティについて正解データでもシステムの出力でも同一の集合に含まれる言及の割合を計算( まで)して各要素ごとのRecallを出し,その平均を取って全体のRecallとしている。*1
CEAF
MUCやB-CUBEDは正解データとシステム出力それぞれの集合だけが与えられればそれぞれの集合間の対応を気にせず*2に計算できるタイプの評価指標だったが、 CEAFはスコア計算時にスコアがよくなるように対応付けを取った上で計算をするタイプ。*3 やなどいくつかバリエーションがある。
はそれぞれのペアのRecall / Precisionの重み付き平均を取るだけ。 は
類似度関数 を用いて, 全ペアの総和を で割ったものがRecall, で割ったものがPrecision となる。