自然言語処理における自己相互情報量 (Pointwise Mutual Information, PMI)

自己相互情報量とは, 2つの事象の間の関連度合いを測る尺度である(負から正までの値をとる).
自然言語処理では自己相互情報量が相互情報量と呼ばれることがある. しかし, 情報理論で定義される相互情報量(後述する)とは全く異なるため, 自己相互情報量と呼ぶのが賢明である.
自然言語処理に関する本や論文では略称のPMIがよく用いられる.


PMIの定義

確率変数のある実現値xと, 別の確率変数のある実現値yに対して, 自己相互情報量PMI(x, y)は,

$PMI(x, y) = \log_2\frac{P(x, y)}{P(x)P(y)}$ ・・・(1)

と定義され, 値が大きければ大きいほどxとyの関連している度合いが強い.

  • PMIが正の値の場合
    • $P(x, y) > P(x)P(y)$ ⇒ $PMI(x, y) > 0$
    • xとyが一緒に出現しやすい. (独立よりも)共起しやすい傾向にある.
  • PMIが負の場合
    • $P(x, y) < P(x)P(y)$ ⇒ $PMI(x, y) < 0$
    • xとyが一緒に出現しにくい. (独立よりも)共起しにくい傾向にある.
  • PMIが0の場合
    • $P(x, y) = P(x)P(y)$ ⇒ $PMI(x, y) = log1 = 0$
    • xとyの関連がない. それぞれ独立に出現する.
  • 正の値, 負の値の絶対値が大きいほど傾向が強い.

相互情報量 (Mutual Information, MI) について

  • MIとは, PMIの平均(確率変数X, Yの全ての実現値$x_{i}$, $y_{i}$に関して平均をとったもの)である.
  • PMIは実現値(スカラー)の対に関して定義される量に対し, MIは確率変数(ベクトル)の対に関して定義される量である.

MIの定義

2つの確率変数XとYに対し, 相互情報量MI(X, Y)は,

$MI(X, Y) = \sum_{x, y} P(x, y)\log_2\frac{P(x, y)}{P(x)P(y)}$ ・・・(2)

と定義され, 0以上の値をとる $^1$.


自然言語処理におけるPMI

PMIの値が示す2つの事象の関連度合いは, 自然言語処理においては単語の共起性と捉えることができ, さらに単語の意味的な類似性と近似できる(2つの単語が一緒に起こりやすい場合は, 意味的にも関連しているだろうという直感に基づいて).
ここでxとyを単語とすると,

  • ある文中でx, yがそれぞれ出現する確率は$P(x)$, $P(y)$
  • x, yが文中に同時に出現する確率は$P(x, y)$

と表される.
式は以下の通り.

$PMI(x, y) = \log_2\frac{P(x, y)}{P(x)P(y)} = \log_2\frac{\frac{C(x, y)}{N}}{\frac{C(x)}{N} \cdot \frac{C(y)}{N}} = \log_2\frac{C(x, y) \cdot N}{C(x)C(y)}$ ・・・(3)

単語の出現確率について

単語の出現確率は, 最尤推定で決定されることが多い $^2$.
各単語の出現確率が二項分布に従っているとし, 尤度から最尤推定によって単語の出現確率の式を導出している例はこちら

PMIの式の意味

(1)式を変形すると, 以下のようになる.

$PMI(x, y) = \log_2\frac{P(x, y)}{P(x)P(y)} = \log_2\frac{P(x \cap y)}{P(x)P(y)} = \log_2\frac{P(x)P(y \vert x)}{P(x)P(y)} = \log_2\frac{P(y \vert x)}{P(y)} = \log_2{P(y \vert x)} - \log_2{P(y)}$ ・・・(4)

(4)式は, 単語xが出現したときに単語yが出現する確率について, y単体での出現確率を引いたものである.
つまりPMIの式は, “単語の共起確率から単語単体での出現確率の影響を差し引くことで, より正確に単語間の共起を測ろうとしている”と理解できる.
例えば, “the”のようにどの文中にも現れるような単語は, 他のどの単語に対しても共起確率$P(“the”, w)$が高くなるので, 結果としてPMIの値が大きくなり, 関連が高いと判断されてしまう.
これを防ぐために”the”単体での出現確率を差し引くことで, 他単語との関連度を低くできる.

PMIの使い方

単語総数が10000の文書内にある2つの単語”自然”と”言語”の関連度を測るとする.
文中に”自然”が120回, “言語”が40回出現し, 20回共起しているとすると(3)式より,

$PMI(自然, 言語) = \log_{2}\frac{20 \cdot 10000}{120 \cdot 40} \approx 5.38$

共起の判定方法

2つの単語が共起関係にあるかどうかの判定方法は, 単語Bigramや単語10-gramを使い, 単語xの前後2単語以内もしくは10単語以内に単語yが出現するかどうかで判定することがある $^3$$^,$$^4$.
つまり, 単語の共起確率は単語n-gramでの共起を基に求めるということ.


PMIの抱える問題と解決策

PMIには2つの問題があるため, 使う際には考慮する必要がある.

1. 共起頻度が0の場合, PMIが計算できない問題

単語の共起頻度が0の場合,

$P(x,y) = 0$ ⇒ $PMI(x, y) = -∞$

と発散してしまい, PMIが計算できない問題がある.

解決策

この問題に対し, 共起頻度が0の時点でPMIの値を0とするか, もしくはPMI導出式の共起確率部分に一定のパラメータを加算するスムージング(平滑化)がよく行われる $^5$$^,$$^6$.

  • 共起頻度が0の時点でPMIの値を0にする
    • これは単純であるが, 負の値をとるPMIの値を0に丸め込んでしまうため, 「xとyが共起しにくい特徴」を無くしてしまう問題がある.
  • スムージング
    • 慣例として対数をとる際に共起頻度に1が加算される.
      • 1を加算することによるPMIへの影響については, 一定のパラメータを加えたところでPMI同士を比較したときの順序関係は変わらないため, 問題ない.
    • その都度手動でパラメータを調整する場合もある $^7$.
      • 参考文献[7]では, 以下の計算式によってスムージングを行っている.
        • $N’(x, y) = N(x, y) + C$ ・・・(5)
        • $P_{smooth} (x, y) = \frac{N’(x, y) + αP(x)P(y)}{1 + α}$ ・・・(6)
      • パラメータC, αはクロスバリデーションによって最適値を決め, そのパラメータを使ったスムージング共起確率$P_{smooth} (x, y)$を使ってPMIを計算している.

2. 出現頻度の低い単語同士が共起した場合にPMIの値が非常に大きくなる問題

例として単語総数が10000の文書について, 以下の2つの場合を考える.

  • C(x, y) = 1, C(x) = 1, C(y) = 1の場合
    • PMI(x, y) = log(10000)
  • C(x, y) = 1000, C(x) = 1000, C(y) = 1000 の場合
    • PMI(x, y) = log(10)

単語xとyがそれぞれ1000回出現していて, さらにそれが常に共起している2つ目のPMIの方が値は大きいはずだが, 1つ目の単語の出現頻度が低い場合のPMIの方が大きい.
この問題は単語の出現確率が最尤推定による推定量であることが関係しており, 最尤推定で求めた出現確率が単語の正確な出現確率と大きく異なっていることが原因であると考えられる.

解決策

この問題を解決するためには単語の出現確率をより正確に求めることが必要である.
したがって単語の出現確率に最尤推定量を使うのではなく, 事後分布最大化推定値(maximum a posterior estimator, MAP 推定値)などの他の推定手法を用いればよい.


参考文献

[1] “例題:相互情報量の性質”.
  http://omm.ishikawa-nct.ac.jp/ex/exercises/Pj0GgAAA/#answer

[2] “単語の出現確率の最尤推定”
  http://id.fnshr.info/2012/01/24/wordmle/

[3] “FSNLP 5.4 Mutual Information(相互情報量)”
  http://d.hatena.ne.jp/n_shuyo/20100827/fsnlp

[4] 鍋島啓太. “構成性に基づく評価極性知識獲得“. 2011.

[5] 岩成達哉ら. “多様な手がかりを用いた形容詞に基づく概念語の順序付け“. 2016.

[6] 仁科俊晴ら. “対義形容詞対との相互情報量を利用した概念語の順序付け“. 2013.

[7] Gang Guoら. “A COMPARATIVE STUDY ON VARIOUS CONFIDENCE MEASURES IN LARGE VOCABULARY SPEECH RECOGNITION“. 2004.

[8] 高村大也. “言語処理のための機械学習入門”. 2011.

※ [8]については1.6章と4.6章を参考にした.