Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
Toy-MT-Introduction
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
NiuTrans
Toy-MT-Introduction
Commits
29e17635
Commit
29e17635
authored
Mar 01, 2020
by
xiaotong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
section 2 (update equations)
parent
cd8276c9
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
23 行增加
和
12 行删除
+23
-12
Book/Chapter2/chapter2.tex
+22
-11
Book/mt-book.tex
+1
-1
没有找到文件。
Book/Chapter2/chapter2.tex
查看文件 @
29e17635
...
...
@@ -338,7 +338,8 @@
\parinterval
如果在相同的随机变量
$
X
$
上有两个独立的概率分布P
$
(
x
)
$
和Q
$
(
x
)
$
,那么我们可以使用KL距离("Kullback-Leibler" 散度)来衡量这两个分布的不同,也就是大家所说的相对熵,其公式如下:
\begin{eqnarray}
\textrm
{
D
}_{
KL
}
(P
\parallel
Q)=
\sum
_{
x
\in
\textrm
{
X
}}
[
\textrm
{
P
}
(x)log
\frac
{
\textrm
{
P
}
(x)
}{
\textrm
{
Q
}
(x)
}
] =
\sum
_{
x
\in
\textrm
{
X
}
}
[
\textrm
{
P
}
(x)(log
\textrm
{
P
}
(x)-log
\textrm
{
Q
}
(x))]
\textrm
{
D
}_{
KL
}
(P
\parallel
Q)
&
=
&
\sum
_{
x
\in
\textrm
{
X
}}
[
\textrm
{
P
}
(x)
\log
\frac
{
\textrm
{
P
}
(x)
}{
\textrm
{
Q
}
(x)
}
]
\nonumber
\\
&
=
&
\sum
_{
x
\in
\textrm
{
X
}
}
[
\textrm
{
P
}
(x)(
\log\textrm
{
P
}
(x)-
\log
\textrm
{
Q
}
(x))]
\label
{
eqC2.19-new
}
\end{eqnarray}
...
...
@@ -724,7 +725,9 @@
\parinterval
在式
\ref
{
eqC2.30-new
}
的例子中,如果语料中从没有``确实''和``现在''两个词连续出现的情况,那么使用2-gram计算``确实/现在/数据/很/多''的切分方式的概率时,会出现如下情况
\begin{eqnarray}
\textrm
{
P
}
(
\textrm
{
``现在''
}
|
\textrm
{
``确实''
}
) =
\frac
{
\textrm
{
count
}
(
\textrm
{
``确实
}
\,\textrm
{
现在''
}
)
}{
\textrm
{
count
}
(
\textrm
{
``确实''
}
)
}
=
\frac
{
0
}{
\textrm
{
count
}
(
\textrm
{
``确实''
}
)
}
= 0
\textrm
{
P
}
(
\textrm
{
``现在''
}
|
\textrm
{
``确实''
}
)
&
=
&
\frac
{
\textrm
{
count
}
(
\textrm
{
``确实
}
\,\textrm
{
现在''
}
)
}{
\textrm
{
count
}
(
\textrm
{
``确实''
}
)
}
\nonumber
\\
&
=
&
\frac
{
0
}{
\textrm
{
count
}
(
\textrm
{
``确实''
}
)
}
\nonumber
\\
&
=
&
0
\label
{
eqC2.31-new
}
\end{eqnarray}
...
...
@@ -751,13 +754,16 @@
\parinterval
通常情况下,我们会利用采集到的语料库来模拟现实生活中真实全部的语料库。但是采集总是不充分的,比如无法涵盖所有的词汇,直接依据这样语料所获得的统计信息计算现实中的语言概率就会产生偏差。假设依据某语料C(从未出现``确实 现在''二元语法),评估一个已经分好词的句子S =``确实 现在 物价 很 高''的概率,当计算``确实 现在''的概率时使得评估
$
\textrm
{
P
}
(
S
)
=
0
$
。显然这个结果是不够准确的,根据我们的常识,句子
$
S
$
是有出现的可能性的,这样句子的概率值不应该是0。
\begin{eqnarray}
\textrm
{
P
}
(
\textrm
{
现在
}
|
\textrm
{
确实
}
) =
\frac
{
\textrm
{
count
}
(
\textrm
{
确实
}
\,\textrm
{
现在
}
)
}{
\textrm
{
count
}
(
\textrm
{
确实
}
)
}
=
\frac
{
0
}{
\textrm
{
count
}
(
\textrm
{
确实
}
)
}
= 0
\textrm
{
P
}
(
\textrm
{
现在
}
|
\textrm
{
确实
}
)
&
=
&
\frac
{
\textrm
{
count
}
(
\textrm
{
确实
}
\,\textrm
{
现在
}
)
}{
\textrm
{
count
}
(
\textrm
{
确实
}
)
}
\nonumber
\\
&
=
&
\frac
{
0
}{
\textrm
{
count
}
(
\textrm
{
确实
}
)
}
\nonumber
\\
&
=
&
0
\label
{
eqC2.32-new
}
\end{eqnarray}
\parinterval
加法平滑方法(additive smoothing)假设每个
$
n
$
-gram出现的次数比实际统计次数多
$
\theta
$
次,
$
0
\leqslant\theta\leqslant
1
$
,使得分子部分不为0,那么计算前文例子``确实 现在''的概率时,可以使用如下方法计算。
\begin{eqnarray}
\textrm
{
P
}
(
\textrm
{
现在
}
|
\textrm
{
确实
}
) =
\frac
{
\theta
+
\textrm
{
count
}
(
\textrm
{
确实
}
\,\textrm
{
现在
}
)
}{
\sum
_{
w
}^{
|V|
}
(
\theta
+
\textrm
{
count
}
(
\textrm
{
确实
}
w))
}
=
\frac
{
\theta
+
\textrm
{
count
}
(
\textrm
{
确实
}
\,\textrm
{
现在
}
)
}{
\theta
{
|V|
}
+
\textrm
{
count
}
(
\textrm
{
确实
}
)
}
\textrm
{
P
}
(
\textrm
{
现在
}
|
\textrm
{
确实
}
)
&
=
&
\frac
{
\theta
+
\textrm
{
count
}
(
\textrm
{
确实
}
\,\textrm
{
现在
}
)
}{
\sum
_{
w
}^{
|V|
}
(
\theta
+
\textrm
{
count
}
(
\textrm
{
确实
}
w))
}
\nonumber
\\
&
=
&
\frac
{
\theta
+
\textrm
{
count
}
(
\textrm
{
确实
}
\,\textrm
{
现在
}
)
}{
\theta
{
|V|
}
+
\textrm
{
count
}
(
\textrm
{
确实
}
)
}
\label
{
eqC2.33-new
}
\end{eqnarray}
...
...
@@ -793,14 +799,18 @@ r^* = (r + 1)\frac{n_{r + 1}}{n_r}
\end{eqnarray}
\parinterval
基于这个公式,就可以估计所有0次
$
n
$
元语法的频次
$
n
_
0
r
_
0
^
*=(
r
_
0
+
1
)
n
_
1
=
n
_
1
$
。要把这个重新估计的统计数转化为概率,只需要进行归一化处理:对于每个统计数为
$
r
$
的事件,其概率为
$
\textrm
{
P
}_
r
=
r
^
*/
N
$
,其中
\begin{eqnarray}
N =
\sum
_{
r=0
}^{
\infty
}{
r
^{
*
}
n
_
r
}
=
\sum
_{
r=0
}^{
\infty
}{
(r + 1)n
_{
r + 1
}}
=
\sum
_{
r=1
}^{
\infty
}{
r
\,
n
_
r
}
N
&
=
&
\sum
_{
r=0
}^{
\infty
}{
r
^{
*
}
n
_
r
}
\nonumber
\\
&
=
&
\sum
_{
r=0
}^{
\infty
}{
(r + 1)n
_{
r + 1
}}
\nonumber
\\
&
=
&
\sum
_{
r=1
}^{
\infty
}{
r
\,
n
_
r
}
\label
{
eqC2.36-new
}
\end{eqnarray}
也就是说,N仍然为这个整个样本分布最初的计数。这样样本中所有事件的概率之和为:
\begin{eqnarray}
N =
\sum
_{
r>0
}{
p
_
r n
_
r
}
= 1 -
\frac
{
n
_
1
}{
N
}
< 1
N
&
=
&
\sum
_{
r>0
}{
p
_
r n
_
r
}
\nonumber
\\
&
=
&
1 -
\frac
{
n
_
1
}{
N
}
< 1
\label
{
eqC2.37-new
}
\end{eqnarray}
...
...
@@ -1073,7 +1083,8 @@ s_0 \overset{r_1}{\Rightarrow} s_1 \overset{r_2}{\Rightarrow} s_2 \overset{r_3}{
\parinterval
这样,对于一个上下文无关文法,每一棵句法树都有唯一的最左推导与之对应。这样,句法分析可以被描述为:对于一个句子找到能够生成它的最佳推导,这个推导所对应的句法树就是这个句子的句法分析结果。
\parinterval
不过问题又回来了,怎样才能知道什么样的推导或者句法树是``最佳''的呢?对于句法分析的语言学专来说,可以很确定的分辨出哪些树是正确的哪些树是错误的结果。甚至对于普通人,也通过经验可以得到一些模糊的结果。而计算机如何进行判别呢?沿着前面介绍的统计建模的思想,计算机可以得出不同句法树出现的概率,进而选择概率最高的句法树作为输出,而这正是统计句法分析所做的事情。
\\
\parinterval
不过问题又回来了,怎样才能知道什么样的推导或者句法树是``最佳''的呢?对于句法分析的语言学专来说,可以很确定的分辨出哪些树是正确的哪些树是错误的结果。甚至对于普通人,也通过经验可以得到一些模糊的结果。而计算机如何进行判别呢?沿着前面介绍的统计建模的思想,计算机可以得出不同句法树出现的概率,进而选择概率最高的句法树作为输出,而这正是统计句法分析所做的事情
%-------------------------------------------
%图2.5.2.5
\begin{figure}
[htp]
...
...
@@ -1129,15 +1140,15 @@ s_0 \overset{r_1}{\Rightarrow} s_1 \overset{r_2}{\Rightarrow} s_2 \overset{r_3}{
\parinterval
这样我们就可以得到每个推导d的概率值。这个模型,可以很好的解释词串的生成过程。比如,对于规则集
\begin{eqnarray}
r
_
3:
&
VV
\to
\text
{
吃
}
\nonumber
\\
r
_
4:
&
NN
\to
\text
{
鱼
}
\nonumber
\\
r
_
6:
&
VP
\to
VV NN
\nonumber
r
_
3:
&
\textrm
{
VV
}
\to
\text
{
吃
}
\nonumber
\\
r
_
4:
&
\textrm
{
NN
}
\to
\text
{
鱼
}
\nonumber
\\
r
_
6:
&
\textrm
{
VP
}
\to
\textrm
{
VV
}
\textrm
{
NN
}
\nonumber
\end{eqnarray}
\parinterval
可以得到
$
d
_
1
=
r
_
3
\cdot
r
_
4
\cdot
r
_
6
$
的概率为
\begin{eqnarray}
\textrm
{
P
}
(d
_
1)
&
=
&
\textrm
{
P
}
(r
_
3)
\cdot
\textrm
{
P
}
(r
_
4)
\cdot
\textrm
{
P
}
(r
_
6)
\nonumber
\\
&
=
&
\textrm
{
P
}
(
VV
\to
\text
{
吃
}
)
\cdot
\textrm
{
P
}
(NN
\to
\text
{
鱼
}
)
\cdots
\textrm
{
P
}
(VP
\to
VV NN
)
&
=
&
\textrm
{
P
}
(
\textrm
{
VV
}
\to
\text
{
吃
}
)
\cdot
\textrm
{
P
}
(
\textrm
{
NN
}
\to
\text
{
鱼
}
)
\cdots
\textrm
{
P
}
(
\textrm
{
VP
}
\to
\textrm
{
VV NN
}
)
\label
{
eqC2.51-new
}
\end{eqnarray}
...
...
Book/mt-book.tex
查看文件 @
29e17635
...
...
@@ -55,7 +55,7 @@
\IfFileExists
{
C:/WINDOWS/win.ini
}
{
\newcommand
{
\mycfont
}{
song
}}
%
{\newcommand{\mycfont}{gbsn}}
{
\newcommand
{
\mycfont
}{
gbsn
}}
\begin{CJK}
{
UTF8
}{
\mycfont
}
\end{CJK}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论