糞糞糞ネット弁慶

読んだ論文についてメモを書きます.趣味の話は http://repose.hatenablog.com

Sources of evidence for vertical selection (SIGIR 2009)読んだメモ

Sources of evidence for vertical selection
SIGIR2009のbest paper.

この論文は何をしているのか

vertical selectionと言うと全くピンと来ない.上手いこと示す言葉を知らないので具体例を挙げる.例えばgoogleで「桜高軽音部」と検索すると3件目に「桜高軽音部」で動画を検索した結果へのリンクが張られる.また,「JAL」で検索した場合には5件目に「JAL」でニュースを検索した結果へのリンクが張られる.
https://img.skitch.com/20110122-1ps9hajwc9jyr6d64fg5durnkw.jpghttps://img.skitch.com/20110122-jijg7imf9fiac5y2gbekwb9tsi.jpg
このような「動画」「ニュース」「画像」などの区分をverticalと呼び,検索クエリに対してそれらへの検索を同時に行うべきか行わないべきか,どのverticalに対して行うべきか,を示したのがこの論文.

問題設定

検索エンジンに対するクエリに対し,いずれかのverticalに割り振るか,もしくはどのverticalにも割り振らない"no relecant vartical"かを選ぶ.
今回は18のvertical(autos, directory, finance, game, ...)を考える.

手法

大きく分けて3つの特徴量を用いる

  • Query String Features
  • Query-Log Features
  • Corpus Features

Query String Features

単体じゃ一番役たたなさそうなもの

Rule-based vertical triggers

ガチガチに作ったルールベースと正規表現でクエリを45のクラスに割り振る.

Geographic features

ルールベースで作った地理アノテーションツールを使ってクエリに地理情報かどうかの値を付与.

Query-Log Features

verticalごとのクエリログに対してunigramの言語モデルを作る.

言語モデル
verticalごとのクエリログは1年分,no relecant vartical用には一ヶ月分の普通の検索におけるクエリログを使う.言語モデルを作る際にはそれぞれのverticalごとに最貧20000語を使い,Witten-Bell smoothingを用いる.
Query-Log Featuresではout of vocabulary(OOV)termsをどう扱うかについて2パターン用意しておくらしい.OOVの扱いの話はsmoothingとどう違うのか全く判らない.

Corpus Features

Corpusとか書いてるけど"Corpus features are dericed from document rankings obtained by issuing the query to different collections"とか書いてあるしドキュメント集合を用いて得たfeaturesの話.

Corporaを作る

Corporaというよりもドキュメント集合を二種類作る.

  • Direct Sampling from Vertical

基になっているのはQuery-baesd samplingらしい.verticalごとのクエリログからunigramで上位1000個を取り出してqueryとし,verticalごとに検索して上位100件ずつを得てその和集合から25000ドキュメントをランダムサンプリング.verticalから得たこのドキュメント集合をと表記.

こっちはもっと大雑把.wikipediaから「カテゴリ」部分にvertical名を含んでいる記事を全て持ってくる.大雑把だが「テキストがリッチであること(videoやimageにおけるdirect samplingはテキストがpoor)」,「フォーマットが整っていること」,「整合性があること」などの利点がある.これをverticalから得たこのドキュメント集合をと表記.
これらCorporaを使って次の4つを計算する.

Retrieval Effectiveness Features

Clarityが提案した検索結果の良さを測る指標がある.これは検索クエリと,そのクエリでヒットした文書の上位(コレクション)で言語モデルを作り,それのKLダイバージェンスを比較するというもの(近ければ検索結果の有効性が高い).

VはコレクションCにおける単語,及びはそれぞれクエリ及びコレクションから得られた言語モデル.また,で得る.Clarityは検索結果の上位ドキュメントがランダムサンプリングに近づくにつれどんどん下がっていく(検索結果の有効性が低くなる).
これを流用する.クエリqに対するにおけるClarityスコアは

もしくはであり,

ReDDE Features

今度はresouece selectionと呼ばれる問題で使われているReDDEを用いる.

しかしこの式がよく分からないのは[I(d \in S_i^*)]とかやると[S_i^{wiki}]があまりマッチしないんじゃなかろうか.と思ったが相対比較だから構わないのか.

Soft ReDDE Features

ReDDEはverticalに対するハードアサインなのでこれをソフトにしたものを考える.具体的にはでドキュメントの言語モデルとverticalの言語モデルにおける距離関数を考える.ここではBhattacharyya correlationを使って

とし,として,

とする.

Categorical Features

階層的なカテゴリ構造を使ってうんちゃら.式にとか書いてあって意味がよくわからないのでスルー.

実験

Single Feature Runs

割り振るverticalをとして閾値パラメータを考えて

として割り振る.

Feature Combination Run

18 vetical + no relevant vertical = 19 one-vs-allなロジスティック回帰で学習のち予測
結果としてはsingleではprecが最低0.254(clarity.vertical),最大0.368(Query-Log Features + OOV).ロジスティック回帰では0.583とかなり高い.Clarityではverticalよりwikiが,ReDDEではwikiよりverticalの方が優れている.

言語モデルというものがどんなものでどんな時に使うのか全く知らなかったが,こういう使い方があるんだと勉強になった.resource selectionが何をどのように問題視してるかがピンと来なかったためにReDDEを使うあたりや結論のあたりがはっきり理解できなかったのが辛い.
queryに対して教師あり学習でverticalをハードアサインするのが一番いい,という結論ではあったのだけれど,ランキング学習の枠組みで解決するというのはどうだろうと思った.例えばgoogleなんかはクエリを複数のverticalに割り振ってそれの表示順が色々と変わっているように見える(「勝間和代」で検索すると少し下の方にリアルタイム検索へのリンクが張られていたりする).なのでランキング学習で解いてランキングが一定以下なら検索しないとかするというのもありなんじゃないかなと思う(ランキング学習知らないので実現できるかどうか全く分からないけど).