n-gram语言模型LM

Posted 栋次大次

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了n-gram语言模型LM相关的知识,希望对你有一定的参考价值。

目录

感谢阅读,笔者能力有限,有错误请指正!

为什么要加入语音模型?

对于连续语音识别,可能有上万个词,解码过程是复杂的,识别结果组合很多,只使用声学模型是不够的,需要引入语言模型来约束识别结果。

统计语言模型

一个统计语言模型包含一个有限集合V,和一个函数 p ( x 1 , x 2 , … , x n ) p\\left(x_1, x_2, \\ldots, x_n\\right) p(x1,x2,,xn);

  1. 对于任意 ⟨ x 1 , ⋯   , x n ⟩ ∈ v + , p ( x 1 , x 2 , … , x n ) ≥ 0 \\left\\langle x_1, \\cdots, x_n\\right\\rangle \\in v^+, \\quad p\\left(x_1, x_2, \\ldots, x_n\\right) \\geq 0 x1,,xnv+,p(x1,x2,,xn)0

  2. ∑ < x 1 , … , x n > ∈ v + p ( x 1 , x 2 , … , x n ) = 1 \\sum_<x_1, \\ldots, x_n>\\in v^+ p\\left(x_1, x_2, \\ldots, x_n\\right)=1 <x1,,xn>v+p(x1,x2,,xn)=1

统计语言模型是所有词序列上的一个概率分布。它有什么用?

  • 可以给出我们任意词序列的概率,帮助确定哪个词序列的可能性大;
  • 给定一个词序列,可以预测下一个最可能出现的词。

给定一个词序列 S = ( w 1 , … , w n ) S=\\left(w_1, \\ldots, w_n\\right) S=(w1,,wn), 它的概率可以表示为:
P ( S ) = P ( x 1 = w 1 , … x n = w n ) = P ( w 1 n ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 2 ) … P ( w n ∣ w 1 n − 1 ) = ∏ k = 1 n P ( w k ∣ w 1 k − 1 ) \\beginaligned P(S) &=P\\left(x_1=w_1, \\ldots x_n=w_n\\right)=P\\left(w_1^n\\right) \\\\ &=P\\left(w_1\\right) P\\left(w_2 \\mid w_1\\right) P\\left(w_3 \\mid w_1^2\\right) \\ldots P\\left(w_n \\mid w_1^n-1\\right) \\\\ &=\\prod_k=1^n P\\left(w_k \\mid w_1^k-1\\right) \\endaligned P(S)=P(x1=w1,xn=wn)=P(w1n)=P(w1)P(w2w1)P(w3w12)P(wnw1n1)=k=1nP(wkw1k1)

如何获得语言模型中的概率?在语料库中计数。

N-gram语言模型与评价方法

举个栗子:It is going to be a fine day
P ( d a y ∣ I t   i s   g o i n g   t o   b e   a   f i n e ) = C ( I t   i s   g o i n g   t o   b e   a   f i n e   d a y ) C ( I t   i s   g o i n g   t o   b e   a   f i n e ) P(day|It\\ is\\ going\\ to\\ be\\ a\\ fine) = \\fracC(It\\ is\\ going\\ to\\ be\\ a\\ fine\\ day)C(It\\ is\\ going\\ to\\ be\\ a\\ fine) P(dayIt is going to be a fine)=C(It is going to be a fine)C(It is going to be a fine day)
问题:当历史信息越长,越难在预料库中找到完全一致的序列。

引入马尔科夫假设:随意一个词出现的概率只与前面出现的有限的n-1个词有关,则可以用最近的几个历史词代替整个历史词串,从而近似。

N-gram:用前N-1个词作为历史,估计当前第N个词。
P ( w i ∣ w i i − 1 ) = P ( w i ∣ w i − N + 1 i − 1 ) P(w_i|w_i^i-1)=P(w_i|w_i-N+1^i-1) P(wiwii1)=P(wiwiN+1i1)
如2-gram(bigram): P ( w i ∣ w i i − 1 ) = P ( w i ∣ w i − 1 ) P(w_i|w_i^i-1)=P(w_i|w_i-1) P(wiwii1)=P(wiwi1)

如何估计N-gram? 使用最大似然方法,就是在训练预料上进行数数。
P ( w i ∣ w i − N + 1 i − 1 ) = C ( w i − N + 1 i − 1 w i ) C ( w i − N + 1 i − 1 ) P(w_i|w_i-N+1^i-1) = \\fracC(w_i-N+1^i-1w_i)C(w_i-N+1^i-1) P(w以上是关于n-gram语言模型LM的主要内容,如果未能解决你的问题,请参考以下文章

n-gram语言模型LM

通俗理解n-gram语言模型

从大型语料库生成 n-gram

理解n-gram及神经网络语言模型

NLP基础知识和综述

自然语言处理中的N-Gram模型详解