人が検索したいものはさまざま。
これらを情報検索システムの検索対象とするには、 検索対象を表現する何らかの情報を検索システムに与えなければならない。
これらの情報は、検索対象そのもの、例えば本なら本文、楽曲なら音声データではなく、 検索対象についての情報である。 このような情報をメタ情報と呼ぶ。
テキストなら内容の検索ができるかというと、歴史的にはそうではない。
電子図書館(digital library)が時代の流れ。
検索語によって検索をする場合、検索対象も語によって表現しておかなければ、 検索結果を求めることができない。
検索対象がテキストである場合、 索引にふさわしい語を本文から取り出すことが索引付け。
多くの情報検索システムでは、文書を単語の多重集合(multiset)として扱う。 集合なので単語の出現順序は問わず、個々の単語の出現頻度のみを保持する。 この文書の表現方法を bag-of-words model と呼ぶ。
日本語文を単語に分割するためには形態素解析 (morphological analysis) が必要。
機能語は一つ一つが極めて多くの文書で利用されるため、 機能語は文書を特徴づける役割を果たさない。 よって索引にはふさわしくない語と言える。
機能語ではないが、「こと」のような形式名詞、 「する」「やる」といった動詞は、やはり索引としては不適切。
このような索引にふさわしくない語を排除する方法の一つとして、 排除する語(stop word)のリスト(stop list)を作成する方法がある。
単独では索引語としてふさわしくなくても、 他の語と複合することにより特定の概念を表すものがある。
また、最近の Web検索エンジンでは連続した単語列による検索をサポートしているので、 一般に不要語とされている語でも索引づけされている。
言語表現には、以下のような多様性がある。
同じ概念であれば、言語表現が異なっても検索にマッチすることが期待されることが多いと言える。
索引語が決定できたとして、各語の重要度はどう考えたらいいだろうか。
語に重要度を表す尺度を与えることを、語の重み付け (term weighting) という。
ある文書 d 中に出現する語 t の頻度を tf (term frequency) と呼ぶ。
「何度も繰り返し言及される概念は重要な概念である」(Luhn, 1957) という仮説より、 tf の値が大きい語ほど、その文書において重要な語であると言える。
ただし、一般的な語は多く使われていたとしても文書を特徴づける役割を果たさないので、 それらを考慮する手法との組み合わせが必要となる。
一般に文書の長さが長いほど、tf の値が高くなりやすいと言える。 これでは長い文書ほど重要になってしまうので、 なんらかの方法で tf の値を正規化することが望ましく、 例えば次のような手法が考えられる。
ある文書集合において、 ある語 t が出現する文書数を文書頻度 df (document frequency) と呼ぶ。
多くの文書で出現する語ほど、文書を特定する能力は低い、 つまり、df(t) の値が大きいほど、重要ではないことになる。
語の特定性を表す尺度として idf (inverse document frequency) がある。 これは df の逆数に近いものであり、出現する文書数が多いほど値が小さくなる。
ただし、N は全文書数。
tf と idf は異なる視点からの重み付けであり、どちらも高いことが望ましい。 そこで、tf と idf の積で語の重みを表現する。 この手法を tf-idf と呼ぶ。
文書 d における 語 t の重み w(t, d) は、次のようになる。
検索対象の表現ができたとして、検索質問の表現は?
検索質問 (query) の代表例:
これらは言語で表現することができる場合に限られる。 なお、対話型のシステムでは、徐々に検索質問を絞り込むことができる。
人間にとってもっとも自然なのは、普段話している言語(自然言語)により質問をすること。
人間の考える質問は、複雑であったり、曖昧であったり、単純ではないことがある。 QAサイトに投稿される質問を解析することを考えてみると、 答えを探す以前に、何を答えるべきか考えてしまうような質問も少なくない。
自然言語による検索質問は、Microsoft のオフィス製品などで古くから導入されていた(カイル君)。 質問内容を理解しているわけではなく、文から自動的にキーワードを抜き出している。
空白で区切られた複数の索引語を検索質問とする方法で、 Web検索エンジンでは、検索質問を構成するすべての語を含む文書の集合を結果とすることが多く、 AND 検索となっている。
"" でくくることにより、複合した索引語に対応している場合もある。
古典的な手法で、AND, OR, NOT といった演算を用いた論理式で検索質問を表現する手法。 Web検索エンジンでは、一般に「-」による NOT の演算だけをサポートしているが、 詳細検索でさらに複雑な論理式に対応する条件指定ができる場合もある。
論理式を用いる場合、索引語の個々の重みを考慮することができないという欠点がある。
ユーザが検索質問として入力する語が、 ユーザの検索意図を正しく反映していることはまれである。 何らかの方法で検索語を追加することにより、 よりユーザの意図に近い検索質問を生成する手法のことを 検索質問拡張 (query expansion) という。
ある概念を表す語が複数存在することがある。
同じ概念を表す語をまとめておき、 ある語で検索されたときに、その語と同じ概念を表す別の語でも同時に検索するようにすれば、 検索漏れを減少させることができる。 例えば、「教科書」が検索語であったときに、「テキスト」でも同時に検索すれば、 検索質問に適合する文書をより多く探すことができる。
この手法では多義語の扱いが問題になる。 「テキスト」は「教科書」の意味で使われていることもあれば、 「文章」の意味で使われていることもある。 「テキスト」で検索すると「文章」の意味で使われている文書もヒットしてしまうため、 ノイズが増える。つまり、再現率は上がるが、適合率が下がる。