大規模テキスト処理を支える形態素解析技術(工藤拓氏・Google)

第80回知識ベースシステム研究会を開催したが,二日間で58名の方々に参加して頂き,積極的に議論に加わって頂いた.この場を借りて,参加してくれた方々に感謝したい.大変遅くなった(爆)が,Google工藤拓氏による招待講演「大規模テキスト処理を支える形態素解析技術」の概要を,このブログで報告しておきたい.工藤氏の専門分野は統計的自然言語処理機械学習であるが,日本語形態素解析エンジンMeCabの開発者であり,他にも自然言語処理関連の有益なツールや,Webベースの日本語入力を可能にするAjax IMEのようなユニークなサービスを提供しているなど,時代をリードする研究開発者の一人である.彼の活動に興味があれば,彼のブログ「きまぐれ日記」は必見だろう.
なお,当日は弊社側の不手際で,予定していた工藤氏の重要なデモをおこなうことができなかった.弊社はネットワーク会社であるにもかかわらず,ネットワーク接続をまともに提供できなかったのは,まさに「紺屋の白袴」であり「汗顔の至り」である.この場を借りて,参加者の皆様に心からお詫びしたい.
また,残念ながら当日発表に用いた資料は公開できないとのことだが,元になった資料が別途JATAから公開されている.残念ながら当日参加できなかった人は,この資料を参考にして頂きたい.

さて,今回の講演は,前半の形態素解析の技術に関する学術寄りの話と,後半のMeCabを汎用テキスト処理ツールとして使う開発寄りの話の二部構成であった.形態素解析の技術に関しては,彼の出身研究室である松本研では,松本教授が作られたというPrologによるプロトタイプから,ChasenMeCabなどの実用に耐えるプログラムなど多くの実装が存在し,まさに日本語形態素解析の歴史そのものであると言える.歴史的には,1980年代はヒューリスティクスに基づいていた時代(例,kakasi),1990年代始めは最小コスト法(Viterbiアルゴリズム)の時代(例,juman),1990年代後半は統計処理の時代で,ChaSen隠れマルコフモデル(HMM, Hidden Markov Model)を,MeCabがCRF(Conditional Random Fields)を用いている.この違いは,HMMは同時確率に基づくので状態が一つしか持てないのに対して,CRFは条件付き確率に基づくので,状態を複数持てることらしい.一言で言えば,HMMは形態素解析を間接的に解いていて,CRFは直接的に解いていることに相当するそうである.
当日は工藤氏からは詳しくは説明されなかったが,MeCabには岡本隆史氏によるJavaへの移植版Sen(と書いて「ちひろ」と読む(笑))が存在する.なお,この改良・派生版としてGoSenがあるが,Senの次期バージョンで統合される予定らしい.
本講演の冒頭で,「MeCab形態素解析器以外の目的に使っているか?」という質問がおこなわれた(ちなみに,誰も挙手しなかった)ように,工藤氏はMeCabを汎用テキスト処理ツールとして考えて貰いたいようだ.応用例としては,はてなキーワードのように自動的にリンクを張る機能,T9風の予測変換,子音だけによる日本語入力(例えば,東大の田中久美子准教授の研究が参考になるかもしれない),ルー語変換,辞書の素性を活用する例などが,デモと共に紹介された.このデモの中には,残念ながら実用には耐えないものもあったが,有益なアルゴリズムを実装したソフトウェアを汎用に実装すれば,さまざまな分野に応用できるという可能性を示していた.
なお,質疑応答に関しては,みなさん遠慮しているのか質問をされる人が少なく,どうも私の一人舞台となった感がある(苦笑)ここで,その質問のうち,覚えているものをまとめておこう.

  • MeCabがトリプルライセンスになったのは,Apple Computerからの要求であったと,エンジニアの木田泰夫氏(Mac OS Xことえり,日本語形態素解析エンジン,ヒラギノフォントなどの開発エンジニア)から聞いているが,一体どこに使われているのか?」→「知らない」そこで,木田氏に突撃取材を試みたところ,「MeCabはSpotlight用(!)の日本語と中国語(!!)の解析に使用している.実は,まだ工藤さんには言ってない(!!!)ので,ブログは言った後に書いてね(←義兄ながら本当にひどい奴だ(苦笑)).」ということであった.そう言えば,以前に「工藤さんは凄いプログラマだ.MeCabはアップルで作った日本語形態素解析エンジンより,遙かに素晴らしい.」とベタ褒めしていたので,自社のコードから乗り換えたのかもしれない.
  • Mac OS X 10.5では,入力された日本語ユーザ名のローマ字表記を用いてホストの識別子を自動生成するために,どうも日本語形態素解析を利用しているようである.このような使い方というのは,よくあるのか?」→「あまり聞かない」ただ,日本人にとって理解しやすい識別子を,どんな文字でも受け付けるように仕様や実装を変更する(例えば国際化ドメイン的アプローチ…これは非常にコストと時間が掛かる)のではなく,日本語をローマ字変換することで実現するのは,妥当で便利な方法だと思う.
  • AJAX IMEはどのようなアーキテクチャになっているのか?」→「説明しようと思っていたけど,ネットワークが繋がらないから…」すまない(爆)…ただ,ということは,どこかネットワークから見えるところにアーキテクチャ図か説明はあるのかな?(←聞いておかねば…→追記:彼の回答をまとめてみた
  • AJAX IMEのユーザ操作履歴は何に使っているのか?」→「まだ使っていない.」ただ,ユーザがしっかり付いているようなので,結構なログは貯まるはずなので,そのうち工藤氏ならではの有益な使い方をしてくれることを期待したい.
  • 大規模日本語n-gramデータを公開した経緯は?」→「2007年3月にある大学の先生のところに伺って雑談していた時にそういう話になり,急遽言語処理学会の全国大会で特別セッションをすることになった.」まさか,そんな急に進んだ話だとは思わなかった.
  • 「日本語n-gramデータの作成方法は?どこが大変だったのか?」→「特に大変ではなかった.Googleではサードパーティのライブラリを置けるディレクトリがあるので,そこにMeCabのプログラムと辞書をインストールしておいて,あとはMapReduceのプログラムを書いてGoogleの巨大な計算機クラスタで処理した.約一日ぐらいで,日本語形態素解析そのものには,あまり時間が掛かっていない.」(詳しくはGoogle Japanのオフィシャルブログの記事を見て頂きたい)実は,講演の冒頭で「講演名に「大規模テキスト処理を支える」と付いていますが,今日はあまり関係のない話をします.」と言っていたのだが,ここで私はようやく自分の勘違いに気が付いた.現在,学会に行くと,この手のテキスト処理に数日〜数十日掛かったとか,大変という話を聞くことが多いのだが,彼らにとっては何も大変じゃないのだ…そもそもスタートポイントが違うのである.当日工藤氏に聞いても知らなかったのだが,実はGoogleやIBMがアメリカの大学に大規模クラスタ環境を提供する話がある.今後,このスタートポイントが違うという点は,日米の大学のレベルや技術格差に大きな影響を与えそうだ.
  • 「新たに未知語を追加登録した辞書を使いたい場合に,今回作成したような日本語n-gramデータはそのままでは使えないと思うが,何とかならないだろうか?」→「辞書が違うと難しい.最初から作り直すしかないが,それは(工藤氏にとっては)難しくはない.」なお,MeCabには未知語処理をする機能が追加されているのだが,結局擬似単語生成をしても99%以上は無駄なので,現在は品詞だけしか推定していないそうである.

なお,工藤氏は講演中で「Webをgrepする」という印象的な表現を何度も使っていた.「現在Webを簡単にgrepできる人は限られているが,もし日本語n-gramデータの提供のように,技術の発展に役立つような有益なアイデアがあれば,前向きに検討したいので,一度相談して欲しい.」と言って頂いた.我々としても,ぜひ良いアイデアを考えて提案し,一緒に技術を発展させて行きたいと思う.
最後に,本研究会の私の幹事としての任期は四年…つまり残りは二年あり,来年も同種の特集テーマで発表を募集したり,有益な招待講演をおこなうことを予定しているので,来年も発表や聴講を検討して頂きたい.また,「こんなことやりましょうよ!」という提案も歓迎である.では,来年もよろしく!