コードネームは初話ユウ

自然言語処理でいろいろやってみる

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の方も対応して修正しておきました。