ウェブマイニングの実践と理論 -エンティティ検索エンジン実装を例に- 森純一郎 2010年研究室研修旅行
目的 エンティティ検索エンジンの実装を通して、ウェブマイニングの基礎(特に松尾研で研究をすすめる上で必要となる)知識を学ぶ
東大の研究者検索エンジンをさくっと作る
http://www.ipr-ctr.t.u-tokyo.ac.jp/utsearch
実践
データ取得 科研費データベース
データ取得 ポイント GETの引数を調べる
Form の input を観察して POST されている値を調べる html を観察して取得したい値の css セレクタもしくは XPath を調べる
データ取得 Webクライアントモジュールを活用する LWP, Curlとか ダウンロードはお行儀よく 複数IPで分散させる
一定間隔でsleepさせる
User agentを”Mozilla/5.0 (Windows; U; Windows NT 5.1....”的に偽る
データ ぶっこ抜いたデータ 所属機関が東大の研究者約7,500名 研究者番号
キーワード 約200,000種類
分野  約700種類
採択課題
共同研究者
獲得資金額
データ処理 なるべくメモリ上でやる いろいろ実験するのでさくっと処理したい
スキーマは試行錯誤後決めてDBに入れればいい key-valueストアを活用する ハッシュ、memcached, cassandra, Tokyo cabinet 転置インデックスをつくる トークンは形態素、n-gram、キーワードなど
圧縮する
“ウェブ” -> 1  4  5  9  12
3  1  4  3  -> VB code
理論
エンティティ検索 基礎 エンティティeを語{w1, w2, ..., wn}で表す クエリーqに対して適切なeを検索したい ->確率p(e|q) を求めたい p(e|q) = p(q|e)p(e)/p(q)∝p(q|e)p(e) ->確率p(q|e)= π p(w|e) (w ∈ q)がわかればよい * p(e)は例えばランダムウォーク(後述)で計算 なお厳密には文書dを考慮して p(e|q) ∝Σ p(e|d)p(q|d)p(d) であるが、ここではeはd相当とする
エンティティ検索 基本モデル p(w|e)をどうモデル化するか もっとも単純には p(w|e) = tf (w,e)/|e|  あるいはidfを加味 もしくはwとeの共起を加味 きちんと言語モデルを考えるとスムージングして p(w|e) = λ tf(w,e)/|e| + (1-λ) tf(w,E)/|E| (λ = |e|/(|e|+μ))
エンティティ検索 潜在モデル 潜在トピック Z={z1,z2,...,zt}を考える 語wは潜在変数Zから生成される
表層的な語より意味的な処理 PLSI (probabilistic Latent Semantic Indexing) p(w|e) = Σ p(w|z)p(z|d) LDA (Latent Dirichlet Allocation) p(w|e,θ,φ) = Σp(w|z,φ)p(z|e,θ)
LDA ギブスサンプリング
実際にトピックを抽出してみましょう 7500人の東大研究者の200,000のキーワードから50のトピックを抽出
ゲノム研究 遺伝子発現  90.42
遺伝子  89.74
ゲノム  77.46
転写因子  58.38
シグナル伝達  55.72
転写制御  46.76
分子生物学  43.5

Web mining Tutorial: Entity search