Wolfram|Alpha や Bing のすごくないがゆえにすごいところ

最近次世代「検索」エンジンが登場しつつあるが、彼らのすごいところは検索結果ではない。たとえば Mathematica を作った会社が Wolfram|Alpha や最近検索に異様に力を入れている MicrosoftBing を開発中だとアナウンスされたが、彼らが真にすごいのは、現在の自然言語処理(や情報検索などの周辺技術)の精度では恐らく不可能だと思えるようなことをやろうとしている、もしくはやっているところだと思う。

というのも、一番広く使われているであろう自然言語処理技術は形態素解析(単語分かち書き、と言ったほうがいいのかもしれない)であろうが、これは現在99%くらいの精度になっていて、すでに人間がやるより遙かに高精度で行えるのだが、これだけ高い精度が出せるのは新聞記事を相手にしたときだけであって、それは新聞記事をコーパスとして用いる機械学習により形態素解析器を作っているので仕方ない面はあるが、医療分野や特許分野のように専門分野になったりウェブ文書を相手にしたりすると、一気に精度が落ち込むのは広く知られた事実である。大規模なコーパスがある状況で、実際に適用したい分野がそのコーパスと違う状況でも精度を落とさず解析できるようにしましょう、というのは自然言語処理の言葉では分野適応というのだが、これもここ数年研究が始まったばかりで、機械翻訳の現状を見ると「こうすれば万事解決」というようなものではない。(もっとも、ある分野を解析したいとして、数千語辞書を作れば精度95%くらいには上がるそうなので、現実的には地道に辞書を作ればいい、という話でもある)

実はそこから上はなかなか難しい領域が横たわっていて、典型的には Wolfram|Alpha や Bing が挑戦しようとしている「情報抽出」(ある商品の型番がいくつで価格がいくらで評価がよいとか悪いとかいうのを見せたい)という領域は、自然言語処理的にはかなり上のレイヤーになっていて、下のレイヤーのどこかで解析を間違えると誤りが上に伝播してしまってほとんど使い物にならない、といったことが往々にしてある。(だから研究論文を書くときは下のレイヤーまでは人手でつけた正解を使ったりする。下のレイヤーまで含めて全部自動解析した結果を用いると「いちばん数が多い誤りは形態素解析の誤りによるものである」ばかりになったりするので……) 日本語の構文解析(係り受け解析)は精度9割と言われているが、これは文節間の「かかる・かからない」関係の精度が9割であり、1文には普通何文節も含まれているので、どこか1箇所間違えたら間違いだとカウントすると、文正解率は5割程度というのが現状であり、これは日本語だから特別難しいということではなく、どの言語を取っても大体こんなもののようだ。

すると、自然言語処理を使ったアプリケーションを作りたい人は、形態素解析だけを使うのでなければ、ほとんどの場合精度5割でしか正しい結果を返してくれないツールの上にアプリケーションを作らなければならない、ということになる。Wolfram|Alpha や Bing がすごい(特に Wolfram|Alpha)のは、恐らく使っている自然言語処理の要素技術は他と変わらないはずなのに、あれだけ正しそうに見える結果を返してくれるところである。

誤解のないように一言補足しておくと、彼らも自然言語処理技術だけでやっているわけではなく、たとえば HTML (XML) のタグの構造を使ったり、Wikipedia から知識を抽出したり(Microsoft だったら検索ログの情報を使ったり)、ああいう「検索」エンジンを作るには自然言語以外の情報源も使って高精度・高カバー率で解析を行う必要があるし、実際そうしているだろう。ブログがこれだけ使われるようになったりしているので、自動解析の精度は低いながら、超大規模のウェブデータから大量の知識を獲得してカバー率を上げ、それ以外は信頼のおけるソースから精度高く情報を抽出して補う、といった感じ。確かに自然言語処理の技術も基礎技術として使われているのだが、それだけではとても追い着かない。

全部が全部機械的にやっているわけではなく、ある程度人手が入っているのかもしれないし、実際人手が入っているのだろうが、それでも検索エンジンの次の方向として可視化に力を入れるというのは正しいと思うし、そういう意味では研究のレベルでここ数年試行錯誤されてきたところが実用段階に来ているということなのかもしれない。こんなに速いサイクルで開発が研究に追い着かれると、研究している人たちは大変だろうなぁ、と思ったりもする(あまり他人事ではないが……)。逆に言うと、あえて研究と開発を分ける意味もあまりないだろうし……。

彼らがなにをどうしているのかは分からないが、情報の見せ方としてグラフや表で出したり推薦エンジンのような形で知りたそうな情報を見せてあげたりするのは、ある意味通常の検索エンジンの発展の方向性だと思う。人手によるデータの作成と機械的な抽出のいいとこどり(ちゃんとバランスを取る)をしていくのが現実的なところなのではないかな、と思う。これだけ大規模で多種多様なデータは人間では到底使い切れない(ウェブページはもう人間1人が読める分量を遙かに超えてしまった)ので、計算機にやらせるというのがとてもマッチしていると思う。計算機は黙っていても黙々と読んでくれるし、並列分散で読ませても問題ないし(人間だったら複数人が読んだら知識は共有されない)。やったらおもしろそうなことはいろいろあるので、学部生の人も自然言語処理とか機械学習とかデータマイニングを大学院から始めてみても楽しめるんじゃないかな?

さて、本日の勉強会では COLING 2008 (自然言語処理のトップクラスの国際会議)のベストペーパー

  • MacCartney, Bill and Manning, Christopher D. Modeling Semantic Containment and Exclusion in Natural Language Inference. COLING-2008.

を読んだのだが、こういう(自然言語のみに依存する)推論エンジンが使えそうなところまでもう来つつあるというのもすごい。最近 Markov Logic Network という手法が登場した(katsumasa-y くんが研究している)ようで、これまでは論理的推論は真か偽か計算するというが主流だった(もちろんファジー論理とか多値論理とかあったが、自然言語の文脈では見かけないような?)のだが、確率的な推論の研究が(計算機の性能が向上したり、近似計算により高速化できるようになったりして)盛んになりつつあり、またパラダイムが変わるかもなぁという予感を感じさせつつある。おもしろくなってきた。