统计自然语言处理—N元语法模型简述
一、N元语法的引出
问题1:在一段文本中,如何计算某个句子出现的概率?
A: 一个句子,是由多个基元所构成,其中基元包括字、词、短语等等。
B:对于句子中的一个基元,我们使用wi来表示,句子用s来表示,并且假设句子的长度为l,则求句子的概率公 式为P(s)=P(w1w2……wl),该概率公式的变形为P(s)=P(w1)P(w2|w1)……P(wl|w1w2……wl-1)
C:根据B中公式的变形我们可以看出,当我们在求s出现的概率的时候,可以将其转换成条件概率的乘积,即求得在某些”历史”之下,某个基元出现的概率,再将各个基元出现的概率做乘法求得句子的概率。
问题2:对于某个规模大小为L的词表而言,某个词wi的历史可能出现的情况有Li-1大小,如何缩小计算规模?
A:我们采用近似计算的方式,对于某个wi而言,根据其“历史”计算其概率为P(wi|w1w2……wi-1),为了减少其计算的复杂度,我们直接计算P(wi|wi-n+1wi-n+2……wi-1)作为其估计的计算结果。
B:根据A我们可以计算出,整个句子的近似估计值为:P(s)=
∏
i
=
1
l
P
(
w
i
∣
w
i
−
n
+
1
w
w
−
n
+
2
…
…
w
i
)
\displaystyle\prod_{i=1}^{l} P(w_i|w_{i-n+1}w_{w-n+2}……w_{i})
i=1∏lP(wi∣wi−n+1ww−n+2……wi)
C:对于B中的公式,为了让w1成立和
∑
P
(
s
)
=
1
\displaystyle\sum P(s)=1
∑P(s)=1,我们在给个句子的句首和句尾添加、
<BOS>和<EOS>.
D:对于上述的计算模型,我们称其为N元语法计算模型,其成功的降低了概率的计算规模,当n=2的时候,我们称其为2元语法模型或者是一阶马尔科夫链,n=3的时候称其为二阶的马尔科夫链。
问题3:能否举一个例子来计算?
例:某一个训练预料库由以下三个句子所构成,“BROWN READ HOLY BIBLE”,“MARK READ A TEXT BOOK”,“HE READ A BOOK BY DAVID”,以二元文法为例,我们来计算第一个句子的概率。
P(<BOS>BROWN READ A BOOK<EOS>) =P(BROWN|<BOS>)*P(READ|BROWN)*P(A|READ)*P(BOOK|A)*P(<EOS>|BOOK)
其中 P(BROWN|<BOS>) =
c
(
<
B
O
S
>
B
R
O
W
N
)
∑
w
c
(
<
B
O
S
>
w
)
\frac{c(<BOS>\quad BROWN)}{\displaystyle\sum_{w}c(<BOS>w) }
w∑c(<BOS>w)c(<BOS>BROWN) =1/3
P(READ|BROWN) =
c
(
B
R
O
W
N
R
E
A
D
)
∑
w
c
(
B
R
O
W
N
w
)
\frac{c(BROWN \quad READ)}{\displaystyle\sum_{w}c(BROWNw) }
w∑c(BROWNw)c(BROWNREAD) =1/1
P(A}READ) =
c
(
R
E
A
D
A
)
∑
w
c
(
R
E
A
D
w
)
\frac{c(READ\quad A)}{\displaystyle\sum_{w}c(READ \quad w) }
w∑c(READw)c(READA) =2/3
P(BOOK\A) =
c
(
A
B
O
O
K
)
∑
w
c
(
A
w
)
\frac{c(A \quad BOOK)}{\displaystyle\sum_{w}c(A \quad w) }
w∑c(Aw)c(ABOOK) =1/2
P(|BOOK) =
c
(
B
O
O
K
<
E
O
S
>
)
∑
w
c
(
B
O
O
K
w
)
\frac{c(BOOK \quad <EOS>)}{\displaystyle\sum_{w}c(BOOK \quad w) }
w∑c(BOOKw)c(BOOK<EOS>) =1/2
则整个句子出现的概率为 P(s) = 1/3 * 1 * 2/3 * 1/2 * 1/2 ≈ 0.06