糞糞糞ネット弁慶

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

Improving Recommendation for Long-tail Queries via Templates(WWW 2011)

Improving recommendation for long-tail queries via templates

概要

グラフベースのクエリ推薦において,クエリごとにクエリ-ページの遷移を考えるのではなく,クエリ-テンプレート,テンプレート-テンプレートでの遷移を考える.
これにより,従来のクエリ推薦では対応できなかったロングテール(つまりは検索数が少ないクエリ)に対応する.
例えば,"Montezuma surf"というクエリについて," surf → beach"というルールがあれば"Montezuma beach"なるクエリを推薦することが出来る.

Query-Flow Graph

Boldiがこれまで何度か書いてきた手法.いくつか読んではいるがブログで書いた事は無かったのでいつかまとめて書く.

QUERY TEMPLATES AND THE QUERY TEMPLATE FLOW GRAPH

最大のキモであるクエリのテンプレート化.
なるクエリはタームの集合であるとする.この時,連続したタームをまとめる作業をtokenizationと呼ぶ.例えば"chocolate cookie recipe"なるクエリに対するtokenizationは

となる.そしてこの時,あるtokenizationをと表現する.
このクエリログに加えgeneralization hierarchyなるデータも同時に用いる.これは要素Eについて,なる汎化構造を含んでいる.これは,の一般化である時,として現される(ex. chocolate→food,chocolate→drink,food→substance...).
その後,についてであるならばそれを置換し,とする.先の"chocolate cookie recipe"に関するtokenizationについては

  • cookie recipe
  • cookie recipe
  • chocolate recipe
    • chocolate recipe
  • recipe
  • recipe
  • chocolate cookie <instruction>

などがテンプレートとして得られる.chocolate→food→substanceといったように,階層構造を遡れる時は遡れる限り遡る.
またこの時,とする.
これらをn-gramについて取得していく.その際,メールアドレスであれば,URLならば,電話番号ならば<000-0000>,名詞句であれば接尾辞を用いたテンプレートを作る(ex. "luxury cars sale"→"<?-cars> sale").

Query-to-template edges

クエリ-テンプレート間にエッジを張る.この作業はクエリとテンプレート間のスコア計算に相当する.
クエリqとそのテンプレートtに対しスコアを次にように計算する.

  • 要素eがgeneralization hierarchy Hにおいてより上位にあるならば,それは一般化しすぎていると考える.よって,置き換えた元の単語とテンプレートの要素eとの階層構造での距離についてとする.ちなみにが良かったらしい.
  • また,Query-Flow Graphにおけるクエリ⇔クエリ間のエッジについてであればとする.

この上でと正規化してやる.

Template-to-Template edges

テンプレート-テンプレート間にエッジを張る.
二つのテンプレートに対し,次の条件を満たした場合有効エッジを張る.

    • 同じ"単語"(placeholder)で置き換られている状態
  • かつの時,であるクエリについてquery-flow graphにエッジが存在するならば,それをに対するサポートエッジとし,で表す.

あとはスコアを計算する.

感想

query-flow graphの論文も読み返してまとめたほうが理解が早いっぽい.