next up previous contents
次へ: デコーダ 上へ: 言語モデル 戻る: 言語モデル   目次

$N$-gramモデル

統計翻訳では一般的に,$N$-gramモデルを用いる. $N$-gramモデルとは``単語列 $w_1^n = w_1 , w_2 , w_3 , ... w_n $$i$ 番目の単語 $w_i$ の生起確率 $P(w_i)$ は直前の($N-1$)の単語列$w_{i-(N-1)} ,$ $w_{i-(N-2)} , w_{i-(N-3)} , ... w_{i-1} $に依存する''という仮説に基づくモである. また,$N=1$のモデルをuni-gram,$N=2$のモデルをbi-gram,$N=3$のモデルをtri-gramと特有の呼びかたをする. $N=4$以上は4-gramなど数値を用いて呼ぶ. $N$-gramは以下の式で表現される. ここで,$w_i^j$$i$ から $j$ 番目までの単語列を表す.


$\displaystyle P(w^{n}_{1})$ $\textstyle =$ $\displaystyle P(w_1)×P(w_2\vert w_1)×P(w_3\vert w_1^2)...P(w_n\vert w_1^{n-1})$ (2.3)
  $\textstyle \approx$ $\displaystyle P(w_1)×P(w_2\vert w_1)×P(w_3\vert w_1^2)...P(w_n\vert w_{n-(N-1)}^{n-1})$ (2.4)
  $\textstyle =$ $\displaystyle \prod^{n}_{i=1}P(w_{i}\vert w_{i-(N-1)}^{i-1})$ (2.5)

また, $P(w_{i}\vert w_{n-(N-1)}^{i-1})$ は以下の式で計算される. ここで $C(w_1^i)$ は単語列 $w_1^i$ が出現する頻度を表す.


$\displaystyle P(w_{i}\vert w_{i-(N-1)}^{i-1}) = \frac{C(w_{i-(N-1)}^i)}{C(w_{i-(N-1)}^{i-1})}$     (2.6)

たとえば,``I have dogs .''という単語列に対して$N=2$としたbi-gramモデルの言語モデルを適応した場合,単語列が生成される確率は以下の式で計算される.


$\displaystyle P( \lq\lq I  have  dogs  .'')$ $\textstyle \simeq$ $\displaystyle P(I)×P(have\vert I)×P(dogs\vert have)...P(.\vert dogs)$ (2.7)

tri-gramモデルであれば, $P(dogs\vert I  have)$,4-gramモデルであれば $P(.\vert I  have  dogs)$となる.

(2.6)式から信頼性の高い値を推定するためには,単語列 $w_1^n$ が多く出現している必要がある. しかし,実際には多くの単語列は出現数が0となることが多いため信頼できる値を推定できない場合が多い. 低頻度な語彙の場合, $C(w_{i-(N-1)}^i),C(w_{i-(N-1)}^{i-1})$ の値が小さく,信頼性が低い.また,学習データ中に単語列 $w_1^i$ が存在しない場合,この単語列の出現確率は0と推定される. そのため,(2.6)式から信頼できる値を算出するためには,大規模なコーパスを用いて,各単語列の出現数を高める必要がある. そこで,出現頻度の少ない単語列をモデルの学習から削除(カットオフ)する方法や, 確率が0となるのを防ぐために,大きい確率を小さく,小さい確率を大きくするスムージング手法が提案されている. スムージングの代表的な手法にバックオフ・スムージングがある. バックオフ・スムージングは学習データに出現しない$N$-gramの値をより低い次数の($N$-1)-gramの値から推定する.



平成26年3月29日