次のような2つの英文があったとしよう。me1つ目は、単に「りんごは赤い」と言っているだけである。一方で、2つ目の文章は何を言いたいのかさっぱりわからない。me)の確率は極めて小さいとも言える。統計的言語処理の1つの目的は、膨大に蓄積された言語リソースから、この言語モデルを統計的に推定することと言える。今回のテーマであるn-gramとは、その言語モデルの1つである。直近のn-1語によって、次に出現する語の確率を与える。次の2つの文章を考えてみる。******に何が入るか、予測できるだろうか?1文目は、これは〜です、と言っているため、候補は非常に多い。2文目は彼は〜を食べます、なので〜に入るものは食べ物と予測できる、かつ「彼」という言葉からは男性に一般的に好かれるような食べ物が入る可能性が高い。この我々の中に内在する「直前の語からなんとなく予測できる」が、n-gramで抽出したい言語の特性である。この問題は形式的には、「直前2語を所与とした場合の、次に出現する語の条件つき確率を求めよ」、ということである。eats)この例は、直近の2語から次に出る1語を予測する問題なので、3-gram(trigram)と呼ぶ。n-gramに対して、文書Wの確率は、次のように与えられる。(1)また、特殊な形として、1-gram(unigram)がある。これは、直前の語による影響を受けないモデルである。この場合の文書の確率は以下である。(2)そのうち紹介するLDAなどのトピックモデルは、この1-gramの発展系である。簡単のために、2-gramを例とする。ベイズの定理より、次が成り立つ。観測数1回の多項分布を考える。最尤推定量は、(5)は、語列{i,j}の出現回数、Nはドキュメント内の総語数である。ここで、Eq.(3)の2-gramモデルによる条件つき確率は、次のように計算できる。p(*|look)の確率が高い上位5語をそれぞれ抽出した結果である。主語となるsheの後には動詞が続いていること、形容詞redの次には赤いもの、動詞lookの次にはatなどの前置詞が続き、我々の英語知識に沿った結果が得られているのではないだろうか。今回の2-gramのパラメータ総数はV*V=121,396,324個である。グリム童話の場合、そのうちの実に99.97%のパラメータが値は0のまま、つまりその組み合わせが本文中に観測できなかった。このスパースさが、n-gramの難しい所である。概念的には同じようなものを指していても、最尤推定されたパラメータによる文書の確率推定は度々0になり(Eq.(1)のうち1つでも0になれば、総積によって全体が0となる)、モデルとして役に立たない。4-gramを考えていったとき、パラメータの数は指数的に増大していくため、本質的な解決にはならない。次回は、その緩和としてスムージングと呼ばれる手法の紹介をする。cont.前回の補足。(たぶん)実装可能なメモ書きがこちら。psuedoコード代わりのRコード。データを入れれば、一応動くけれど、ナイーブな実装なので超遅い(Rでも)。書くと、とても格好良い。Mixture(DPM)。ノンパラメトリックベイズ推定の1つである。Models”に詳しい。Processを混合モデルの事前分布に置くことで、理論的には無限の混合が可能になる・・・らしい。原理を理解するには、測度論という抽象数学が必要かつ自分にはハードルが高すぎなので、諦めてそういうものかと納得して使っている。DPMは、実利的には、データの複雑さに応じてモデルの混合数を自動的に推定するための枠組みである。正規分布の尤度関数+Normal-inverse-Wishartのパラメータ分布に対して、実行するとこんな感じになる。左下の図が、分割数の学習による変化を表したグラフである。最初は単純な混合モデルに始まり、次第にデータに適した形で複雑さを学習していっていることがわかる。通常の混合正規分布推定の場合、混合数は予め与えられていなければならない。混合数として、データ数Nを指定しておけば、同じことは一応できるが、全要素について計算しつづけなければならず、負荷は非常に大きい。DPMの場合は、現時点の混合数K+1のみを扱えばよいので、遥かに効率的である。Learningのようにブラックボックスなモデルよりも、こういうわかりやすい(?)モデルのほうが好き。コメントを残すとある童話の統計科学(2)今回は、語の基本的な統計情報についての紹介。語の統計まずは各文書の語数とボキャブラリ数(ユニークな語の数)。4文書合わせての総ボキャブラリ数は、11017語であった。不思議の国のアリスは、完全に子供向けなのか(個人的にはあまりそうは思えないけれど。)、ボキャブラリ・語数共に控えめである。クリスマスキャロルは、語数は同程度だが、利用しているボキャブラリは1000語以上多い。teen手前くらいだろうか。次に、文書ごとの語の出現確率を示す。横軸は、各文書ごとに出現確率の高い順から語をソートし、その結果のランクを示している。縦軸は、各ランクの出現頻度のlog10である。文書ごとに、各ランクに対応する語は異なることに注意。実はこのプロットから、「出現確率がランクの逆数に比例する」というZip則が概ね成立していることがわかる。適当にチューニングしてみると、出現確率=0.09/ランク、程度になる。どの文書でもあまり変わらない。Zip則はロングテールの存在を表しており、ランクに対する累積確率を下図のように計算していくと、後ろのランクまで1.0に収束することがない。文書における語の生成は、基本的に疎と言える。etc)が占めている。不思議の国のアリスの場合、語の頻出トップ10は以下である。1.3%文書を特徴づける情報はロングテールに含まれており、連続データと同じ感覚で少数派をネグると痛い目をみる。次回は、統計モデルn-gramのお話。いうページを見つけたのがきっかけで、今回のネタをやってみようと思った(texソースお借りしました。ありがとうございます。素晴らしい出来ですね)。してみようというお話。HMMとフォローしていく予定だけど、長くなりそうなので、少しずつ。今回はイントロダクションとして、何を対象にしたのかと文字の統計についての紹介。Gutenbergから入手した英語版。英語の方が、単語の切れ目がはっきりしていて扱いやすい。選択に特に意味はない。今回はあまり関係ないけれど、主な前処理は以下。文字(アルファベット)の統計まず、各文書の総文字数を表したグラフを示す。不思議の国のアリスが最も少なく、グリム童話が最も多い。その差は、300k文字程度である。次に、各文字の出現確率(各文字の出現回数を総文字数で割ったもの)を表したグラフを示す。自然言語処理を勉強したときに、一番最初に衝撃を受けたのは、文書が異なっても文字の頻度分布にそれほど大きな差がないということだった。文書のサイズが大きく違っているにもかからず、上図の結果はそれを良く表している。このような言語に潜むパターンをモデル化して、利用する研究分野である。一通り勉強はしたけれど、忘れかけているので、少しずつ更新していってリマインダにする予定。(GRBM)の更新則GRBM更新用のgradientの計算結果のメモ。