第 4 章 超伝導 34
5.4 連想検索
歴史上の重要人物の関係を「見る」
コンピューターも人間くさくなる!?
し、本や論文を読んだりするのって、時間がかかりますよね。連想ネットワークを使えば、テキスト中に 現れる言葉同士の関係を「見る」ことが出来ます。本当はいちいちテキストを読まなければ得られない情 報を、一見でパッと見ることができる。そして、今まで資料を読んでいるだけでは見つからなかったよう な言葉と言葉の関係を発見することが出来る。特に、歴史資料の連想ネットワークなどは、今までにな かった史学研究のお手伝いさんとして、活躍しています。
また、連想ネットワークを持つことによって、人間に似た思考ができるコンピューター、すなわち人 工知能にも応用できないかと考えられています。人間は、「コーヒー」と聞いたら、そこから連想できる
「砂糖」や「ミルク」や「黒い」や「飲み物」という単語も、意識をしますよね。それこそが、「コーヒー」
を知って、理解していることの表れなのですから。連想ネットワークを使って、「コーヒーを飲みます?」
と聞かれて「砂糖はありますか?」と聞いてくるようなコンピューター。そんな人間くさいコンピュー ターを作るのにも、連想ネットワークの延長線上にあります。
私たちは、展示として、様々な文章を読み込んで、連想ネットワークを作ってみました。あなたの大好 きだったおとぎ話から、あの壮大な物語まで。その連想ネットワークを見て、触って、冒険して頂くこと が、私たちの望みです。連想の迷路を彷徨っている間に、人間から見ても思いがけない関係を見付けるこ とが出来るかと思います。
56 第5章 自然言語 うことですが、「文章の意味」を理解することは、コンピューターにとってとてつもない難題です。*10
ここでは「文章の意味」を理解することをあきらめ、別の 方法を使います。それは、文章を「たくさんのことばの入っ た容れ物」と考えて、容れ物の中身を比べる方法です。た とえば、「李(すもも)も桃も桃のうち」と「桃も李も桃のう ち」という2つの文は、どちらも全く同じ{桃、桃、李}とい うことばの集まり*11と見ることができるので、とっても似 ていると考えるのです。この立場に立てば、文章はいろい ろなことばの詰まった「ことばのかばん(Bag-of-Words)」 ということになります。
この場合には2つのかばんが全く同じ中身を持っていた ので、似ていると判断するのは簡単でした。しかしいつも
こんなにうまくいくとは限らないので、次はその場合の比較の方法を考える必要があります。
5.4.2 桃が 1 個、李が 2 個 - ベクトル
その前にことばを詰め込んだかばんの中身を、もう少し整理してみましょう。
この段階では、文章を表すかばんの中に入っていることばの「種類」と「数」以 外の情報、例えば「ことばの並び順」などはなくなっています。「種類」と「数」
は、「李も桃も桃のうち」という文の場合「李1個、桃2個」と表すことができ ますね。「李下に冠を正さず」という別の文の場合は「李1個、桃0個」となり ます。*12ここで分かりきった部分を取り去って、雰囲気を出すためにかぎ括弧か ら丸括弧に取り替えるとそれぞれ(1, 2)、(1, 0)となります。
数学ではこのように数の組を並べたとき、これを「ベクトル」と呼びます。数 字が2つ並べられているので、「2次元のベクトル」と呼ぶこともあります。本 当は文章のかばんに対応したベクトルは、一般にはとってもたくさんの数の組 になります。つまり、「多次元のベクトル」ですね。しかし以下では話を簡単にするために「桃の個数」と
「李の個数」からなる、「2次元のベクトル」だけを考えることにしましょう。2次元の場合の基本的な考 え方は、多次元の場合にもちゃんと通用します。
さて、ベクトルとは、高校の数学に登場する、向きの付いた矢印で表される、あれのことです。ベクト
*10「意味解析」と呼ばれ、とっても昔から研究され、色々な成果も上がっていますが、その応用はまだまだ限定されています。
*11このように重複を許し、順序を無視した集合を、数学ではbagと呼びます。
*12もちろん、実際には「下」や「冠」ということばや「正す」などの動詞についても考えなければいけませんが、ここでは目を つぶってください。「桃」か「李」かというのが、とっても重要な問題なのです。
付きの)長さ」と考えることができるからでした。そしてまた、数学においては、ベクトルは「比べやす い」対象として知られています。これは今の目的には好都合です。「文章から文章を連想する」という最 初の問題は、「2つのベクトルの類似度を計算する」という、何とも数学らしい問題に置き換えられたこと になります。このように、現実の問題を対応する数学の問題に書き直すことを「モデル化」と呼びます。
5.4.3 比べてみよう! - 内積と類似度
どうやって2つのベクトルを比べるのか、という説明がまだでした。でも、ここまでくれば後は簡単で す。2つのベクトルの向いている方向を比べればいいのです。別の言い方をすれば、2つの矢印の間の角 度を測ればよい、ということになります。実際の測定には、計算に便利なベクトルの「内積」を使います。
少し数式が登場しますが、我慢して下さい。
2つの2次元のベクトルv= (v1,v2)とw= (w1,w2)の内積v·wは、
v·w=v1×w1+v2×w2
と定義されます。vとwそれぞれのベクトルが長いほど内積v·wは大きくなりますが、これとは別にv とwの間の角度が小さいほど内積も大きくなるという性質を持ちます。*13従って文章の類似度を測るに は、大きさを揃えた2つのベクトルの内積を使えばよい、ということになります。
「李も桃も桃のうち」に対応するベクトル(1, 2)と「桃も李も桃のうち」に対応するベクトル(1, 2)の 場合には、2つのベクトルの内積は
(1, 2)·(1, 2) =1×1+2×2=5
*13逆に多次元のベクトルの場合には、内積を使ってベクトル間の角度を定義します。
58 第5章 自然言語 です。「李下に冠を正さず」に対応するベクトルの場合は、(1, 0)の代わりに3倍した(3, 0)を使います。
これは、文中に登場することばの総数、つまり「ベクトルの大きさ」を揃えるためです。「李も桃も桃の うち」に対応するベクトル(1, 2)との内積は
(1, 2)·(3, 0) =1×3+2×0=3
となり、「桃も李も桃のうち」の場合より小さくなります。従って、「桃も李も桃のうち」の方が、「李下 に冠を正さず」よりも「李も桃も桃のうち」に似ていると考えることができます。ごくごく簡単な例です が、内積を使って、どの文が似ているのかを測ることができました!*14
5.4.4 あれでもない、これでもない - 文書検索
類似度の話題から少し離れて、今度は「文書検索」について考えましょう。検索とは、「たくさんの物 の中から、目的の事柄を探し出すこと」です。最近ではインターネットと検索エンジンの普及で、ぐぐっ と身近な単語になりました。今では携帯からだってGoogleやYahoo!で検索することができます。
もともと検索エンジンは「ディレクトリ型」と呼ばれる、人手で整理されたデータベース内を検索する ものが主流でした。しかしインターネットの爆発的な拡大によって、あらゆるウェブサイトを人手でデー タベースに反映させることは事実上不可能になりました。そのため現在の検索エンジンでは、コンピュー ターが条件を満たす文書を自動的に探し出して表示する「ロボット型」検索エンジンや、「ロボット型」
と「ディレクトリ型」を一緒に使うものが主流になっています。こうして文書検索*15は、自然言語処理に とって格好の応用の場となりました。
5.4.5 連想検索とは?
さて、現在の検索エンジンは、「キーワード検索」を行うのが普通です。たとえば「猫」というキーワー ドで検索すると、「猫」ということばを含んだ文書が列挙されます。文書の数が多い場合は、重要そうな もの*16から順に並べられます。
しかし単純なキーワード検索では不便な状況もあります。例えばあなたが好きな作家の小説を読み尽く して、同じような作風の、別の作家の小説を読みたいとします。こんなときどんなキーワードで検索すれ ばよいでしょうか?
もちろん小説の雰囲気を代表するような、適切なキーワードがあるかもしれません。でも好きな小説を コンピューターに読ませて検索してもらえたら、とっても簡単だし便利だと思いませんか?つまり、好き な文章に「似ている」文章を検索したい、というニーズです。これは、今までベクトルと内積を使って見 てきた「連想」の応用でできそうですね。このように文章から文章への連想を行うことによって柔軟な検
*14ここで類似度を測っているのは実際には「文章」ではなく「文」ですが、「文章」の場合にもやることは変わりません。
*15ウェブサイトもハイパーテキストという特殊な「文書」です。
*16例えばGoogleでは、PageRankTMというアルゴリズムを使ってウェブサイトが重要かどうかを判断します。