Yuta Hayashibe

CRPを用いた格フレーム構築(英語) [@Kawahara:2014:EACL]

概要

以下の3ステップで構築する

  1. コーパスをStanford parserで解析し,項構造を抽出する(3.1節)
  2. 初期フレームを作る
  3. CRPでクラスタリング

コーパスをStanford parserで解析し,項構造を抽出する(3.1節)

  • lemmatizeする
  • head wordのみ使う
  • phrasal verbはnon phrasal verbと区別する(look uplook)
  • 受身を区別する
  • xcompはccompに,xsubjはnsubjとして扱う
  • 大文字から始まるNNPとNNPSは<name>に汎化して扱う
  • 大文字から始まるccomp<comp>に汎化して扱う

初期フレームの構築(3.2節)

  • 各項構造ごとに”predominant argument”を選ぶ
    • dobj, ccomp, nsubj, prep ∗, iobjの順序の中うち,最も高い順位をもつ項
    • I sold it.ならdobjit,It sellsならnsubjIt
  • 動詞とpredominant argumentの双方が共通している項構造ごとにグループを作る(初期フレーム)
  • フレームを構成する項構造の頻度の和が10以下のフレームは捨てる

初期格フレームのイメージは以下の通り

  • この初期フレームの動詞はobserve,predominant argumentはdobj:effect
    • 総頻度 140
    • nsubj {they 30, we 20, …}
    • dobj {effect 140}
    • prep_at {time 20, …, …}

CRPでクラスタリング(3.3節)

  • Chinese Restaurant Process (Aldous, 1985)でクラスタリング

  • 初期フレームviv_iがフレームfjf_jに属する事後確率(posterior)P(fjvi)P(f_j \mid v_i)

    • P(fjvi)n(fj)N+αP(vifj)P(f_j \mid v_i) \propto \frac{n(f_j)}{N + \alpha} \cdot P(v_i \mid f_j)
    • 第1項が事前確率(prior),第2項がviv_iの尤度(likelihood)
  • 尤度P(vifj) P(v_i \mid f_j)はディリクレ多項分布で定義される

    • P(vifj)=wVP(wfj)count(vi,w)P(v_i \mid f_j) = \displaystyle \prod_{w \in V} P(w \mid f_j)^{count(v_i, w)}
  • P(wfj) P(w \mid f_j)

    • P(wfj)=count(fj,w)+βtVcount(fj,t)+Vβ P(w \mid f_j) = \frac{count(f_j, w) + \beta}{\sum_{t \in V} count(f_j, t) + \mid V \mid \cdot \beta}
    • fjf_jが新規のときは1V\frac{1}{\mid V \mid}
  • Notations

    • NN: 初期フレームの数
    • n(fj)n(f_j): 現在fjf_jに割り当てられている初期フレームの数.ただしfjf_jが新規のときn(fj)=αn(f_j)=\alpha
    • α\alpha: 新しいフレームがどのくらい作られやすいかを表すハイパーパラメータ
    • count(vi,w)count(v_i, w): viv_iの中のwwの頻度
    • count(fj,w)count(f_j, w): fjf_jの中のwwの頻度
    • V\mid V \mid: 全フレーム中の語彙の異なり総数 (注:subj:youとdobj:you等,格が異なれば違うものとして扱う)
    • β\beta: ディリクレ分布のハイパーパラメータ

ギブスサンプリングの方法

  1. 全初期フレームにランダムにフレーム番号を与える
  2. 以下の「サンプリング」を各初期フレームに対して順に行う
    • 着目している初期フレームxxが属するフレームから,xxを抜いて,頻度分布を計算する
    • その頻度分布をもとに,xxが所属するフレームを求める確率分布を計算する
    • その確率分布を元にxxの新しい所属フレームを求め,xxに割り当てる
    • (以後xxの割り当てが変更されるまで,この割り当てを用いて計算する)
  3. 2をBB回(数十回)繰り返す
  4. 2をII回(数百回)繰り返す
  5. 4のループ内で最も割り当てられた回数が多いフレームを,それぞれの初期フレームが真に所属するフレームとする

References

補遺

priorとlikelihoodの計算

  • 各フレームごとに,viv_iのposteriorを計算し,その確率分布に従い,確率的に次の所属先を決定する

  • posteriorpriorlikelihoodposterior \propto prior \cdot likelihoodだが,計算を簡単にするために,log(priorlikelihood)\log(prior \cdot likelihood)を求める

  • log(priorlikelihood)=log(prior)+log(likelihood)\log(prior \cdot likelihood) = \log(prior) + \log(likelihood)

  • log(prior)=log(n(fj))log(N+α) \log(prior) = \log( n(f_j) ) - \log (N + \alpha)

  • log(likelihood)=wV(count(vi,w)(logAwlogBw))\log(likelihood) = \displaystyle \sum_{w \in V} ( count(v_i, w) \cdot ( \log A_w - \log B_w) )

    • logAw=log(count(fj,w)+β)\log A_w = \log (count(f_j, w) + \beta)
    • logBw=log(tVcount(fj,t)+Vβ) \log B_w = \log ( \sum_{t \in V} count(f_j, t) + \mid V \mid \cdot \beta )
  • 計算例

    • V=879\mid V \mid = 879, N=5N = 5,
    • fjf_jの例: 用例数30, 項の総和50, 現在の所属初期フレーム数n(fj)=3n(f_j)=3
      • dobj 20: bread 10, sushi 10
      • subj 30: I 25, you 5
    • vjv_jの例: 用例数20, 項の総和25
      • dobj 5:sushi 5
      • subj 20: I 12, you 8
    • log(prior)=log3log(5+α) \log(prior) = \log 3 - \log (5 + \alpha)
    • log(likelihood)=12(˙log(25+β)log(50+879β))+8(˙log(5+β)log(50+879β))+5(˙log(10+β)log(50+879β))\log(likelihood) = 12 \dot (\log (25 + \beta) - \log(50+879 \beta)) + 8 \dot (\log (5 + \beta) - \log(50+879 \beta)) + 5 \dot (\log (10 + \beta) - \log(50+879 \beta))