🔖

Information Retrieval | 06 Scoring, Term Weighting, and the Vector...

2024/02/23に公開

Scoring, term weighting and the vector space model

  • 備忘:最終目的はクエリ用語と関連の強い文書を検索すること
  • クエリにマッチする文書をランク付けすることが必要
    • 大規模な文書コレクションの場合、マッチする文書の数が大量となる。
  • 検索エンジンはマッチする文書ごとに、手元のクエリに対するスコアを計算する。
    • スコアが高い文書ほど、クエリ(=ユーザーが求める情報)にマッチする可能性が高い。
    • このチャプターでは、クエリと文書のペアにスコアを割り当てる方法を整理

3つの主要なアイデア

  1. パラメトリックインデックスとゾーンインデックス
    • パラメトリックインデックス:文書が記述されている言語などのメタデータによってインデックスを作成し文書を検索。
    • ゾーンインデックス:クエリに応答して文書をスコアリング(それによってランキングする)
      • 特定のクエリ用語がマッチング文書の特定の領域に出現するクエリを考える
  2. 用語の出現統計に基づいて、文書中の用語の重要度に重み付け
    • フリーテキストクエリ:クエリ用語の相対的な順序、重要度、文書のどこに含まれるかを指定しない。関連する情報を幅広く収集できる。
  3. ベクトル空間スコアリング
    • 各文書を重みのベクトルとみなすことで、クエリと各文書の間のスコアを計算

その他

  • ベクトル空間モデルのための用語重み付けの方法にはいくつか種類がある。
  • 第7章では、ベクトル空間スコアリングの計算的側面と関連するトピックを展開(次回以降に説明)。

Parametric and zone indexes

  • パラメトリックインデックス

    • 文書のメタデータ毎にインデックスを作成し文書を検索。
    • 辞書は固定された語彙から構成される。固定された集合。
    • メタデータの例:言語、タイトル、著者、発行年
  • ゾーンインデックス

    • 文書の特定のゾーン(=領域)毎にインデックスを作成し文書を検索。
      • 特定のクエリ用語がマッチング文書の特定の領域(=ゾーン)に出現するかを判定して検索する。
    • 辞書は限定されない量のテキストから構成される
    • ゾーンの例:タイトル、著者、章の見出し、本文、画像、図、表
      Zone Index
  • ゾーンインデックスにおいて用語が出現するゾーンをpostingsで符号化するメリット

    • 辞書のサイズを縮小できる
    • 加重ゾーンスコアリングを用いた効率的なスコアリングが可能となる
      • クエリに応答して文書をスコアリング(それによってランキングする)

Weighted zone scoring

Learning weights

The optimal weight g

Term frequency and weighting

妥当なスコアリングメカニズムとは

-> クエリに含まれる各クエリ語と文書とのマッチスコアの総和であるスコアを計算
  -> クエリ用語の出現回数が多い文書やゾーンは、より高いスコアを獲得する。
   -> 高いスコアを獲得した文書やゾーンは、そのクエリとの関連性が高い

クエリ用語の出現回数に応じた重み付け(term frequency)

d : ある1つの文書
t : ある1つのクエリ用語(=クエリに組まれる用語)
{tf}_{t,d} : ある1つの文書に含まれるある1つのクエリ用語の出現頻度(term frequency

  • 文書d内の各クエリ用語tに、文書内のクエリ用語の出現数と等しくなるようにその用語の重みを割り当て。
  • dに含まれるtの重みに基づいて、tdの間のスコアを計算
  • the bag of words model(単語袋モデル)と呼ばれる。
    • バッグの中身はは並べられずにゴチャゴチャのイメージ
    • クエリ用語の順番を考慮せず、中身が一緒なら同じと考える。
    • 順序を無視しても直感的には同じ内容(bag of words)とみなせる。
      • 例えば以下の文章は逆の意味だが、同じ内容とみなしても問題なさそう。
      • 'Mary is quicker than John'
      • 'John is quicker than Mary'

本当にクエリ用語の出現回数のみを重視してよいか?

  • No
  • stop words(文書を特徴付ける用語ではない用語(例:I, You, Itなど))は無視する必要がある。stop wordsはインデックスに含めたくない。
  • 関連性の低いクエリ用語の影響度を軽減するメカニズムが必要。
    -> Inverse document frequencyを用いる。

Inverse document frequency

  • 多くの文書に出現するクエリ用語は影響度を軽減したい(=重み付けを減らしたい)。
  • コレクション全体で頻繁に出現する用語は、用語と文書の関連性の判断に意味を持たない用語だから。

df vs idf

{idf}_{t} = log\frac{N}{{df}_{t}}
記号 意味
{idf}_{t} 逆文書頻度(Inverse document frequency)。クエリ用語(t)の影響度。すなわちあるクエリ用語がどれだけ文書を特徴付けるかを示す値。
N コレクション内の文書の数
{df}_{t} あるクエリ用語(t)が出現する文書の数(document frequency
  • 稀な用語(=特定の文書にのみ出現する用語=文書と用語の関連性が強い)の場合、{idf}_{t} は高くなる(=重み付けが重くなる)。
  • 頻度の高い用語(=多くの文書に出現する用語=文書と用語の関連性が弱い)の場合、{idf}_{t}は低くなる(=重み付けが軽くなる)。
    -> クエリ用語が出現する文書数に応じてクエリ用語を重み付けできる。

なぜ{cf}_{t}ではなく{df}_{t}か?

cf vs df

  • コレクション(全ての文書の集合)に含まれるクエリ用語の出現回数(={cf}_{t})を用いると、他の文書にはほとんど出現しないが特定の文書に集中して出現するクエリ用語の場合、{cf}_{t}が増加する。
  • その場合、そのクエリ用語の影響度が小さいクエリ用語である、すなわちそのクエリ用語は文書を特徴付けるクエリ用語ではないと(誤って)判断してしまう。
  • しかし、他の文書には出現しないがその文書に出現するのであれば、そのクエリ用語と文書は強い関連性を持つ。
  • 「クエリ用語と関連の強い文書を検索する」ことを目的とした場合、「文書を特徴付けるクエリ用語は高く評価」した方が望ましい。
  • したがって、「文書全体の出現回数」よりも「出現した文書の数」で評価する方が望ましい。

tf-idf weighting

TF-IDF(Term Frequency-Inverse Document Frequency)は、文書内の各単語の重要度を計算するための手法です。

{tf\_idf}_{t} = {tf}_{t,d}\times{idf}_{t}
記号 意味
{tf\_idf}_{t} tf-idfウェイト。クエリ用語(t)の重み。ある文書(d)における用語(t)の重要性。クエリ用語(t)の出現回数とクエリ用語(t)の影響度の積で算出。
{tf}_{t,d} あるクエリ用語(t)のある特定の文書(d)における出現回数(term frequency in a paticular document
{idf}_{t} log\frac{N}{{df}_{t}}に等しい。全ての文書における用語(t)の希少性。すなわちあるクエリ用語がどれだけ文書を特徴付けるかを示す値。逆文書頻度(Inverse document frequency)

{idf}_{t}(クエリ用語の希少性)について

  • クエリ用語(t)が少数の文書内で何度も発生する場合に希少性が最も高くなります(したがって、用語(t)が含まれる文書に識別力を与えられる)。
  • クエリ用語(t)が多くの文書で出現する場合は、クエリ用語(t)の希少性は低くなります(したがって、用語(t)が含まれる文書に識別力を与えられない)。
    • クエリ用語がすべての文書に出現する場合、最も低くなります(分母のNと分子のlog\frac{N}{{df}_{t}}が等しくなる場合)。

スコアリングの計算式

VectorScore(q,d) = \sum_{t \in q}{tf\_idf}_{t,d}
  • 文書(d)のスコア = 「各クエリ語(t)が文書(d)に出現する回数 × 各クエリ用語(t)の影響度」(=重み付きの出現回数)の総和。
    • クエリにA、B、Cのクエリ用語が含まれている場合、A、B、Cそれぞれの{tf\_idf}_{t,d}を計算して、それを合計する。
  • 文書(d)中の各クエリ用語(t)の単純な出現回数ではなく、文書(d)中の各クエリ用語(t)の影響度を加味した重み付けの出現回数(tf\_idf)を用いる。

The vector space model for scoring

  • 全セクションで整理したように、各文書を重みのベクトルとして見ることによって(={tf\_idf}_{t}をベクトルの成分とみなす)、クエリと各文書の間のスコアを計算できる(=クエリ内の各クエリ用語の{tf\_idf}_{t}の総和)。
  • ベクトル空間モデルとは、文書の集合(検索クエリや検索対象の文書)を共通のベクトル空間におけるベクトルとして表現すること。
  • クエリを文書コレクションと同じベクトル空間におけるベクトルとして捉える
    • クエリと文書コレクションを定量的に比較できるようになる
  • ベクトル空間モデルは多くの情報検索操作の基本となる
    • クエリに対する文書のスコアリング
    • 文書の分類(classification)
    • 文書のクラスタリング(clustering)

Dot products(ベクトルの内積)

  • 文書dから得られるベクトルを\vec{V}(d)と表す。
    • ベクトルの成分は文書内の用語で構成される。
    • ベクトルの各成分の値は{tf\_idf}_{t}で定まる。
  • コレクション内の文書dの集合は、各用語に1つの軸があるベクトル空間内のベクトル集合とみなす。

コサイン類似度(Cosine simirality

Cosine Simirality

  • 文書d_1と文書d_2の類似度の測定方法としてコサイン類似度がある。
    • ベクトル空間における2つの文書間の類似度を定量化する方法
  • コサイン類似度は\vec{V}(d_1)\vec{V}(d_2)を用いて以下の通り表せる。
sim(d_1,d_2)=\frac{\vec{V}(d_1) \cdot \vec{V}(d_2)} {|\vec{V}(d_1)| |\vec{V}(d_2)|}
  • 2つのベクトル\vec{x}\vec{y}の内積\vec{x} \cdot \vec{y} は以下の通り定義される。

    \sum_{i=1}^Mx_iy_i
  • 文書dのベクトルを\vec{V}(d)とし, \vec{V}(d)Mつのベクトル成分\vec{V}_1(d)\ldots \vec{V}_M(d)から構成されるとする。その場合、dのユークリッド距離は以下の通り定義される。

    \sqrt{\sum_{i=1}^M\vec{V}_i^2(d)}
  • \vec{V}(d_1)\vec{V}(d_2)の長さを規格化(=長さを1とする)した単位ベクトルをそれぞれ\vec{v}(d_1)=\frac{\vec{V}(d_1)}{|\vec{V}(d_1)|}\vec{v}(d_2)=\frac{\vec{V}(d_2)}{|\vec{V}(d_2)|}とした場合、上記コサイン類似度を以下の通り表現できる。

    sim(d_1,d_2)=\vec{v}(d_1)\cdot\vec{v}(d_2)

コサイン類似度をどのように用いるのか?

  • ある文書(コレクションに含まれる可能性のある文書)が与えられたとき、その文書に最も似ているコレクション内の文書を検索することを考える。
  • このような検索は、ユーザーがある文書(例:検索クエリ)を特定し、その文書に似た他の文書(例:WEB上のあらゆるWebページ)を探すようなシステムで有用である。
  • 最も似ている文書dを見つけるという問題を、最も高いドット積\vec{v}(d)\cdot \vec{v}(d_i)を持つ文書d_iを見つけるという問題に縮小する。
  • \vec{v}(d)\vec{v}(d_1),\ldots,\vec{v}(d_N)の間のドット積を全て計算し、その結果最も高いsim(d,d_i)の値を選ぶ。

なぜベクトル間のベクトル差で類似度を測定することはNGなのか?

  • 2つの文書ベクトル間のベクトル差を類似度の尺度とする場合

    • ベクトルの方向が同じ(=相対的には類似する用語)であっても、ベクトルの長さが異なると、差が大きくなる(=類似していないと判断される)
    • よってベクトル間のベクトル差を用いて類似度を定量化することは不適切

    ->コサイン類似度で類似度を定量化すべし

Queries as vectors

  • クエリと各ドキュメントのドット積を計算してスコアを算出
sim(q,d)=VectorScore(q,d)=\vec{v}(q)\cdot\vec{v}(d)
  • クエリを「単語の集まり」と見なすことで、非常に短いドキュメントとして扱うことができる。
  • 結果として、クエリベクトル\vec{V}(q)とドキュメントベクトル\vec{V}(d)の間のコサイン類似度sim(q,d)を、そのクエリに対するドキュメントのスコアの尺度として使用できる。
  • 結果のスコアを使用して、クエリに対して最高スコアのドキュメントを選択。
sim(q,d)=\frac{\vec{V}(q) \cdot \vec{V}(d)} {|\vec{V}(q)| |\vec{V}(d)|}

Computing vector scores

前提

  • それぞれがベクトルで表されるドキュメントのコレクションがある。
  • ベクトルで表されるフリーテキストクエリがある。
  • 正の整数Kがある。
  • 指定されたドキュメントコレクションから、クエリとのベクトル空間スコアが最も高いK個のドキュメントを探す。
    • 通常、これらの上位K個のドキュメントをスコアの降順で検索。
    • 多くの検索エンジンは、上位K=10件の結果の最初のページを取得。

アルゴリズムの概要

CosineScore

  • Step1:配列Lengthには各N文書の長さ(正規化係数)が、配列Scoresには各文書のスコアが格納される。

  • Step3:各クエリ語tを順番に繰り返しながら、Scoresの更新を繰り返す。

  • Step5:用語tのクエリベクトルにおける重みを計算。

  • Step6~8:用語tからの寄与を加えて各文書のスコアを更新。

    • このようにクエリ語の寄与を1つずつ加算していく処理は、term-at-time scoringまたはaccumulationと呼ばれることがあり、配列ScoresN個の要素はaccumulatorと呼ばれる。
    • 一度に1つの文書のスコアを計算するdocument-at-a-time scoringもある。
  • Step9:最終的にスコアが計算される

  • Step10:スコアの最も高いK個の文書を選択

  • Step12:上位K個のスコアを抽出

    • 優先度キューデータ構造が必要で、多くの場合ヒープを使って実装される。
    • このようなヒープは2N以上の比較で構築可能であり、O(◆log N) の比較コストでK個の上位得点をヒープから抽出できる。
  • この目的のために、各投稿エントリに、文書d中の用語tの重みtmbox{wf}_{t,d}を格納する必要があるように見える (この重みには、今のところtfかtf-idfを使っている)
    -実際、この重みを保存するには浮動小数点数が必要になる可能性があるため、これは無駄である。このスペースの問題を軽減するのに役立つアイデアが2つある。第一に、逆文書頻度を使う場合、tの投稿の先頭にN/mbox{df}_tを格納すれば十分である。次に、各投稿エントリの項頻度mbox{tf}_{t,d}を格納する。

Variant tf-idf functions

  • 各文書内の各用語に重みを割り当てるために、tfおよびtf-idfに代わるいくつかの方法がある。
  • 以下の方法がある(詳細は割愛)
    • Sublinear tf scaling
    • Maximum tf normalization
    • Document and query weighting schemes
    • Pivoted normalized document length

Topics

Parametric and Zone indexes

パラメトリックおよびゾーンインデックスは、情報検索の分野で使用されるインデックス構造の一種です。パラメトリックインデックスは、検索対象の文書をパラメーターに基づいてインデックス化する方法です。一方、ゾーンインデックスは、文書内の特定の領域(ゾーン)ごとにインデックスを作成します。これにより、検索クエリが特定の領域に対して限定された場合に、効率的な検索が可能となります。

Weighted Zone Scoring

重み付けゾーンスコアリングは、情報検索において異なる部分(ゾーン)への重み付けを行い、それらを組み合わせて文書のランキングを行う手法です。各ゾーンへの重みは、そのゾーンがクエリにどれだけ関連性があるかを示します。これにより、文書内の異なる部分が異なる重要度を持つ場合に、より適切な検索結果を得ることができます。

Ranked Boolean Retrieval

ランク付けブール検索は、ブール演算子(AND、OR、NOTなど)を使用して検索クエリを行い、結果をランク付けして返す手法です。ブール検索では、クエリにマッチするか否かのみが考慮されますが、ランク付けブール検索では、マッチ度合いに応じて文書をランク付けし、より関連性の高い結果を上位に表示します。

Learning weights

重み学習は、検索モデルやランキング関数における重みパラメータを、訓練データから学習する手法です。機械学習アルゴリズムを用いて、クエリと文書の関連性や他の関連データを元に、各重みの最適な値を自動的に決定します。

The optimal weight g

最適な重みg は、情報検索の分野で用いられるランキング関数において、最適な結果を得るための重みパラメータです。これは通常、機械学習アルゴリズムによって学習され、検索システムのパフォーマンスを最適化するために使用されます。

Term frequency

用語の頻度は、文書内で特定の用語が出現する頻度を示す指標です。情報検索では、用語の頻度が高いほどその用語が重要であると見なされ、検索結果のランキングに影響を与えることがあります。

Tf-idf weighting

Tf-idf(Term frequency-inverse document frequency)重み付けは、情報検索において用いられる用語の重み付け手法の一つです。用語の頻度(tf)と逆文書頻度(idf)の積で計算され、特定の文書における用語の重要度を示します。高いtf-idf値を持つ用語ほど、文書内で重要であると考えられます。

Vector space model for scoring

ベクトル空間モデルは、情報検索における文書やクエリをベクトルとして表現し、ベクトル間の距離や類似度を計算する手法です。スコアリングのためのベクトル空間モデルでは、文書とクエリのベクトル表現を比較し、類似度や関連度をスコアとして算出します。

Cosine similarity

コサイン類似度は、ベクトル空間モデルにおいて用いられる類似度尺度の一つです。2つのベクトル間の角度(余弦)を計算し、その値が1に近いほどベクトルが類似していると見なされます。情報検索では、文書やクエリの類似度を評価するために広く使用されます。

Term-document matrix

用語-文書行列は、情報検索において用いられるデータ構造の一つであり、行が文書、列が用語で構成される行列です。各要素は、文書内の用語の出現回数やtf-idf値などで表され、情報検索のための特

参考文献

Christopher D. Manning, Prabhakar Raghavan and Hinrich Schütze, Introduction to Information Retrieval, Cambridge University Press. 2008.
https://nlp.stanford.edu/IR-book/html/htmledition/computing-scores-in-a-complete-search-system-1.html

Discussion