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 ) \\begin{aligned} 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) \\end{aligned} 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) = \\frac{C(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}) = \\frac{C(w_{i-N+1}^{i-1}w_i)}{C(w_{i-N+1}^{i-1})} P

以上是关于n-gram语言模型LM的主要内容,如果未能解决你的问题,请参考以下文章

n-gram语言模型LM

语言模型是什么?什么是N-Gram语言模型?什么是神经语言模型?语言模型能做什么?

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

n-gram

NLP基础知识和综述

什么是N-gram语言模型