自然言語処理ー形態素解析2 N-gram

前回の形態素解析の続き

 

N-gram

N-gram:  連続する N 個の語(文字、品詞)の列
               (N=1:ユニグラム、N=2: バイグラム、 N=3: トライグラム)
Nグラムモデル:先行する N - 1 語から次の語を予測する確率的言語モデル

 → 応用としてテキスト入力の予測変換などがある。

 

学習に必要なコーパス(=言語学において、自然言語処理の研究に用いるため、自然言語の文章を構造化し大規模に集積したもの。)※1

Brown コーパスを例に挙げると
10^6 トークン(コーパス中の全文章の延べ語数) , 37,851 タイプ(ユニークな単語数)

単語の組み合わせからバイグラムだとすると1.4×10^9通りとなり、コーパスサイズを超えてしまう。つまり、コーパスに出現しないバイグラムが存在するということになる。

単語の生起確率は直前のN−1個の単語のみに依存すると
仮定して近似する。以下でP()は条件付き確率を表す。

e.g. N=2: バイグラム
   P (rabbit | Just the other day I saw a) = P (rabbit | a)
e.g.   N=3: トライグラム
           P (rabbit | Just the other day I saw a) = P (rabbit | saw a)

 

ある文の確率をバイグラムで出そうとした場合、例えば

P(I want to go)

=P (I | <s>) ・ P (want | I) ・ P (to | want) ・ P (go | to) 

となり、確率の掛け算になる。

→確率の積はアンダーフローしやすい
→そのための工夫として 確率の積=(確率の対数)の和 として計算し、対数の和でそれぞれの文章の確率を比較して選択をする。アンダーフロー防ぐだけでなく、計算の高速化になる。

 

スムージングとバックオフ

・データスパースネス(データの可塑性)

 N-gramの頻度は大部分がゼロ

 → 確率がゼロになる

 → 確率計算ができなくなる(対数を取ったらマイナス無限大になるし、確率掛け算したら全体がゼロになってしまう)

・スムージング

 上記問題を回避するために、最尤推定では確率0と推定されるN-gramに適当な小さな小さい確率を割り当てる。

  ・Add-one スムージング

    すべてのバイグラムカウントに1つだけすべて出現回数を増やす。

   問題点 カウントゼロのバイグラムに割り振る確率の総量が大きすぎ、非ゼロ確率のバイグラムの確率の推定値が大きく変わる。

  ・Witten-Bellディスカウンティング

    前の語に応じてある確率を頻度ゼロへ分配する。頻度0のNグラムは”まだ出現していないだけ”と考える。ある単語 𝑤′の次に,初めて出現する単語 𝑤 バイグラム出現の初回のバイグラム確率の総和を以下の式で推定する。

f:id:taiyoukou01:20210428000121p:plain

単語 𝑤 バイグラム出現の初回 の バイグラム確率の総和を以下の式で推定する

𝑇(𝑤’): 第一要素が 𝑤′であるバイグラムの種類数
𝑁(𝑤’): 第一要素が 𝑤′であるバイグラムののべ数

 

この確率の和を𝑍(𝑤′)=第1要素が𝑤′で頻度0のバイグラム種類数 で割って均等に分配する。

第1要素が𝑤′で頻度0のバイグラムの生起確率は同じと考える。

次の処理で頻度0のバイグラムに確率を割り当てるため、頻度0でないバイグラムの確率をディスカウントする。

 

・バックオフ

最尤推定では0 になる N グラム確率を (N - 1) グラム確率に基づいて推定する。

 

品詞タグ付け(Part-of-speech tagging

マルコフ連鎖

状態遷移確率が過去の状態遷移(=品詞の遷移)とは無関係に現在の状態(=品詞)によって決まる。

こちらの資料に詳しい。↓

http://bin.t.u-tokyo.ac.jp/startup16/file/2-2.pdf

 

隠れマルコフモデル HMM (Hidden Markov Model)

各状態(=品詞)に語彙生成確率(=どんな語彙が生成されるのか。冠詞だったら”THE”や”A”が冠詞の中でどんな確率で生成されるのか)がが付随している。
観察されるのは単語の列で、内部状態の遷移は隠れている。

→単語率が観測されていて、その単語列に対してどういう品詞状態遷移が相応しいかを求める問題に落とすことができる。

 

ヴィタビ・アルゴリズム

単語列 w 1 w 2 … w n が与えられたとき、事後確率が最大の品詞列 C 1 C 2 … C n を求める。品詞タグ付きコーパスから品詞 N グラム確率 P( C i | C iN +1 … C i 1 ))(通常はトライグラム)と語彙生成確率 P( w i | C i) を学習しておく。

Baum-Welchアルゴリズム

品詞タグが付けられていないコーパスから品詞N グラム確率 と語彙生成確率 を学習する方法。隠れマルコフモデルのパラメータを推定するEMアルゴリズム

 

詳しい説明は数式を書くのが難しいので割愛・・

 

 

 

※1 コーパス - Wikipedia