done is better than perfect

自分が学んだことや、作成したプログラムの記事を書きます。

今研究していること

NTCIR-10 RITE2タスクへの参加

概要

2つの文章対が与えられて,一方の文章から他方の文章を含意するか否かを判定するといった課題です.

前回のタスクでの成果

24の参加チーム中,一番成果を挙げたチームで精度は58%でした.与えられた文章から

  • 編集距離
  • ngram比較
  • 最長共通部分列比較
  • なんかを特徴量として抽出して,SVMで学習させるといった手法でした.

    問題点

    表層的な特徴量というのは,機械的に処理しやすいものではあるが,やはり意味解析をできているとは言いがたい気がします.例えば

  • 私は佐藤太郎です
  • 私は佐藤二朗です
  • なんていう文章対が出た時に,表層的な変化としては一文字の置換のみなので,文章類似度は高いと言えるが,意味としては全く異なるものとなる.

    対策

    やはり,日本語の文章を論理式に落とし込んで計算することができればベストなんですが・・・

    調べてみると,1980年代にはPrologなんかの論理型言語で自然言語処理を行うのが一般的だったみたいだけど,何故か最近だとその手の論文が全然なかったりする.

    枯れた技術なんでしょうか?

    現状

    現時点では,前回最高精度を出したチームの手法を参考に作り上げた認識機で精度52.4%でした.

    細かいところでの文章のノーマライズ(日時の表記を統一したりなど)を行なっていないので,まあこんなものかと.

    結構ノーマライズの作業が一番めんどくさかったりする・・・orz

    また,予め用意されていたMecab + Cabocha + unidicで構文解析されたデータを元に係り受け解析の結果を用いた認識機では精度57.7%でした.

    機械学習した認識機より制度が高いとは言え,判別できなかったペアが611個中280個もあるんで,改善の余地がたくさんありそう.

    これからについて

    自分の頭の中の整理のために,自分が行なっている手法をなるべく丁寧にこのブログで書きたいと思います.