クエリと検索語の処理

検索エンジンにおけるクエリとは、ユーザーが検索エンジンに対して行う問い合わせ(処理要求)のことで、一般的にはキーワードやその組み合わせ、キーフレーズなどの検索ワード(検索語)をいいます。検索エンジンはユーザーが入力した検索ワードを、データベースに合った形に変換して処理します。

形態素解析で自然文を個別のキーワードに切り分ける

検索エンジンは複数の単語からなる複合語や文章が検索キーワードとして入力された場合、それを構成する個々の単語によるAND検索を行います。このとき、英語のように個々の単語が空白文字で分ち書きされていない日本語では、入力された複合語を形態素解析によって単語1つ1つまで分解する必要があります。

完全一致型の検索システムの場合には形態素解析は必ずしも必要ありませんが、自然文検索が可能なタイプの検索システムにとっては必要不可欠な技術です。そのため、現在インターネット上で公開されているほとんどのロボット型検索エンジンは、このタイプでのクエリ処理を行っています。

日本語は個々の切り分けられた単語でAND検索される

複数の単語からなる複合語や文章が検索キーワードとして入力された場合、形態素解析によって個々の単語に分解された後、それらをキーワードとするAND検索を行うものとしてクエリ処理されます。

例えば、Googleで「東京格安料理」と入力してみましょう。検索結果には多数のページが表示されますが、ほとんどは「東京格安料理」と完全に一致した文字列は含まれていません。これは、形態素解析の結果、「東京」「格安」「料理」という個別の単語に切り分けられ、それぞれのキーワードでのAND検索が行われているためです。

検索効率を上げるためのストップワード処理

ストップワード処理とは、検索効率を上げるため、検索キーワードの中にある「一般的すぎる語」を、検索機能に渡さない技術です。ストップワードのほとんどは記号(■や「」など)や冠詞、一桁の数字、一文字だけの英文字(aやiなど)のような、どのような文章にも多く使われている語です。

そのような、検索対象数が膨大になる「記号」や「一般的すぎる語」を扱わないことで、検索処理の負荷を減らし、検索スピードを向上させます。例えばGoogleではストップワードのことを「ストップ語」と呼び、次のように説明しています。

Googleでは頻繁に使われる言葉や文字をストップ語句といい、検索キーワードから自動的に除きます。 たとえば、”http” や “.com” のほか、特定の単一数字および単一文字を自動的に無視します。これらの言葉が検索を絞り込むことはまれであり、むしろ、検索の速度を大幅に低下する原因となりうるためです。

(Googleの基本検索http://www.google.com/intl/ja/help/basics.htmlより抜粋。)

検索エンジンが扱うストップワードの種類

検索エンジンによってストップワードとして扱う単語は異なります。英語では、a, by, for, if, no, of, on, the, to, with, how, where など、助詞、助動詞、前置詞、冠詞、副詞をストップワードとして扱う傾向があります(逆に、日本語では、助詞、助動詞、接続詞、前置詞、冠詞などをストップワード扱いしない傾向があります)。

日本語のストップワードは現時点ではあまり多くはありませんが、サ変動詞(「〜する」のかたちで使用する動詞の「する」の部分)をストップワード処理するものもあります。また、日本語でも英語でも同様に、ブール演算などの検索式で使用する演算子を除く記号に関しては、基本的にすべてストップワードとして扱うようです。

ストップワードを含む検索の方法

ストップワードを含んだ検索を行うには、語句全体を「”a pen”」のように引用符で囲んだフレーズ検索や、”+”の演算子を用いた方法「+a pen」など、検索式を用いて強制的な処理を求める必要があります。

しかし基本的には、日常の検索では単に検索したいキーワード(それが単語であれ熟語でフレーズであれ)を検索窓に入力して実行するだけで、おおむね良好な検索結果が返ってきます。これは、クエリプロセシングにおける検索語の処理がうまく機能していることを示しています。

この記事について