限られた時間ではこだわりを捨てて目標を達成することが最重要

週末はずっと雨だったが、久しぶりに晴れたので2回洗濯機を回してから出勤。ドラム式の全自動洗濯乾燥機だが、雨続きでもないと乾燥機は使っていないのである。

午前中は研究室で進捗を聞く。先行研究の手法が実装できたようで、実データで回しているが、予想通りではないとのこと。もっとデータを増やして試す、というので、ちょっと止める。こういうとき可能性は大きく分けると2つあって、

  • 手法は正しいがデータが変(性質が違うデータを使っている、あるいは前処理でおかしなことをしていう)
  • データは正しいが手法が変(バグがある、あるいは誤解して実装している)

であって、どちらを疑うか、あるいは両方疑うかなのだが、データを増やしてみる、というのは手法的にデータの分量がないと動かなさそうな手法で、かつデータを増やせば解決しそうな場合の話である。結果を見ると明らかにデータ量の問題ではないので、もしデータを疑うなら、他のデータで試す(先行研究の論文に書かれているのと性質が近いデータ)のが筋である。

まあ、これが「明らかにデータ量の問題ではない」と思えるのは、自然言語処理的なセンス(今回のケースでは、一般常識に加えて、先行研究のアルゴリズムの理解)が必要なのかもしれないが……

別件で、lucene-gosen について学生と2人で調べる。dictionary.csv という単語の生起コスト(unigram)を収めたファイルと connection.csv という単語の連接コスト(bigram)を収めたファイルを用意すればよいよいだが、connection.csv を見ると、どうもコスト以外にフィールドが3つあり、どう考えても1つ多い。これは何だ?と深追いしてみると、どうもChaSen 対応の名残りで歴史的に残っているものらしい……。そういえばChaSen は可変長マルコフモデルだった。フォーマットが分かったので、あとは大丈夫だろう。

さらに別件で、Lang-8 のデータを渡した学生から、結果が出ましたという報告を受ける。先週の火曜か水曜に JSON の生データを渡しただけなのだが、もう tomoya-m くんの先行研究(形態素解析して単語分割したものと、文字分割したものとで、フレーズベースの統計的機械翻訳を用いて誤り訂正を行う手法)相当のものが実装できたようで、びっくりする。4月に自然言語処理を始めたばかりなのだが……。

あと中国語の簡体字繁体字を変換する方法を知らなかったのだが、お手軽には opencc というツールを入れるとよいようだ。Python でも簡単にできるようだが、文字コードを変えるのとは違い、漢字も置き換わるので、漢字の変換表相当のものが必要だそうで。中国語についても教えてくれるし、このテーマもやってくれると個人的には嬉しいのだけどな〜(研究テーマについては各人で決めてもらうので、無理強いはできないけど)。

最後に学部4年生から、今日は論文を読みます、という宣言を聞く。お尻に火が点いているM2の人はともかく、夏休みはじっくり論文を読める期間だし、ここでたくさん論文を読み、勉強を含めていろいろなアルゴリズムを実装したりすると(論文に書かれているようなものでなくても、プログラミングコンテスト的なものでもいいので)、夏休み明けに研究を進めるのが楽になっていると思うので、どしどしチャレンジしてほしい。

お昼を挟んで自分はとあるタスクのサブタスクとして分類器を実装する。最初 CRF で作るのかな?と思ったが、時間がないので SVM でいいかなぁ、と逡巡していて、実際に SGML  からデータを抽出してみて、タグを確認したところ、そもそもルールベースでいいのでは、と思い直してルールベースで書いたら、ほとんど完璧に分類できた……(分類に失敗しているところは、恐らくタグ付けのミス)。まあ、タスク全体として難しいのは分類の部分ではないし、そもそもこのサブタスクに実用的な意味があるのか疑問だが、深く考えないことにする。

午後は「情報理論」の再試験。追試験は公的な理由が必要なので正式に届け出ないといけないようだが、再試験は教員判断で自由にできるらしい。インターンシップの面接を受けたいので、ということで再試験を許可したが、同じ条件だと正規の時間に受ける人と不公平なので、正規の時間に受けるなら資料の持ち込み可だが、再試験は持ち込み不可、という条件である。

終了後、インターンの話を聞いたりする。うちの学生も、もっとこうやって挑戦してくれる人が増えるといいなぁ。授業でもちょくちょく紹介しようと思うので、学部生を対象としたインターンの募集がある企業の方は、連絡いただければ(笑)

研究室で今後の研究について聞いたりする。いつも悩むのだが、どこまで自分で研究テーマを選んでもらえばいいんだろうか? 細かく指示されたほうが楽な学生もいるだろうが(教員としてもやきもきしなくていいし、うまく回ると論文量産できるのかもしれないが)、自分はあまり指示されたくない性格なので、企業との共同研究などでいつまでに何をやるかが決まっている場合以外は、放任気味なのである(逆に言うと、あまりこれといってやりたいことが浮かばない人は、共同研究をやってくれるとお互いハッピーだけど)。〆切が近くなってからもう間に合わないよ、と尻を叩くより、早め早めに結果や方向を細かく確認するほうが、トータルでは効率的だということも分かっているのだが、これも自分は苦手……。

帰り際、毎日新聞コーパスから本文を抽出する方法について聞かれ、BSD grepGNU grep の違いを説明するのに BSD と System V の歴史を話したりしたが、説明している間にプログラムを書いて抽出した結果を渡したほうが早いし、そうしたほうがいいのかもしれない。

あと、なんだか Mac でやらなくてもいいことを Mac でやろうとして時間を使ったりする人が多いのだが、Mac の環境は特殊なので、Linux でやればできるなら Linux でやればいいんじゃ? もちろん、時間があるなら深追いしてみるのも勉強になるだろうけど、時間が限られているなら、本来やるべきタスクをやったほうがいいと思う。