検索エンジンにおけるキーワードの重み付け

最近業務で全文検索を勉強する機会があり、Apache Solrについて調べていた。”全文検索って何?”と思う方は、googleやYahooでの検索を思い浮かべてもらえれば良いかなと。

全文検索エンジンは端的に言えば、沢山の文書から特定の文字列を見つけてくるもの.

Apache Solrはそれを実現させるためのソフトウェアの一つであり、海外だとホワイトハウス、Netflix、Apple、Disney、国内であればクックパッドなどが利用している。

GoogleやYahooが何を使って、あの検索エンジンを構築しているのかは知らないけど、根本的な考え方や仕組みは似ていると思う。もしかしたら自作かも…

そんな全文検索エンジン(Apache Solr)を参考書で勉強時、”検索結果のランキング時における単語の重み付け”の説明箇所が面白かったので、ちょっと紹介したい。ブログ書く人であれば、キーワード選定の大切さは知っていると思うけど、そこらへんに通ずる話。

スポンサーリンク

利用者に本当に必要とされる検索エンジンとは!?

普段の生活で、何か知りたいと思ったらGoogleで検索すると思うけど、検索キーワードにマッチする情報が大量に表示された場合、ヒットしたwebページをいちいち確認するのは非常に労力が必要。求める情報に辿りつく前に諦める人も多いんじゃないでしょうか。

現代的な検索エンジン(例えばGoogleとか)は、”ユーザーが本当に求める情報を出来るだけ、検索結果の上位に来るように、キーワードにマッチしたドキュメントの順序付けを行うランキングの仕組み”を持っているらしい。しかも高速で表示出来るように。

本当に求める情報が検索結果の上位に表示される検索エンジンであれば、誰でも使いたいし、その結果検索エンジンに色んな人が集まり、ビジネスチャンス(広告ビジネスとか)が生まれるので、Googleは血眼になって良質な検索エンジンを作り続けている。

お金払えばヘボい記事でも検索上位に表示されるみたいなので、何とも言えんけど、とにかくGoogleは利用者に最も信頼されている検索エンジンを構築している。

基本的な検索結果のランキングの考え方

検索結果ランキングの事前処理として、検索対象の全ドキュメントに出現する全ての単語について、あらかじめ重み(単語の重要度)を付けている。その単語の重みを計算するには色んな手法があるようだが、一般的には以下2つの要素を考慮するらしい↓↓↓

  • ドキュメント内での単語の出現回数
  • 検索対象(全ドキュメント)で、単語が出現するドキュメント数

あくまでApache Solrの参考書に書かれていた事なので、全てGoogleに当てはまるかは不明だし、Googleはより複雑なアルゴリズムで検索結果のランキングをしてるんだろうけど…

ドキュメント内での単語の出現回数

一点目は分かりやすいが、例えばドキュメントAに「明石家さんま」という単語が5回、「タモリ」という単語が1回出現する場合、ドキュメントAは「明石家さんま」について情報が多く書かれている可能性が高く、ドキュメントAを特徴づける単語であると考えられる。

併せて「ビートたけし」が1回出現する場合、「BIG3」の歴史について書いているかもしれないし、「大竹しのぶ」が1回出現する場合には、「離婚」「男女7人夏物語」について書かれた記事かもしれない。

とにかく単語の出現回数は重要な指標の一つとなる。

単語が出現するドキュメント数

全ドキュメント中で、どのくらいの頻度で出現するかも大切な指標であり、全ドキュメント中で頻繁に出現する単語は、あるドキュメントを特徴づけるとは言えない。

例えば「お笑い芸人」に関するドキュメント集合の中で「お笑い芸人」という単語は多くのドキュメント中で、何度も出現する可能性が高いので、この単語がドキュメントを特徴づける力は弱くなる。うぃきぺでぃあとかは例外かもしれんけど…

より具体的な単語、例えば「明石家さんま」という単語であれば「お笑い芸人」よりも明確な固有名詞なので重みもある。もっと限定すれば、明石家さんまは、ずーーーっと売れっ子の芸人さんなので、芸歴・人気に比例してWeb上のドキュメント数も多くなり、出現回数も多い。

しかし「ハリウッドザコシショウ」になると、全ドキュメント中の出現回数も随分少ない。このように少数のドキュメントにだけ出現する単語には、大きな重みが割り当てられる。

単語の重み計算について

最終的な単語の重みとして、2つの観点を掛け合わせたものが採用される。実際の計算式ではもっと複雑な方法(対数をとって単語出現回数の影響を抑えたり、ドキュメント長による正規化)があるらしいが、分かり易い方式で計算。

二つの観点で単語の重み付けを計算してみる↓↓↓

明石家さんま
・全ドキュメント中での出現回数:100回
・単語が出現するドキュメント数:50回
100 * 1/50 = 2

ハリウッドザコシショウ
・全ドキュメント中での出現回数:10回
・単語が出現するドキュメント数:2回
10 * 1/2 = 5

芸人としての知名度や技量は圧倒的に「明石家さんま」に軍配が上がるが、検索エンジンにおける単語の重みで比較すると「ハリウッドザコシショウ」の重みの方が大きくなるかも…

ブログのタイトルでもキーワードの重要性が説かれるが、検索エンジンの裏側では複雑な計算(単語の重みとか)が行われているようだ。

スポンサーリンク
スポンサーリンク