KNBコーパスで正答率を測る
せっかく係り受け解析器を作ったので、やはり精度がどうなってるか気になる。ということで、測ってみることにした。
論文とか見るとだいたい皆さん京大コーパスというのを使ってるようだ。なのでこれを調べてみる。…えーと、毎日新聞CDROMてのがいるのか。これはどこで買えば… 12まん6せんえん!?誰が買うねんそんなもん。というわけで即却下。
なんか別のものがないか探してみると、KNBコーパスというのがあり、これは本文も入ってるらしい。というのでこちらに決定。ググったところ、cabocha & KNBコーパスをやってみた、という人もいた。 http://lucene.jugem.jp ただしこちらは文節区切りと固有表現が対象で、係り受けではないみたい。
KNBコーパス http://nlp.ist.i.kyoto-u.ac.jp/kuntt/KNBC_v1.0_090925.tar.bz2
でやってみたのだが、困ったのは、コーパスの文節区切りとcabochaのそれとが食い違うケースがけっこうあること。文節が違うと係り受けの比較が意味をなさなくなってしまう。でいろいろ考えて、大半のケースはうまく処理できるように工夫してみた。何をやったか、どんな比較をしたかがわかるように、これに使ったツールも公開しておく。
https://github.com/yu-hatva/cab_on_knbc
「大半のケース」と書いたが、それでも扱いきれないケースもあるので、その場合はしょうがないので比較から除いた。約4000文のうち、150文ほどがこれで除かれた。
残りの文に対して係り受けを走らせ、各文節に対して係り先が正答か誤答かを決め、正答・誤答それぞれの文節数を数えた。文最後2つの文節は常に答えが決まってるのだが、このうち最後から2番めの文節は数え、最後の文節は数えていない。どうすべきか微妙なところだが、まあ(私のここでの)目的は cabocha と係ろっとの比較なので、とりあえず同じ基準でありさえすればいいだろう、と思っている。他のデータと比較するときは要注意。
cabocha(v0.64, IPAdic)と係ろっと双方に対してこれを行った。結果:
正答 誤答 正答率
cabocha 17843 3532 83.4%
係ろっと 16129 5246 75.4%
8%差か。まだまだcabochaには及ばないけど、まあかなりやっつけで作ったにしては上出来ではないかと思う。ちゃんと項目考えて学習すれば追いつけそう…だろうか?
10/23 訂正:すみません、スクリプトに一部バグがあって計算が違っており、正答・誤答数が間違えてました。cabochaがコーパスより余分に文節区切るケースの正答がミスってました。
以下に訂正します:
正答 誤答 正答率
cabocha 18472 2903 86.4%
係ろっと 16690 4685 78.0%
10/28 再度訂正:チェック対象の文節を一部減らします。cabochaの方が文節を細かく区切っている場合は、そこへ係るべき文節をチェックしないようにしました(コーパスだけからは正解がわからないので)。これにより約700文節が対象から外れました。新しい結果は以下になります:
正答 誤答 正答率
cabocha 18113 2561 87.6%
係ろっと 16298 4376 78.8%
Githubの方も対応して修正しておきました。