このページの本文へ

PROGRAMMING Googleはなぜ的確に探せるのか? ― 第3回

悟空、キーワードを電光石火で切り出す

2008年12月15日 17時25分更新

清田陽司/東京大学 情報基盤センター 図書館電子化研究部門 助教

  • この記事をはてなブックマークに追加
本文印刷

 この連載の冒頭で私が書いた「グーテンベルグによる近代印刷術の発明以来の大革命といっても過言ではないでしょう」という文から、皆さんはどんなキーワードを抜き出しますか? ほとんどの方は「グーテンベルグ」「近代印刷術」「発明」「革命」といったキーワードを抜き出したと思います。では、「過言」や「による」はどうでしょう? 「そんなのキーワードじゃないよ。だいたい、そんなキーワードで探したいっていう人いないだろうし」―――おっしゃるとおりです。では、「発明」がキーワードであって、「過言」がキーワードでないと判断する基準はなんでしょうか? 「う~ん、そういわれると簡単に説明できないなぁ」

 「キーワード」とはいったい何でしょうか? 『デジタル大辞泉』(小学館)によれば、「情報検索で、検索の手掛かりとして使用する語句」とあります。言いかえれば、検索の手がかりとして使えさえすれば、どんな文字列でもキーワードと呼べることになります。「による」「でさえ」「かもしれない」といった文字列は、普通の人にとってはキーワードではないでしょうが、「日本語の言い回し」を研究対象とする言語学者にとっては重要なキーワードかもしれません。書籍の巻末に整然と並んだ巻末索引のキーワードを見ていると、キーワードとはいかにも客観的なものに思えますが、実は極めて主観的なものなのです。

 きちんと動く文書検索システムを作るには、少なくとも以下の3つの条件を満たす必要があります。


1.キーワードの切り出しについての明確な手順が与えられていること

 「自然言語処理は面白い。」という文からのキーワード切り出しを考えてみましょう。「自然言語処理」を切り出す人がいれば、「自然言語」と「処理」を分けて切り出す人もいるでしょう。もしかすると「面白い」を切り出す人がいるかもしれませんね。このようにキーワードの切り出し方を人の気まぐれに任せていては、検索結果まで気まぐれになってしまいます。そこで、次のような手順を決めて、もう一度やってみることにしましょう。

・文中の名詞だけに下線を引く。
この例文では、「自然」「言語」「処理」が名詞です。「は」(助詞)「面白い」(形容詞)「。」(句点)は名詞ではありません。
・下線が連続している箇所をそれぞれひとかたまりとして取り出したものをキーワードとする。

 どうでしょうか?「自然言語処理は面白い。」と下線が引かれて、「自然言語処理」をちゃんとキーワードとして切り出せたでしょうか? このように明確な手順を決めれば、誰がやっても同じ結果が得られるようになります。

 コンピューターによる文書検索システムには、誰がプログラムを書いても同じ結果が得られる明確なキーワード切り出し手順が必要です。このような「明確な手順」のことを、コンピューターの世界ではアルゴリズムと呼びます。


2.文書と検索要求の両方に同じキーワード切り出しのアルゴリズムが適用できること

 「自然言語処理は面白い。」という文を含む文書から、「自然言語処理」というキーワードが切り出せているとします。ここで、文書検索システムのボックスに「自然言語処理は」と入力したとしましょう(この文字列のことを一般に「検索要求」と呼んでいます)。もし、検索要求の文字列から切り出されたキーワードが「自然言語」と「処理」に分かれていたらどうなるでしょうか? 「自然言語処理は面白い。」という文書が検索から漏れてしまいますね。このような検索漏れは、文書と検索要求に同じキーワード切り出しアルゴリズムを適用すれば防げます。


3.アルゴリズムによって切り出された文字列が「検索の手掛かり」として使えること

 これは当たり前ですよね。もし「検索の手掛かり」として使えなければ、それは「キーワード」とは呼べません。

 さて、この3つの条件を満たす「キーワード切り出しのアルゴリズム」は存在するのでしょうか? パソコンのメモリーに載っている文書からキーワードを切り出す手順を各自で考えてみてください。おそらく、ほとんどの人が「難しい!」と感じたと思います。だいいち、「名詞」とか「形容詞」をパソコンが判断する方法が分かりませんよね。

この記事の編集者は以下の記事をオススメしています

ASCII.jp会員サービス 週刊Web Professional登録

HTMLリファレンス誘導バナー

CSSリファレンスサイト誘導バナー

Webディレクター江口明日香が行く

ランキング