情報アクセスと知的処理 (3)

検索対象の表現と索引付け

本日のゴール

検索対象の表現形式

人が検索したいものはさまざま。

これらを情報検索システムの検索対象とするには、 検索対象を表現する何らかの情報を検索システムに与えなければならない。

検索対象についての情報

図書館の蔵書検索
本1冊につき、書名、著者名、出版社名などの情報を与える。
楽曲の検索
曲1曲につき、曲名、アーティスト名、作曲者名などの情報を与える。

これらの情報は、検索対象そのもの、例えば本なら本文、楽曲なら音声データではなく、 検索対象についての情報である。 このような情報をメタ情報と呼ぶ。

メタ情報に対する検索

情報そのものに対する検索

テキスト以外のメディアの検索

検索語で検索
検索語はテキストなので、同じくテキストであるメタ情報を検索するしかない。
検索語以外で検索
一部実用化されている。

テキストの検索

テキストなら内容の検索ができるかというと、歴史的にはそうではない。

蔵書検索
タイトル、著者、抄録などのメタ情報で検索
Amazon の書籍検索も、たいていはメタ情報のみが検索対象
全文検索
本文に現れる語がすべてで検索可能
Web検索、PC内の検索、Amazon の「なか見検索」

電子図書館

電子図書館(digital library)が時代の流れ。

索引付け

検索語によって検索をする場合、検索対象も語によって表現しておかなければ、 検索結果を求めることができない。

検索対象がテキストである場合、 索引にふさわしい語を本文から取り出すことが索引付け。

索引(語)の単位

文書を表す単語の集合

多くの情報検索システムでは、文書を単語の多重集合(multiset)として扱う。 集合なので単語の出現順序は問わず、個々の単語の出現頻度のみを保持する。 この文書の表現方法を bag-of-words model と呼ぶ。

bag of words でできること

bag of words ではできないこと

文を単語に分割

日本語文を単語に分割するためには形態素解析 (morphological analysis) が必要。

不要語リスト

機能語は一つ一つが極めて多くの文書で利用されるため、 機能語は文書を特徴づける役割を果たさない。 よって索引にはふさわしくない語と言える。

機能語ではないが、「こと」のような形式名詞、 「する」「やる」といった動詞は、やはり索引としては不適切。

このような索引にふさわしくない語を排除する方法の一つとして、 排除する語(stop word)のリスト(stop list)を作成する方法がある。

不要語リスト

単独では索引語としてふさわしくなくても、 他の語と複合することにより特定の概念を表すものがある。 また、最近の Web検索エンジンでは連続した単語列による検索をサポートしているので、 一般に不要語とされている語でも索引づけされている。

接辞処理

言語表現には、以下のような多様性がある。

語選択の多様性
同じ概念でも異なる言葉が用いられることがある。「パソコン」「PC」
語形の多様性
同じ語でも構文上の制約により語形が異なることがある。「play」「played」

同じ概念であれば、言語表現が異なっても検索にマッチすることが期待されることが多いと言える。

接辞処理

英語の場合

接辞処理 (stemming) により表現を正規化。 例えば、「played」を「play」にします。 「ed」などの接尾辞は重ねてつくことがあるので、 ルールを繰り返し適用するタイプの手法が考案されている。 Porter の手法が有名。

日本語の場合

形態素解析により活用語尾を原形にする。 例えば、「走って」を「走る」にする。 形態素解析システムは、活用型と活用語尾の情報をルールとして持っている。

索引語の重み付け

索引語が決定できたとして、各語の重要度はどう考えたらいいだろうか。

語に重要度を表す尺度を与えることを、語の重み付け (term weighting) という。

語の出現頻度

ある文書 d 中に出現する語 t の頻度を tf (term frequency) と呼ぶ。

「何度も繰り返し言及される概念は重要な概念である」(Luhn, 1957) という仮説より、 tf の値が大きい語ほど、その文書において重要な語であると言える。

ただし、一般的な語は多く使われていたとしても文書を特徴づける役割を果たさないので、 それらを考慮する手法との組み合わせが必要となる。

一般に文書の長さが長いほど、tf の値が高くなりやすいと言える。 これでは長い文書ほど重要になってしまうので、 なんらかの方法で tf の値を正規化することが望ましく、 例えば次のような手法が考えられる。

IDF

ある文書集合において、 ある語 t が出現する文書数を文書頻度 df (document frequency) と呼ぶ。

多くの文書で出現する語ほど、文書を特定する能力は低い、 つまり、df(t) の値が大きいほど、重要ではないことになる。

語の特定性を表す尺度として idf (inverse document frequency) がある。 これは df の逆数に近いものであり、出現する文書数が多いほど値が小さくなる。

idf(t) = log(N/df(t)) + 1

ただし、N は全文書数。

索引語の重み

tf と idf は異なる視点からの重み付けであり、どちらも高いことが望ましい。 そこで、tf と idf の積で語の重みを表現する。

文書 d における 語 t の重み w(t, d) は、次のようになる。

w(t, d) = tf(t, d) * idf(t)

検索質問の表現

検索対象の表現ができたとして、検索質問の表現は?

検索質問 (query) の代表例:

これらは言語で表現することができる場合に限られる。 なお、対話型のシステムでは、徐々に検索質問を絞り込むことができる。

自然言語による表現

人間にとってもっとも自然なのは、普段話している言語(自然言語)により質問をすること。

人間の考える質問は、複雑であったり、曖昧であったり、単純ではないことがある。 QAサイトに投稿される質問を解析することを考えてみると、 答えを探す以前に、何を答えるべきか考えてしまうような質問も少なくない。

自然言語による検索質問は、Microsoft のオフィス製品などで古くから導入されていた(カイル君)。 質問内容を理解しているわけではなく、文から自動的にキーワードを抜き出している。

索引語の集合による表現 / 論理式による表現

索引語の集合による表現

空白で区切られた複数の索引語を検索質問とする方法で、 Web検索エンジンでは、検索質問を構成するすべての語を含む文書の集合を結果とすることが多く、 AND 検索となっている。

"" でくくることにより、複合した索引語に対応している場合もある。

論理式による表現

古典的な手法で、AND, OR, NOT といった演算を用いた論理式で検索質問を表現する手法。 Web検索エンジンでは、一般に「-」による NOT の演算だけをサポートしているが、 詳細検索でさらに複雑な論理式に対応する条件指定ができる場合もある。

論理式を用いる場合、索引語の個々の重みを考慮することができないという欠点がある。

検索質問拡張

ユーザが検索質問として入力する語が、 ユーザの検索意図を正しく反映していることはまれである。 何らかの方法で検索語を追加することにより、 よりユーザの意図に近い検索質問を生成する手法のことを 検索質問拡張 (query expansion) という。

ある概念を表す語が複数存在することがある。

同じ概念を表す語をまとめておき、 ある語で検索されたときに、その語と同じ概念を表す別の語でも同時に検索するようにすれば、 検索漏れを減少させることができる。 例えば、「教科書」が検索語であったときに、「テキスト」でも同時に検索すれば、 検索質問に適合する文書をより多く探すことができる。

この手法では多義語の扱いが問題になる。 「テキスト」は「教科書」の意味で使われていることもあれば、 「文章」の意味で使われていることもある。 「テキスト」で検索すると「文章」の意味で使われている文書もヒットしてしまうため、 ノイズが増える。つまり、再現率は上がるが、適合率が下がる。