ブートストラップによるパターン抽出

午後は情報検索に関するトーク。shima さんたちのチームの話が気になったのでメモ。

この論文、言語横断検索のためにいろいろなことをやっているのだが、自分が気になったのはクエリ展開(query expansion)の部分。クエリ展開とはたとえば「カーネギーメロン大学」と「CMU」が同義語であった場合、「カーネギーメロン大学」と入れて「CMU」のページも検索してくれると嬉しいよね、という話で、それを自動的に展開してあげましょう、という内容なのだが、この同義語・言い換えをどう見つけるか、が鍵である。そこで、彼らのチームはブートストラップ(Espresso)という手法を用いてこれをすることにした。ブートストラップを使うと、まず「カーネギーメロン大学」という同義語(インスタンスという)からスタートし、コーパスを検索してこれにマッチするパターンを抽出する。そして、そのパターンと元々のインスタンスとの関連性を考慮してパターンをランキングして、逆に抽出されたパターンにマッチするインスタンスを獲得する、という手法。このパターン抽出→インスタンス獲得というステップは反復的に行うことができるので、最初数個しかインスタンスを与えなくても、高精度なパターンを抽出し、大量のインスタンスを獲得できる、という利点がある。

さて、彼らの手法はまず「カーネギーメロン大学」から出発してブートストラップによりパターンを抽出し、次に抽出されたパターンを用いて同義語候補を列挙してクエリ展開に用いる、というもの。自分の疑問は「そもそもブートストラップを使うなら、1ステップ回すごとにインスタンスが獲得できるので、そのインスタンスを使えばいいのでは?」というものだったが、質問してみると、どうも毎回オンラインでブートストラップを回すと計算量的に重いので、オフラインで計算しておくためにパターン発見の手法としてブートストラップを用いた、というものらしい。自分の知る限りパターン抽出のためにブートストラップを使った研究はなく、だいたい獲得するインスタンスのみに興味があってパターンは捨ててしまうのだが、パターン抽出にも使えるんじゃないの? と思っていただけに、先を越された! と思った(笑) 

もっと言うと、本当はパターンとインスタンスは相補的なので、最初に与えるのはインスタンスではなくパターンでもいいのだが、人間の言語的な構造のせいか、それとも世界がそうなっているせいか、インスタンスを認識するほうがパターンを認識するより人間には楽なので(あとパターンはどうパターンを作成するかといった問題と、使用するコーパス影響を強く受けるといった問題がある)、インスタンスを与えるほうが楽だからそうしている、という事情があるのだと思う。このあたり理論的にクリアになりそうなのだが、アイデア止まり。

あとやはり日本語のクエリに関する研究だと萩原さんの研究が思い浮かぶかな? どこか論文が出ると参照しやすいのだけど……。

割といろいろ考えるところあって有意義な2日間であった。学生は参加費無料(一般の人だと3万くらい取られるらしいが……)なので、東京近辺でこのあたり自然言語処理や情報検索に興味ある人は次回出てみてはいかが? 雰囲気は shima さんのページの写真見るとよく分かるかも。

奈良に帰ってきてほっと一息。また年末帰るけど、奈良は落ち着くなぁ〜