未知語処理も自然言語処理における重要なコンポーネント

久々に優雅な午前中を過ごす。

午後から修士論文の再発表練習。teruaki-o くんと kodai-t くん。もう再々発表練習する時間はないが、2人ともここまでよくがんばったと思うので、あとは残り少し乗り切ってほしい。

夕方、英語誤り訂正ミーティング。前置詞訂正に関しては [twitter:@shirayu] くんが順調に進めてくれているようだ。最低なんらかの結果は出せるそう、ということで一安心。

[twitter:@keiskS] くんの話は、データ (アノテーション) がどういうものか分かっていなかったので見当違いのコメントをしていたかもしれないが、説明を受けてようやく理解。入力が未知語であるか既知語であるかはけっこう重要なので、辞書引きでできることなら MeCab でやれば簡単だし、辞書引きでできないなら MeCab に手を入れるか自分で書くかのトレードオフを考えたほうがいいし、いま解くべき問題がどちらかってことかな。

そういえば去年の松本研の修士の卒業生だった atsush-id くんが取り組んでいた問題は、「キモい」のように読みが分かっているフィルタリング対象の単語が、ウェブ掲示板 (たとえば学校の「裏サイト」と呼ばれるもの) でフィルタにかからないように「肝い」と書かれたりするそうなので、これをなんとかフィルタリングしたい、というものだった。問題解決のアイデアとしては、フィルタリングしたい単語リストは手許にあるので、入力を全部 kakasi で読みに直し、単語リストとの照合を行い、マッチする文字列があれば単語候補として MeCab のユーザ辞書に仮登録。最終的な結果は仮登録したユーザ辞書をシステム辞書に追加して mecab で再解析し、出てきたベストなパスを解析結果とする、という方向性。

このようにするのが唯一の方法ではないが (たとえば解析対象の文書集合があらかじめ決まっているなら、入力文ごとに処理しなくても、可能な表記を全部枚挙することも可能だと思われる。そうすると、解析のとき候補を展開してユーザ辞書に登録するステップがないので、高速に動作するはず)、未知語対策など候補が全展開できないとすると、なんらかの方法で処理しないといけない。

まあ、ウェブ規模のデータがあればあらゆる表記揺れ (スペルミスを含む) が登場する、という立場もありかと思うが、学習者のデータは恐らく想定外の入力がいろいろとあるので……(実例を見るとネイティブでは「意味は分かるけどその発想はなかった!」というのが多々 (^^;)

ミーティングも、松本先生がいないと、なんとなく進捗報告がグダグダな方向に行きそうなのだが、やっぱりスタッフが2人いるのと違うな〜。来週はちゃんと出てもらおう……。