Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
mtbookv2
概览
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
mtbookv2
Commits
2f9feefe
Commit
2f9feefe
authored
Sep 23, 2020
by
xiaotong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wording and formatting
parent
7c13b644
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
43 行增加
和
22 行删除
+43
-22
Chapter1/chapter1.tex
+1
-1
Chapter2/chapter2.tex
+11
-11
Chapter3/chapter3.tex
+4
-4
Chapter4/Figures/The-process-of-statistical-hypothesis-testing.tex
+21
-0
Chapter4/chapter4.tex
+1
-1
Chapter5/chapter5.tex
+2
-2
Chapter7/chapter7.tex
+2
-2
Chapter8/Figures/figure-hyper-graph-representation-of-machine-translation-derivation.tex
+1
-1
没有找到文件。
Chapter1/chapter1.tex
查看文件 @
2f9feefe
...
...
@@ -254,7 +254,7 @@
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection
{
规则的定义
与层次
}
\subsection
{
规则的定义
}
\parinterval
规则就像语言中的“If-then”语句,如果满足条件,则执行相应的语义动作。比如,可以将待翻译句子中的某个词,使用目标语言单词进行替换,但是这种替换并非随意的,而是在语言学知识的指导下进行的。
...
...
Chapter2/chapter2.tex
查看文件 @
2f9feefe
...
...
@@ -423,13 +423,13 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\parinterval
通过这个学习过程,就可以得到每个词出现的概率,成功使用统计方法对“单词的频率”这个问题进行建模。那么该如何计算一个句子的概率呢?在自然语言处理领域中,句子可以被看作是由单词组成的序列,因而句子的概率可以被建模为若干单词的联合概率,即
$
\funp
{
P
}
(
w
_
1
w
_
2
\ldots
w
_
m
)
$
。其中,
$
w
_
i
$
表示句子中的一个单词。
\parinterval
为了求
$
\funp
{
P
}
(
w
_
1
w
_
2
\ldots
w
_
m
)
$
,最直接的方式是统计所有可能出现的词串
$
w
_
1
w
_
2
\ldots
w
_
m
$
在数据中出现的次数
$
\textrm
{
count
}
(
w
_
1
w
_
2
\ldots
w
_
m
)
$
,之后利用极大似然估计计算
$
\funp
{
P
}
(
w
_
1
w
_
2
\ldots
w
_
m
)
$
:
\parinterval
为了求
$
\funp
{
P
}
(
w
_
1
w
_
2
\ldots
w
_
m
)
$
,最直接的方式是统计所有可能出现的词串
$
w
_
1
w
_
2
\ldots
w
_
m
$
在数据中出现的次数
$
c
(
w
_
1
w
_
2
\ldots
w
_
m
)
$
,之后利用极大似然估计计算
$
\funp
{
P
}
(
w
_
1
w
_
2
\ldots
w
_
m
)
$
:
\begin{eqnarray}
\funp
{
P
}
(w
_
1 w
_
2
\ldots
w
_
m)
&
=
&
\frac
{
\textrm
{
count
}
(w
_
1 w
_
2
\ldots
w
_
m)
}{
\sum
_{
w
^{
'
}_
1, w
^{
'
}_
2,...,w
^{
'
}_
m
\in
V
}
\textrm
{
count
}
(w
^{
'
}_
1 w
^{
'
}_
2
\ldots
w
^{
'
}_
m)
}
\label
{
eq:seq-mle
}
\funp
{
P
}
(w
_
1 w
_
2
\ldots
w
_
m)
&
=
&
\frac
{
c(w
_
1 w
_
2
\ldots
w
_
m)
}{
\sum
_{
w
^{
'
}_
1, w
^{
'
}_
2,...,w
^{
'
}_
m
\in
V
}
c
(w
^{
'
}_
1 w
^{
'
}_
2
\ldots
w
^{
'
}_
m)
}
\label
{
eq:seq-mle
}
\label
{
eq:2-20
}
\end{eqnarray}
\noindent
其中,
$
V
$
为词汇表。本质上,这个方法和计算单词出现概率
$
\funp
{
P
}
(
w
_
i
)
$
的方法是一样的。但是这里的问题是:当
$
m
$
较大时,词串
$
w
_
1
w
_
2
\ldots
w
_
m
$
可能非常低频,甚至在数据中没有出现过。这时,由于
$
\textrm
{
count
}
(
w
_
1
w
_
2
\ldots
w
_
m
)
\approx
0
$
,公式
\eqref
{
eq:seq-mle
}
的结果会不准确,甚至产生0概率的情况。这是观测低频事件时经常出现的问题。对于这个问题,另一种思路是对多个联合出现的事件进行独立性假设,这里可以假设
$
w
_
1
$
、
$
w
_
2
\ldots
w
_
m
$
的出现是相互独立的,于是:
\noindent
其中,
$
V
$
为词汇表。本质上,这个方法和计算单词出现概率
$
\funp
{
P
}
(
w
_
i
)
$
的方法是一样的。但是这里的问题是:当
$
m
$
较大时,词串
$
w
_
1
w
_
2
\ldots
w
_
m
$
可能非常低频,甚至在数据中没有出现过。这时,由于
$
c
(
w
_
1
w
_
2
\ldots
w
_
m
)
\approx
0
$
,公式
\eqref
{
eq:seq-mle
}
的结果会不准确,甚至产生0概率的情况。这是观测低频事件时经常出现的问题。对于这个问题,另一种思路是对多个联合出现的事件进行独立性假设,这里可以假设
$
w
_
1
$
、
$
w
_
2
\ldots
w
_
m
$
的出现是相互独立的,于是:
\begin{eqnarray}
\funp
{
P
}
(w
_
1 w
_
2
\ldots
w
_
m)
&
=
&
\funp
{
P
}
(w
_
1)
\funp
{
P
}
(w
_
2)
\ldots
\funp
{
P
}
(w
_
m)
\label
{
eq:seq-independ
}
\label
{
eq:2-21
}
...
...
@@ -506,12 +506,12 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\vspace
{
0.5em
}
\item
{
\small\bfnew
{
基于频次的方法
}}
\index
{
基于频次的方法
}
。直接利用词序列在训练数据中出现的频次计算出
$
\funp
{
P
}
(
w
_
m|w
_{
m
-
n
+
1
}$
\\
$
\ldots
w
_{
m
-
1
}
)
$
:
\begin{eqnarray}
\funp
{
P
}
(w
_
m|w
_{
m-n+1
}
\ldots
w
_{
m-1
}
)=
\frac
{
\textrm
{
count
}
(w
_{
m-n+1
}
\ldots
w
_
m)
}{
\textrm
{
count
}
(w
_{
m-n+1
}
\ldots
w
_{
m-1
}
)
}
\funp
{
P
}
(w
_
m|w
_{
m-n+1
}
\ldots
w
_{
m-1
}
)=
\frac
{
c(w
_{
m-n+1
}
\ldots
w
_
m)
}{
c
(w
_{
m-n+1
}
\ldots
w
_{
m-1
}
)
}
\label
{
eq:2-24
}
\vspace
{
0.5em
}
\end{eqnarray}
\noindent
其中,
$
\textrm
{
count
}
(
\cdot
)
$
是在训练数据中统计频次的函数。
\noindent
其中,
$
c
(
\cdot
)
$
是在训练数据中统计频次的函数。
\vspace
{
0.5em
}
\item
{
\small\bfnew
{
人工神经网络方法
}}
\index
{
人工神经网络方法
}
。构建一个人工神经网络估计
$
\funp
{
P
}
(
w
_
m|w
_{
m
-
n
+
1
}
\ldots
w
_{
m
-
1
}
)
$
的值,比如,可以构建一个前馈神经网络来对
$
n
$
-gram进行建模。
...
...
@@ -538,10 +538,10 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\parinterval
对于
$
n
$
-gram语言模型,每个
$
\funp
{
P
}
(
w
_
m|w
_{
m
-
n
+
1
}
\ldots
w
_{
m
-
1
}
)
$
都可以被看作是模型的
{
\small\bfnew
{
参数
}}
\index
{
参数
}
(Parameter
\index
{
Parameter
}
)。而
$
n
$
-gram语言模型的一个核心任务是估计这些参数的值,即参数估计。通常,参数估计可以通过在数据上的统计得到。一种简单的方法是:给定一定数量的句子,统计每个
$
n
$
-gram 出现的频次,并利用公式
\eqref
{
eq:2-24
}
得到每个参数
$
\funp
{
P
}
(
w
_
m|w
_{
m
-
n
+
1
}
\ldots
w
_{
m
-
1
}
)
$
的值。这个过程也被称作模型的
{
\small\bfnew
{
训练
}}
\index
{
训练
}
(Training
\index
{
训练
}
)。对于自然语言处理任务来说,统计模型的训练是至关重要的。在本书后面的内容中也会看到,不同的问题可能需要不同的模型以及不同的模型训练方法,并且很多研究工作也都集中在优化模型训练的效果上。
\parinterval
回到
$
n
$
-gram语言模型上。前面所使用的参数估计方法并不完美,因为它无法很好地处理低频或者未见现象。比如,在式
\eqref
{
eq:2-25
}
所示的例子中,如果语料中从没有“确实”和“现在”两个词连续出现的情况,即
$
\textrm
{
count
}
(
\textrm
{
确实
}
/
\textrm
{
现在
}
)=
0
$
。 那么使用2-gram 计算句子“确实/现在/数据/很/多”的概率时,会出现如下情况:
\parinterval
回到
$
n
$
-gram语言模型上。前面所使用的参数估计方法并不完美,因为它无法很好地处理低频或者未见现象。比如,在式
\eqref
{
eq:2-25
}
所示的例子中,如果语料中从没有“确实”和“现在”两个词连续出现的情况,即
$
c
(
\textrm
{
确实
}
/
\textrm
{
现在
}
)=
0
$
。 那么使用2-gram 计算句子“确实/现在/数据/很/多”的概率时,会出现如下情况:
\begin{eqnarray}
\funp
{
P
}
(
\textrm
{
现在
}
|
\textrm
{
确实
}
)
&
=
&
\frac
{
\textrm
{
count
}
(
\textrm
{
确实
}
/
\textrm
{
现在
}
)
}{
\textrm
{
count
}
(
\textrm
{
确实
}
)
}
\nonumber
\\
&
=
&
\frac
{
0
}{
\textrm
{
count
}
(
\textrm
{
确实
}
)
}
\nonumber
\\
\funp
{
P
}
(
\textrm
{
现在
}
|
\textrm
{
确实
}
)
&
=
&
\frac
{
c(
\textrm
{
确实
}
/
\textrm
{
现在
}
)
}{
c
(
\textrm
{
确实
}
)
}
\nonumber
\\
&
=
&
\frac
{
0
}{
c
(
\textrm
{
确实
}
)
}
\nonumber
\\
&
=
&
0
\label
{
eq:2-26
}
\end{eqnarray}
...
...
@@ -571,8 +571,8 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\parinterval
加法平滑方法假设每个
$
n
$
-gram出现的次数比实际统计次数多
$
\theta
$
次,
$
0
<
\theta\le
1
$
。这样,计算概率的时候分子部分不会为0。重新计算
$
\funp
{
P
}
(
\textrm
{
现在
}
|
\textrm
{
确实
}
)
$
,可以得到:
\begin{eqnarray}
\funp
{
P
}
(
\textrm
{
现在
}
|
\textrm
{
确实
}
)
&
=
&
\frac
{
\theta
+
\textrm
{
count
}
(
\textrm
{
确实/现在
}
)
}{
\sum
_{
w
}^{
|V|
}
(
\theta
+
\textrm
{
count
}
(
\textrm
{
确实/
}
w))
}
\nonumber
\\
&
=
&
\frac
{
\theta
+
\textrm
{
count
}
(
\textrm
{
确实/现在
}
)
}{
\theta
{
|V|
}
+
\textrm
{
count
}
(
\textrm
{
确实
}
)
}
\funp
{
P
}
(
\textrm
{
现在
}
|
\textrm
{
确实
}
)
&
=
&
\frac
{
\theta
+
c(
\textrm
{
确实/现在
}
)
}{
\sum
_{
w
}^{
|V|
}
(
\theta
+ c
(
\textrm
{
确实/
}
w))
}
\nonumber
\\
&
=
&
\frac
{
\theta
+
c(
\textrm
{
确实/现在
}
)
}{
\theta
{
|V|
}
+ c
(
\textrm
{
确实
}
)
}
\label
{
eq:2-27
}
\end{eqnarray}
...
...
@@ -730,7 +730,7 @@ I cannot see without my reading \underline{\ \ \ \ \ \ \ \ }
\end{eqnarray}
\begin{eqnarray}
c
_{
\textrm
{
KN
}}
(
\cdot
) =
\left\{
\begin{array}
{
ll
}
\textrm
{
count
}
(
\cdot
)
&
\textrm
{
当计算最高阶模型时
}
\\
c
(
\cdot
)
&
\textrm
{
当计算最高阶模型时
}
\\
\textrm
{
catcount
}
(
\cdot
)
&
\textrm
{
当计算低阶模型时
}
\end{array}
\right
.
\label
{
eq:2-41
}
...
...
Chapter3/chapter3.tex
查看文件 @
2f9feefe
...
...
@@ -398,16 +398,16 @@ $计算这种切分的概率值。
\parinterval
一种简单的办法是使用相对频次估计得到转移概率和发射概率估计值。令
$
x
_
i
$
表示第
$
i
$
个位置的可见状态,
$
y
_
i
$
表示第
$
i
$
个位置的隐含状态,
$
\funp
{
P
}
(
y
_
i|y
_{
i
-
1
}
)
$
表示第
$
i
-
1
$
个位置到第
$
i
$
个位置的状态转移概率,
$
\funp
{
P
}
(
x
_
i|y
_{
i
}
)
$
表示第
$
i
$
个位置的发射概率,于是有:
\begin{eqnarray}
\funp
{
P
}
(y
_
i|y
_{
i-1
}
) =
\frac
{{
\textrm
{
count
}}
(y
_{
i-1
}
,y
_
i)
}{{
\textrm
{
count
}
}
(y
_{
i-1
}
)
}
\funp
{
P
}
(y
_
i|y
_{
i-1
}
) =
\frac
{{
c
}
(y
_{
i-1
}
,y
_
i)
}{{
c
}
(y
_{
i-1
}
)
}
\label
{
eq:3.3-1
}
\end{eqnarray}
\begin{eqnarray}
\funp
{
P
}
(x
_
i|y
_{
i
}
) =
\frac
{{
\textrm
{
count
}}
(x
_
i,y
_
i)
}{{
\textrm
{
count
}
}
(y
_
i)
}
\funp
{
P
}
(x
_
i|y
_{
i
}
) =
\frac
{{
c
}
(x
_
i,y
_
i)
}{{
c
}
(y
_
i)
}
\label
{
eq:3.3-2
}
\end{eqnarray}
\noindent
其中,
${
\rm
{
count
}}
(
)
$
统计训练集中某种现象出现的次数。
\noindent
其中,
${
c
}
(
\cdot
)
$
统计训练集中某种现象出现的次数。
\parinterval
在获得转移概率和发射概率的基础上,对于一个句子进行命名实体识别可以被描述为:在观测序列
$
\seq
{
X
}$
(可见状态,即输入的词序列)的条件下,最大化标签序列
$
\seq
{
Y
}$
(隐含状态,即标记序列)的概率,即:
\begin{eqnarray}
...
...
@@ -531,7 +531,7 @@ Z(\seq{X})=\sum_{\seq{Y}}\exp(\sum_{i=1}^m\sum_{j=1}^k\lambda_{j}F_{j}(y_{i-1},y
\parinterval
无论在日常生活中还是在研究工作中,都会遇到各种各样的分类问题,例如挑选西瓜时需要区分“好瓜”和“坏瓜”、编辑看到一篇新闻稿件时要对稿件进行分门别类。事实上,在机器学习中,对“分类任务”的定义会更宽泛而并不拘泥于“类别”的概念,在对样本进行预测时,只要预测标签集合是有限的且预测标签是离散的,就可认定其为分类任务。
\parinterval
具体来说,分类任务目标是训练一个可以根据输入数据预测离散标签的
{
\small\bfnew
{
分类器
}}
\index
{
分类器
}
(Classifier
\index
{
Classifier
}
),也可称为分类模型。在有监督的分类任务中
\footnote
{
与之相对应的,还有无监督、半监督分类任务,不过这些内容不是本书讨论的重点。读者可以参看参考文献
\upcite
{
周志华2016机器学习,李航2019统计学习方法
}
对相关概念进行了解。
}
,训练数据集合通常由形似
$
(
\boldsymbol
{
x
_
i
}
,y
_
i
)
$
的带标注数据构成,
$
\boldsymbol
{
x
_
i
}
=(
x
_{
i
1
}
,x
_{
i
2
}
,
\ldots
,x
_{
ik
}
)
$
作为分类器的输入数据(通常被称作一个训练样本),其中
$
x
_{
ij
}$
表示样本
$
\boldsymbol
{
x
_
i
}
$
的第
$
j
$
个特征;
$
y
_
i
$
作为输入数据对应的
{
\small\bfnew
{
标签
}}
\index
{
标签
}
(Label)
\index
{
Label
}
,反映了输入数据对应的“类别”。若标签集合大小为
$
n
$
,则分类任务的本质是通过对训练数据集合的学习,建立一个从
$
k
$
维样本空间到
$
n
$
维标签空间的映射关系。更确切地说,分类任务的最终目标是学习一个条件概率分布
$
\funp
{
P
}
(
y|
\boldsymbol
{
x
}
)
$
,这样对于输入
$
\boldsymbol
{
x
}$
可以找到概率最大的
$
y
$
作为分类结果输出。
\parinterval
具体来说,分类任务目标是训练一个可以根据输入数据预测离散标签的
{
\small\bfnew
{
分类器
}}
\index
{
分类器
}
(Classifier
\index
{
Classifier
}
),也可称为分类模型。在有监督的分类任务中
\footnote
{
与之相对应的,还有无监督、半监督分类任务,不过这些内容不是本书讨论的重点。读者可以参看参考文献
\upcite
{
周志华2016机器学习,李航2019统计学习方法
}
对相关概念进行了解。
}
,训练数据集合通常由形似
$
(
\boldsymbol
{
x
}_
i,y
_
i
)
$
的带标注数据构成,
$
\boldsymbol
{
x
}_
i
=(
x
_{
i
1
}
,x
_{
i
2
}
,
\ldots
,x
_{
ik
}
)
$
作为分类器的输入数据(通常被称作一个训练样本),其中
$
x
_{
ij
}$
表示样本
$
\boldsymbol
{
x
}_
i
$
的第
$
j
$
个特征;
$
y
_
i
$
作为输入数据对应的
{
\small\bfnew
{
标签
}}
\index
{
标签
}
(Label)
\index
{
Label
}
,反映了输入数据对应的“类别”。若标签集合大小为
$
n
$
,则分类任务的本质是通过对训练数据集合的学习,建立一个从
$
k
$
维样本空间到
$
n
$
维标签空间的映射关系。更确切地说,分类任务的最终目标是学习一个条件概率分布
$
\funp
{
P
}
(
y|
\boldsymbol
{
x
}
)
$
,这样对于输入
$
\boldsymbol
{
x
}$
可以找到概率最大的
$
y
$
作为分类结果输出。
\parinterval
与概率图模型一样,分类模型中也依赖特征定义。其定义形式与
\ref
{
sec3:feature
}
节的描述一致,这里不再赘述。分类任务一般根据类别数量分为二分类任务和多分类任务,二分类任务是最经典的分类任务,只需要对输出进行非零即一的预测。多分类任务则可以有多种处理手段,比如,可以将其“拆解”为多个二分类任务求解,或者直接让模型输出多个类别中的一个。在命名实体识别中,往往会使用多类别分类模型。比如,在BIO标注下,有三个类别(B、I和O)。一般来说,类别数量越大分类的难度也越大。比如,BIOES标注包含5个类别,因此使用同样的分类器,它要比BIO标注下的分类问题难度大。另一方面,更多的类别有助于准确的刻画目标问题。因此在实践中需要在类别数量和分类难度之间找到一种平衡。
...
...
Chapter4/Figures/The-process-of-statistical-hypothesis-testing.tex
0 → 100644
查看文件 @
2f9feefe
\usetikzlibrary
{
shapes.geometric
}
\begin{tikzpicture}
\node
[font=\footnotesize]
(overall) at (0,0)
{
\small\bfnew
{
总
\ \ \ \
体
}}
;
\node
[anchor=north,font=\footnotesize]
(hypo) at ([yshift=-3em]overall.south)
{
某种假设
}
;
\coordinate
(A) at ([yshift=-3.5em,xshift=-1.6em]overall);
\coordinate
(B) at ([yshift=0.3em,xshift=0.3em]A);
\draw
[]
(B) .. controls +(east:1.3em) and +(west:0.3em) .. ([xshift=1.5em,yshift=2em]B) .. controls +(east:0.3em) and +(west:1.3em) .. ([xshift=3em]B);
\draw
[<->]
([yshift=2.4em]A) -- (A) -- ([xshift=3.7em]A);
\begin{pgfonlayer}
{
background
}
\node
[draw,thick,rectangle,inner sep=0.5em,rounded corners=2pt,fill=red!15,drop shadow] [fit = (overall)(hypo)] (box1)
{}
;
\end{pgfonlayer}
\node
[draw,fill=yellow!15,thick,anchor=west,font=\footnotesize,align=center,drop shadow]
(sample) at ([xshift=4em]box1.east)
{
样本
\\
观察结果
}
;
\node
[anchor=west,draw,diamond,fill=ugreen!15,drop shadow,aspect=2,font=\scriptsize,align=center,inner sep=1pt,thick]
(judge) at ([xshift=3em]sample.east)
{
小概率事件
\\
发生?
}
;
\node
[draw,fill=blue!10,thick,drop shadow,anchor=west,font=\footnotesize,align=center,thick]
(refuse) at ([xshift=6em]judge.north)
{
拒绝原假设
}
;
\node
[draw,fill=blue!10,thick,drop shadow,anchor=west,font=\footnotesize,align=center,thick]
(accept) at ([xshift=6em]judge.south)
{
接受原假设
}
;
\draw
[->,thick]
(box1.east) -- node[above,font=
\scriptsize
]
{
抽样
}
(sample.west);
\draw
[->,thick]
(sample.east) -- node[above,font=
\scriptsize
]
{
检验
}
(judge.west);
\draw
[->,thick]
(judge.north) -- node[above,font=
\scriptsize
]
{
是
}
(refuse.west);
\draw
[->,thick]
(judge.south) -- node[below,font=
\scriptsize
]
{
否
}
(accept.west);
\end{tikzpicture}
Chapter4/chapter4.tex
查看文件 @
2f9feefe
...
...
@@ -647,7 +647,7 @@ His house is on the south bank of the river.
%----------------------------------------------
\begin{figure}
[htp]
\centering
\input
{
./Chapter4/Figures/The
process of statistical hypothesis
testing
}
\input
{
./Chapter4/Figures/The
-process-of-statistical-hypothesis-
testing
}
\caption
{
统计假设检验的流程
}
\label
{
fig:4-13
}
\end{figure}
...
...
Chapter5/chapter5.tex
查看文件 @
2f9feefe
...
...
@@ -86,7 +86,7 @@ IBM模型由Peter F. Brown等人于上世纪九十年代初提出\upcite{DBLP:jo
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection
{
如何进行翻译?
}
\subsection
{
翻译的流程
}
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
...
...
@@ -160,7 +160,7 @@ IBM模型由Peter F. Brown等人于上世纪九十年代初提出\upcite{DBLP:jo
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection
{
基本框架
}
\subsection
{
统计机器翻译的
基本框架
}
\parinterval
为了对统计机器翻译有一个直观的认识,下面将介绍如何构建一个非常简单的统计机器翻译系统,其中涉及到的很多思想来自IBM模型。这里,仍然使用数据驱动的统计建模方法。图
\ref
{
fig:5-5
}
展示了系统的主要流程,包括两个步骤:
...
...
Chapter7/chapter7.tex
查看文件 @
2f9feefe
...
...
@@ -474,11 +474,11 @@ d = {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2)} \c
\parinterval
抽取双语短语之后,需要对每个双语短语的质量进行评价。这样,在使用这些双语短语时,可以更有效地估计整个句子翻译的好坏。在统计机器翻译中,一般用双语短语出现的可能性大小来度量双语短语的好坏。这里,使用相对频次估计对短语的翻译条件概率进行计算,公式如下:
\begin{eqnarray}
\funp
{
P
}
(
\bar
{
t
}
|
\bar
{
s
}
) =
\frac
{
\textrm
{
count
}
(
\bar
{
s
}
,
\bar
{
t
}
)
}{
\textrm
{
count
}
(
\bar
{
s
}
)
}
\funp
{
P
}
(
\bar
{
t
}
|
\bar
{
s
}
) =
\frac
{
c(
\bar
{
s
}
,
\bar
{
t
}
)
}{
c
(
\bar
{
s
}
)
}
\label
{
eq:7-13
}
\end{eqnarray}
\parinterval
给定一个双语句对
$
(
\seq
{
s
}
,
\seq
{
t
}
)
$
,
$
\textrm
{
count
}
(
\bar
{
s
}
)
$
表示短语
$
\bar
{
s
}$
在
$
\seq
{
s
}$
中出现的次数,
$
\textrm
{
count
}
(
\bar
{
s
}
,
\bar
{
t
}
)
$
表示双语短语
$
(
\bar
{
s
}
,
\bar
{
t
}
)
$
在
$
(
\seq
{
s
}
,
\seq
{
t
}
)
$
中被抽取出来的次数。对于一个包含多个句子的语料库,
$
\textrm
{
count
}
(
\bar
{
s
}
)
$
和
$
\textrm
{
count
}
(
\bar
{
s
}
,
\bar
{
t
}
)
$
可以按句子进行累加。类似的,也可以用同样的方法,计算
$
\bar
{
t
}$
到
$
\bar
{
s
}$
的翻译概率,即
$
\funp
{
P
}
(
\bar
{
s
}
|
\bar
{
t
}
)
$
。一般会同时使用
$
\funp
{
P
}
(
\bar
{
t
}
|
\bar
{
s
}
)
$
和
$
\funp
{
P
}
(
\bar
{
s
}
|
\bar
{
t
}
)
$
度量一个双语短语的好与坏。
\parinterval
给定一个双语句对
$
(
\seq
{
s
}
,
\seq
{
t
}
)
$
,
$
c
(
\bar
{
s
}
)
$
表示短语
$
\bar
{
s
}$
在
$
\seq
{
s
}$
中出现的次数,
$
c
(
\bar
{
s
}
,
\bar
{
t
}
)
$
表示双语短语
$
(
\bar
{
s
}
,
\bar
{
t
}
)
$
在
$
(
\seq
{
s
}
,
\seq
{
t
}
)
$
中被抽取出来的次数。对于一个包含多个句子的语料库,
$
c
(
\bar
{
s
}
)
$
和
$
c
(
\bar
{
s
}
,
\bar
{
t
}
)
$
可以按句子进行累加。类似的,也可以用同样的方法,计算
$
\bar
{
t
}$
到
$
\bar
{
s
}$
的翻译概率,即
$
\funp
{
P
}
(
\bar
{
s
}
|
\bar
{
t
}
)
$
。一般会同时使用
$
\funp
{
P
}
(
\bar
{
t
}
|
\bar
{
s
}
)
$
和
$
\funp
{
P
}
(
\bar
{
s
}
|
\bar
{
t
}
)
$
度量一个双语短语的好与坏。
\parinterval
当遇到低频短语时,短语翻译概率的估计可能会不准确。例如,短语
$
\bar
{
s
}$
和
$
\bar
{
t
}$
在语料中只出现了一次,且在一个句子中共现,那么
$
\bar
{
s
}$
到
$
\bar
{
t
}$
的翻译概率为
$
\funp
{
P
}
(
\bar
{
t
}
|
\bar
{
s
}
)=
1
$
,这显然是不合理的,因为
$
\bar
{
s
}$
和
$
\bar
{
t
}$
的出现完全可能是偶然事件。既然直接度量双语短语的好坏会面临数据稀疏问题,一个自然的想法就是把短语拆解成单词,利用双语短语中单词翻译的好坏间接度量双语短语的好坏。为了达到这个目的,可以使用
{
\small\bfnew
{
词汇化翻译概率
}}
\index
{
词汇化翻译概率
}
(Lexical Translation Probability)
\index
{
Lexical Translation Probability
}
。前面借助词对齐信息完成了双语短语的抽取,因此,词对齐信息本身就包含了短语内部单词之间的对应关系。因此同样可以借助词对齐来计算词汇翻译概率,公式如下:
\begin{eqnarray}
...
...
Chapter8/Figures/figure-hyper-graph-representation-of-machine-translation-derivation.tex
查看文件 @
2f9feefe
...
...
@@ -11,7 +11,7 @@
\node
[anchor=north,inner sep=0.2em,draw,minimum height=1.4em,minimum width=10.5em] (n3) at ([xshift=-3em,yshift=-12em]n1.south)
{
X | 0,2 | the answer | NA
}
;
\node
[anchor=west,inner sep=0.2em,draw,minimum height=1.4em,minimum width=10.5em] (n4) at ([xshift=14em,yshift=0em]n3.east)
{
X | 3,4 | a question | NA
}
;
\node
[anchor=south,inner sep=0.2em,draw,minimum height=1.4em,minimum width=4.3em] (s1) at ([xshift=9.3em,yshift=4em]n1.north)
{
goal item
}
;
\node
[anchor=south,inner sep=0.2em,draw,minimum height=1.4em,minimum width=4.3em] (s1) at ([xshift=9.3em,yshift=4em]n1.north)
{
根结点
}
;
\node
[anchor=north] (n5) at ([xshift=0em,yshift=-3em]n3.south)
{$
\textrm
{
对
}_
0
\textrm
{
回答
}_
1
$}
;
\node
[anchor=north] (n51) at ([xshift=0em,yshift=0em]n5.south)
{
with the answer
}
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论