Commit a4ddb2af by xiaotong

updates of section 3

parent a151fab0
......@@ -280,7 +280,7 @@
\parinterval 回到设计$g(\mathbf{s},\mathbf{t})$的问题上。这里,我们采用``大题小作''的方法,这个技巧在第二章已经进行了充分的介绍。具体来说,直接建模句子之间的对应比较困难,但可以利用单词之间的对应来描述句子之间的对应关系。这就用到了上一小节所介绍的单词翻译概率。
\parinterval 我们首先引入一个非常重要的概念\ \dash \ {\small\sffamily\bfseries{词对齐}}(Word Alignment),它是统计机器翻译中最核心的概念之一。词对齐描述了平行句对中单词之间的对应关系,它体现了一种观点:本质上句子之间的对应是由单词之间的对应表示的。当然,这个观点在神经机器翻译或者其模型中可能会有不同的理解,但是翻译句子的过程中我们考虑词级的对应关系是符合我们对语言的认知的。图\ref{fig:3-7} 展示了一个句对$\mathbf{s}$$\mathbf{t}$,单词的右下标数字表示了该词在句中的位置,而虚线表示的是句子$\mathbf{s}$$\mathbf{t}$中的词对齐关系。比如,``满意''的右下标数字5表示在句子$\mathbf{s}$中处于第5个位置,``satisfied''的右下标数字3表示在句子$\mathbf{t}$中处于第3个位置,``满意''和``satisfied''之间的虚线表示两个单词之间是对齐的。为方便描述,我们用二元组$(j,i)$ 来描述词对齐,它表示源语言句子的第$j$个单词对应目标语言句子的第$i$个单词,即单词$s_j$$t_i$对应。通常,也会把$(j,i)$称作一条{\small\sffamily\bfseries{词对齐连接}}。图\ref{fig:3-7} 中共有5 条虚线,表示有5组单词之间的词对齐连接。我们把这些词对齐连接构成的集合作为词对齐的一种表示,记为$\mathbf{a}$,即$A={\{(1,1),(2,4),(3,5),(4,2)(5,3)}\}$
\parinterval 我们首先引入一个非常重要的概念\ \dash \ {\small\sffamily\bfseries{词对齐}}(Word Alignment),它是统计机器翻译中最核心的概念之一。词对齐描述了平行句对中单词之间的对应关系,它体现了一种观点:本质上句子之间的对应是由单词之间的对应表示的。当然,这个观点在神经机器翻译或者其模型中可能会有不同的理解,但是翻译句子的过程中我们考虑词级的对应关系是符合我们对语言的认知的。图\ref{fig:3-7} 展示了一个句对$\mathbf{s}$$\mathbf{t}$,单词的右下标数字表示了该词在句中的位置,而虚线表示的是句子$\mathbf{s}$$\mathbf{t}$中的词对齐关系。比如,``满意''的右下标数字5表示在句子$\mathbf{s}$中处于第5个位置,``satisfied''的右下标数字3表示在句子$\mathbf{t}$中处于第3个位置,``满意''和``satisfied''之间的虚线表示两个单词之间是对齐的。为方便描述,我们用二元组$(j,i)$ 来描述词对齐,它表示源语言句子的第$j$个单词对应目标语言句子的第$i$个单词,即单词$s_j$$t_i$对应。通常,也会把$(j,i)$称作一条{\small\sffamily\bfseries{词对齐连接}}。图\ref{fig:3-7} 中共有5 条虚线,表示有5组单词之间的词对齐连接。我们把这些词对齐连接构成的集合作为词对齐的一种表示,记为$\mathbf{a}$,即$A={\{(1,1),(2,4),(3,5),(4,2)(5,3)}\}$
%----------------------------------------------
% 图3.11
\begin{figure}[htp]
......@@ -396,7 +396,7 @@ g(\mathbf{s},\mathbf{t}) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)}
\parinterval\ref{fig:3-10}给出了贪婪解码算法的伪代码。其中$\pi$保存所有源语单词的候选译文,$\pi[j]$表示第$j$个源语单词的翻译候选的集合,$best$保存当前最好的翻译结果,$h$保存当前步生成的所有译文候选。算法的主体有两层循环,在内层循环中如果第$j$个源语单词没有被翻译过,则用$best$和它的候选译文$\pi[j]$生成新的翻译,再存于$h$中,即操作$h=h\cup{\textrm{Join}(best,\pi[j])}$。外层循环再从$h$中选择得分最高的结果存于$best$中,即操作$best=\textrm{PruneForTop1}(h)$;同时标识相应的源语单词已翻译,即$used[best.j]=true$
该算法的核心在于,我们一直维护一个当前最好的结果,之后每一步考虑扩展这个结果的所有可能,并计算模型得分,然后再保留扩展后的最好结果。注意,在每一步中,只有排名第一的结果才会被保留,其结果都会被丢弃。这也体现了贪婪的思想。显然这个方法不能保证搜索到全局最优的结果,但是由于每次扩展只考虑一个最好的结果,因此该方法速度很快。图\ref{fig:3-11}给出了算法执行过程的简单示例。当然,机器翻译的解码方法有很多,这里我们仅仅使用简单的贪婪搜索方法来解决机器翻译的解码问题,在后续章节会对更加优秀的解码方法进行介绍。
该算法的核心在于,我们一直维护一个当前最好的结果,之后每一步考虑扩展这个结果的所有可能,并计算模型得分,然后再保留扩展后的最好结果。注意,在每一步中,只有排名第一的结果才会被保留,其结果都会被丢弃。这也体现了贪婪的思想。显然这个方法不能保证搜索到全局最优的结果,但是由于每次扩展只考虑一个最好的结果,因此该方法速度很快。图\ref{fig:3-11}给出了算法执行过程的简单示例。当然,机器翻译的解码方法有很多,这里我们仅仅使用简单的贪婪搜索方法来解决机器翻译的解码问题,在后续章节会对更加优秀的解码方法进行介绍。
%----------------------------------------------
% 图3.13
\begin{figure}[htp]
......@@ -425,7 +425,7 @@ g(\mathbf{s},\mathbf{t}) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)}
\parinterval\ref{sec:simple-mt-example}节中,我们实现了一个简单的基于词的统计机器翻译模型,内容涉及建模、训练和解码。但是,还有很多问题还没有进行深入讨论,比如,如何处理空翻译?如何对调序问题进行建模?如何用更严密的数学模型描述翻译过程?如何对更加复杂的统计模型进行训练?等等。针对以上问题,本节将系统的介绍IBM统计机器翻译模型。作为经典的器翻译模型,对IBM模型的学习将帮助我们建立对自然语言处理问题的系统化建模思想,特别是对问题的数学描述方法将会成为理解本书后续内容的基础工具。
\subsection{噪声信道模型}\index{Chapter3.3.1}
\parinterval 首先,重新思考一下人类进行翻译的过程。对于给定的源语句$\mathbf{s}$,人不会像计算机一样尝试很多的可能,而是快速准确的翻译出一个或者少数几个正确的译文。在人看来,除了正确的译文外,其它的翻译都是不正确的,或者说除了少数的译文人甚至都不会考虑太多其它的可能性。但是,在统计机器翻译的世界里,没有译文是不可能的。换句话说,对于源语言句子$\mathbf{s}$,所有目标语词串$\mathbf{t}$都是可能的译文,只是可能性大小不同。即每对$(\mathbf{s},\mathbf{t})$都有一个概率值$\textrm{P}(\mathbf{t}|\mathbf{s})$来描述$\mathbf{s}$翻译为$\mathbf{t}$的好与坏(图\ref{fig:3-12})。
\parinterval 首先,重新思考一下人类进行翻译的过程。对于给定的源语句$\mathbf{s}$,人不会像计算机一样尝试很多的可能,而是快速准确的翻译出一个或者少数几个正确的译文。在人看来,除了正确的译文外,其他的翻译都是不正确的,或者说除了少数的译文人甚至都不会考虑太多其他的可能性。但是,在统计机器翻译的世界里,没有译文是不可能的。换句话说,对于源语言句子$\mathbf{s}$,所有目标语词串$\mathbf{t}$都是可能的译文,只是可能性大小不同。即每对$(\mathbf{s},\mathbf{t})$都有一个概率值$\textrm{P}(\mathbf{t}|\mathbf{s})$来描述$\mathbf{s}$翻译为$\mathbf{t}$的好与坏(图\ref{fig:3-12})。
%----------------------------------------------
% 图3.19
\begin{figure}[htp]
......@@ -486,7 +486,7 @@ g(\mathbf{s},\mathbf{t}) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{统计机器翻译的三个基本问题}\index{Chapter3.3.2}
\parinterval 公式\ref{eqC3.17-new}给出了统计机器翻译问题的数学描述。为了实现这个过程,面临着三个基本问题:
\parinterval 公式\ref{eqC3.17-new}给出了统计机器翻译的数学描述。为了实现这个过程,面临着三个基本问题:
\begin{itemize}
\vspace{0.5em}
......@@ -513,11 +513,11 @@ g(\mathbf{s},\mathbf{t}) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)}
\subsubsection{词对齐}\index{Chapter3.3.2.1}
\parinterval IBM模型的一个非常基础的假设是词对齐假设。{\small\sffamily\bfseries{词对齐}}(Word Alignment)描述了源语言句子和目标语句子之间单词级别的对应。具体地说,给定源语句子$\mathbf{s}$和目标语译文$\mathbf{t}$,其中$\mathbf{s}$$s_1$$s_m$$m$个单词组成,$\mathbf{t}$$t_1$$t_l$$l$个单词组成。IBM模型假设词对齐满足下述两个条件
\parinterval IBM模型的一个基本的假设是词对齐假设。{\small\sffamily\bfseries{词对齐}}(Word Alignment)描述了源语言句子和目标语句子之间单词级别的对应。具体来说,给定源语句子$\mathbf{s}=s_1...s_m$和目标语译文$\mathbf{t}=t_1...t_l$,IBM模型假设词对齐具有如下两个性质
\begin{itemize}
\vspace{0.5em}
\item 一个源语言单词只能对应一个目标语单词。在图\ref{fig:3-15}表示的例子中,(a)和(c)都满足该条件,尽管(c)中的``谢谢''和``你''都对应``thanks'',但并不违背条件。而(b)不满足条件,因为``谢谢''同时对应到了两个目标语单词上。这个约束条件也导致这里的词对齐变成一种{\small\sffamily\bfseries{非对称的词对齐}},因为它只对源语言做了约束,但是目标语言没有。使用这样的约束的目的是为了减少建模的复杂度。在后来的方法中也提出了双向词对齐,用于建模一个源语言单词对应到多个目标语单词的情况。
\item 一个源语言单词只能对应一个目标语单词。在图\ref{fig:3-15}表示的例子中,(a)和(c)都满足该条件,尽管(c)中的``谢谢''和``你''都对应``thanks'',但并不违背这个约束。而(b)不满足约束,因为``谢谢''同时对应到了两个目标语单词上。这个约束条件也导致这里的词对齐变成一种{\small\sffamily\bfseries{非对称的词对齐}}(Asymmetric Word Alignment),因为它只对源语言做了约束,但是目标语言没有。使用这样的约束的目的是为了减少建模的复杂度。在IBM模型之后的方法中也提出了双向词对齐,用于建模一个源语言单词对应到多个目标语单词的情况。
%----------------------------------------------
% 图3.21
\begin{figure}[htp]
......@@ -528,7 +528,7 @@ g(\mathbf{s},\mathbf{t}) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)}
\end{figure}
%---------------------------
\vspace{0.5em}
\item 源语言单词可以翻译为空,这时它对应到一个虚拟或伪造的目标语单词$t_0$。在图\ref{fig:3-16}所示的例子中,``在''没有对应到``on the table''中的任意一个词,而是把它对应到$t_0$上。这个条件保证了所有的源语言单词都能找到一个目标语单词对应。这个条件也很好的引入了{\small\sffamily\bfseries{空对齐}}的思想,即源语言单词不对应任何真实存在的单词的情况。而这种空对齐的情况在翻译中是频繁出现的,比如虚词的翻译。
\item 源语言单词可以翻译为空,这时它对应到一个虚拟或伪造的目标语单词$t_0$。在图\ref{fig:3-16}所示的例子中,``在''没有对应到``on the table''中的任意一个词,而是把它对应到$t_0$上。这样,所有的源语言单词都能找到一个目标语单词对应。这种设计也很好的引入了{\small\sffamily\bfseries{空对齐}}的思想,即源语言单词不对应任何真实存在的单词的情况。而这种空对齐的情况在翻译中是频繁出现的,比如虚词的翻译。
%----------------------------------------------
% 图3.21
\begin{figure}[htp]
......@@ -540,11 +540,12 @@ g(\mathbf{s},\mathbf{t}) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)}
%---------------------------
\end{itemize}
\parinterval 通常,我们把词对齐记为$\mathbf{a}$,它由$a_1$$a_m$$m$个词对齐连接组成,即$\mathbf{a}=a_1...a_m$,其中$m$表示源语言句子长度。$a_j$表示第$j$个源语单词$s_j$对应的目标语单词的位置。在图\ref{fig:3-16}的例子中,词对齐关系可以记为$a_1=0, a_2=3, a_3=1$。它表示第1个源语单词``在''对应到目标语译文的第0个位置,第2个源语单词``桌子''对应到目标语译文的第3个位置是,第3个源语单词``上''对应到目标语译文的第1个位置。
\parinterval 通常,我们把词对齐记为$\mathbf{a}$,它由$a_1$$a_m$$m$个词对齐连接组成,即$\mathbf{a}=a_1...a_m$$a_j$表示第$j$个源语单词$s_j$对应的目标语单词的位置。在图\ref{fig:3-16}的例子中,词对齐关系可以记为$a_1=0, a_2=3, a_3=1$,即第1个源语单词``在''对应到目标语译文的第0个位置,第2个源语单词``桌子''对应到目标语译文的第3个位置是,第3个源语单词``上''对应到目标语译文的第1个位置。
\subsubsection{基于词对齐的翻译模型}\index{Chapter3.3.2.2}
\parinterval 直接估计$\textrm{P}(\mathbf{s}|\mathbf{t})$很难,因为大部分句子即使在大规模的语料中也只出现过一次甚至没有出现过。为了解决这个问题,IBM模型假设:句子之间的对应可以由单词之间的对应进行表示。更具体的说,把句子之间对应的概率转换为所有可能的词对齐的生成概率,如下:
\parinterval 直接准确估计$\textrm{P}(\mathbf{s}|\mathbf{t})$很难,训练数据只能覆盖整个样本空间非常小的一部分,绝大多数句子在训练数据中一次也没出现过。为了解决这个问题,IBM模型假设:句子之间的对应可以由单词之间的对应进行表示。于是,句子翻译的概率可以被转化为词对齐生成的概率:
\begin{eqnarray}
\textrm{P}(\mathbf{s}|\mathbf{t})= \sum_{\mathbf{a}}\textrm{P}(\mathbf{s},\mathbf{a}|\mathbf{t})
\label{eqC3.18-new}
......@@ -552,7 +553,7 @@ g(\mathbf{s},\mathbf{t}) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)}
\parinterval 公式\ref{eqC3.18-new}使用了简单的全概率公式把$\textrm{P}(\mathbf{s}|\mathbf{t})$进行展开。通过访问$\mathbf{s}$$\mathbf{t}$之间所有可能的词对齐$\mathbf{a}$,并把对应的对齐概率进行求和,得到了$\mathbf{t}$$\mathbf{s}$的翻译概率。这里,可以把词对齐看作翻译的隐含变量,这样从$\mathbf{t}$$\mathbf{s}$的生成就变为从$\mathbf{t}$同时生成$\mathbf{s}$和隐含变量$\mathbf{a}$的问题。引入隐含变量是生成式模型常用的手段,通过使用隐含变量,可以把较为困难的端到端学习问题转化为分步学习问题。
\parinterval 举个例子说明公式\ref{eqC3.18-new}的实际意义。如图\ref{fig:3-17}所示,可以把从``谢谢 你''到``thank you''的翻译分解为9种可能的词对齐。因为源语言句子$\mathbf{s}$有2个词,目标语言句子$\mathbf{t}$加上空标记$t_0$共3个词,因此每个源语言单词有3个可能对齐的位置,整个句子共有$3\times3=9$种可能的词对齐。
\parinterval 举个例子说明公式\ref{eqC3.18-new}的实际意义。如图\ref{fig:3-17}所示,可以把从``谢谢\ 你''到``thank you''的翻译分解为9种可能的词对齐。因为源语言句子$\mathbf{s}$有2个词,目标语言句子$\mathbf{t}$加上空标记$t_0$共3个词,因此每个源语言单词有3个可能对齐的位置,整个句子共有$3\times3=9$种可能的词对齐。
%----------------------------------------------
% 图3.17
\begin{figure}[htp]
......@@ -569,23 +570,23 @@ g(\mathbf{s},\mathbf{t}) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)}
\label{eqC3.19-new}
\end{eqnarray}
\noindent 其中$s_j$$a_j$分别表示第$j$个源语言单词及第$j$源语言单词对应到目标位置,$s_1^{j-1}$$a_1^{j}$表示第$j-1$个源语言单词和第$j$个源语言单词的对齐$m$表示源语句子的长度。公式\ref{eqC3.19-new}可以进一步被分解为四个部分,具体含义如下:
\noindent 其中$s_j$$a_j$分别表示第$j$个源语言单词及第$j$源语言单词对应到目标位置,$s_1^{j-1}$表示前$j-1$个源语言单词(即$s_1^{j-1}=s_1...s_{j-1}$),$a_1^{j-1}$表示前$j-1$个源语言的词对齐(即$a_1^{j-1}=a_1...a_{j-1}$$m$表示源语句子的长度。公式\ref{eqC3.19-new}可以进一步被分解为四个部分,具体含义如下:
\begin{itemize}
\item 根据译文$\mathbf{t}$选择源文$\mathbf{s}$的长度$m$,用$\textrm{P}(m|\mathbf{t})$表示;
\item 当确定源长度$m$后,循环每个位置$j$逐次生成每个源语言单词$s_j$,也就是$\prod_{j=1}^m$计算的内容;
\item 当确定源语言句子的长度$m$后,循环每个位置$j$逐次生成每个源语言单词$s_j$,也就是$\prod_{j=1}^m$计算的内容;
\item 根据译文$\mathbf{t}$、源文长度$m$、已经生成的源语言单词$s_1^{j-1}$和对齐$a_1^{j-1}$,生成第$j$个位置的对齐结果$a_j$,用$\textrm{P}(a_j|a_1^{j-1},s_1^{j-1},m,\mathbf{t})$表示;
\item 对于每个位置$j$根据译文$\mathbf{t}$、源文长度$m$、已经生成的源语言单词$s_1^{j-1}$和对齐$a_1^{j-1}$,生成第$j$个位置的对齐结果$a_j$,用$\textrm{P}(a_j|a_1^{j-1},s_1^{j-1},m,\mathbf{t})$表示;
\item 根据译文$\mathbf{t}$、源文长度$m$、已经生成的源语言单词$s_1^{j-1}$和对齐$a_1^j$,生成第$j$个位置的源语言单词$s_j$,用$\textrm{P}(s_j|a_1^{j},s_1^{j-1},m,\mathbf{t})$表示。
\item 对于每个位置$j$根据译文$\mathbf{t}$、源文长度$m$、已经生成的源语言单词$s_1^{j-1}$和对齐$a_1^j$,生成第$j$个位置的源语言单词$s_j$,用$\textrm{P}(s_j|a_1^{j},s_1^{j-1},m,\mathbf{t})$表示。
\end{itemize}
\parinterval 换句话说,当我们求概率分布$\textrm{P}(\mathbf{s},\mathbf{a}|\mathbf{t})$时,首先根据译文$\mathbf{t}$确定源语言句子$\mathbf{s}$的长度$m$;当知道源语言句子有多少个单词后,循环$m$次,依次生成第1个到第$m$个源语言单词;当生成第$j$个源语言单词时,要先确定它是由哪个目标语译文单词生成的,即确定生成的源语言单词对应的译文单词的位置;当知道了目标语译文单词的位置,就能确定第$j$个位置的源语言单词。
\parinterval 换句话说,当我们求$\textrm{P}(\mathbf{s},\mathbf{a}|\mathbf{t})$时,首先根据译文$\mathbf{t}$确定源语言句子$\mathbf{s}$的长度$m$;当知道源语言句子有多少个单词后,循环$m$次,依次生成第1个到第$m$个源语言单词;当生成第$j$个源语言单词时,要先确定它是由哪个目标语译文单词生成的,即确定生成的源语言单词对应的译文单词的位置;当知道了目标语译文单词的位置,就能确定第$j$个位置的源语言单词。
\parinterval 需要注意的是公式\ref{eqC3.19-new}定义的模型并没有做任何化简和假设,也就是说公式的左右两端是严格相等的。在后面的内容中会看到,这种将一个整体进行拆分的方法可以有助于分步骤化简并处理问题。
\subsubsection{基于词对齐的翻译实例}\index{Chapter3.3.2.3}
\parinterval 我们用前面图\ref{fig:3-16}中例子来对公式\ref{eqC3.19-new}进行说明。例子中,源语言句子``在 桌子 上''目标语译文``on the table''之间的词对齐为$\mathbf{a}=\{\textrm{1-0, 2-3, 3-1}\}$。公式\ref{eqC3.19-new}的计算过程如下:
\parinterval 我们用前面图\ref{fig:3-16}中例子来对公式\ref{eqC3.19-new}进行说明。例子中,源语言句子``在\ \ 桌子\ \ 上''目标语译文``on the table''之间的词对齐为$\mathbf{a}=\{\textrm{1-0, 2-3, 3-1}\}$。公式\ref{eqC3.19-new}的计算过程如下:
\begin{itemize}
\item 首先根据译文确定源文$\mathbf{s}$的单词数量($m=3$),即$\textrm{P}(m=3|\textrm{``}t_0\;\textrm{on\;the\;table''})$
......@@ -602,17 +603,17 @@ g(\mathbf{s},\mathbf{t}) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)}
&&{\textrm{P}(f_1=\textrm{``在''} \mid \textrm{\{1-0\}},\phi,3,\textrm{``$t_0$ on the table''}){\times} } \nonumber \\
&&{\textrm{P}(a_2=3 \mid \textrm{\{1-0\}},\textrm{``在''},3,\textrm{``$t_0$ on the table''}) {\times}} \nonumber \\
&&{\textrm{P}(f_2=\textrm{``桌子''} \mid \textrm{\{1-0, 2-3\}},\textrm{``在''},3,\textrm{``$t_0$ on the table''}) {\times}} \nonumber \\
&&{\textrm{P}(a_3=1 \mid \textrm{\{1-0, 2-3\}},\textrm{``在 桌子''},3,\textrm{``$t_0$ on the table''}) {\times}} \nonumber \\
&&{\textrm{P}(f_3=\textrm{``上''} \mid \textrm{\{1-0, 2-3, 3-1\}},\textrm{``在 桌子''},3,\textrm{``$t_0$ on the table''}) }
&&{\textrm{P}(a_3=1 \mid \textrm{\{1-0, 2-3\}},\textrm{``在\ \ 桌子''},3,\textrm{``$t_0$ on the table''}) {\times}} \nonumber \\
&&{\textrm{P}(f_3=\textrm{``上''} \mid \textrm{\{1-0, 2-3, 3-1\}},\textrm{``在\ \ 桌子''},3,\textrm{``$t_0$ on the table''}) }
\label{eqC3.20-new}
\end{eqnarray}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{IBM模型1-2}\index{Chapter3.4}
\parinterval 公式\ref{eqC3.18-new}和公式\ref{eqC3.19-new}把翻译问题定义为对译文和词对齐同时进行生成的问题。其中有两个问题:首先,公式\ref{eqC3.18-new}的右端($ \sum_{\mathbf{a}}\textrm{P}(\mathbf{s},\mathbf{a}|\mathbf{t})$)要求对所有的词对齐概率进行求和,但是词对齐的数量随着句子长度是呈指数增长,如何遍历所有的对齐$\mathbf{a}$?其次,公式\ref{eqC3.19-new}虽然对词对齐的问题进行了描述,但是模型中的很多参数仍然很复杂,如何计算$\textrm{P}(m|\mathbf{t})$$\textrm{P}(a_j|a_1^{j-1},s_1^{j-1},m,\mathbf{t})$$\textrm{P}(s_j|a_1^{j},s_1^{j-1},m,\mathbf{t})$?针对这些问题,Brown等人总共提出了5种解决方案,这也就是被后人所熟知的5个IBM翻译模型。第一个问题可以通过一定的数学或者工程技巧进行求解;第二个问题可以通过一些假设进行化简,依据化简的层次和复杂度不同,可以分为IBM模型1、IBM模型2、IBM模型3、IBM模型4以及IBM模型5。本节首先介绍较为简单的IBM模型1-2。
\parinterval 公式\ref{eqC3.18-new}和公式\ref{eqC3.19-new}把翻译问题定义为对译文和词对齐同时进行生成的问题。其中有两个问题:首先,公式\ref{eqC3.18-new}的右端($ \sum_{\mathbf{a}}\textrm{P}(\mathbf{s},\mathbf{a}|\mathbf{t})$)要求对所有的词对齐概率进行求和,但是词对齐的数量随着句子长度是呈指数增长,如何遍历所有的对齐$\mathbf{a}$?其次,公式\ref{eqC3.19-new}虽然对词对齐的问题进行了描述,但是模型中的很多参数仍然很复杂,如何计算$\textrm{P}(m|\mathbf{t})$$\textrm{P}(a_j|a_1^{j-1},s_1^{j-1},m,\mathbf{t})$$\textrm{P}(s_j|a_1^{j},s_1^{j-1},m,\mathbf{t})$?针对这些问题,Brown等人总共提出了5种解决方案,这也就是被后人所熟知的5个IBM翻译模型。第一个问题可以通过一定的数学或者工程技巧进行求解;第二个问题可以通过一些假设进行化简,依据化简的层次和复杂度不同,可以分为IBM模型1、IBM模型2、IBM模型3、IBM模型4以及IBM模型5。本节首先介绍较为简单的IBM模型1-2。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{IBM模型1}\index{Chapter3.4.1}
\parinterval IBM模型1对公式\ref{eqC3.19-new}中的三项进行了简化。具体化简方法如下:
\parinterval IBM模型1对公式\ref{eqC3.19-new}中的三项进行了简化。具体方法如下:
\begin{itemize}
\vspace{0.5em}
\item 假设$\textrm{P}(m|\mathbf{t})$为常数$\varepsilon$,即源语言的长度的生成概率服从均匀分布,如下:
......@@ -621,15 +622,15 @@ g(\mathbf{s},\mathbf{t}) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)}
\label{eqC3.21-new}
\end{eqnarray}
\item 对齐概率$\textrm{P}(a_j|a_1^{j-1},s_1^{j-1},m,\mathbf{t})$仅依赖于译文长度$l$,即每个词对齐连接的概率也服从均匀分布。换句话说,对于任何源语言单词的位置$j$到它对齐到目标语句子的任何位置都是等概率的。比如译文为``on the table'',再加上$t_0$共4个位置,相应的任意源语单词对齐到这4个位置的概率是一样的。具体描述如下:
\item 对齐概率$\textrm{P}(a_j|a_1^{j-1},s_1^{j-1},m,\mathbf{t})$仅依赖于译文长度$l$,即每个词对齐连接的概率也服从均匀分布。换句话说,对于任何源语言位置$j$对齐到目标语言任何位置都是等概率的。比如译文为``on the table'',再加上$t_0$共4个位置,相应的,任意源语单词对齐到这4个位置的概率是一样的。具体描述如下:
\begin{eqnarray}
\textrm{P}(a_j|a_1^{j-1},s_1^{j-1},m,\mathbf{t}) \equiv \frac{1}{l+1}
\label{eqC3.22-new}
\end{eqnarray}
\item 源语单词$s_j$的生成概率$\textrm{P}(a_j|a_1^{j-1},s_1^{j-1},m,\mathbf{t})$仅依赖与其对齐的译文单词$t_{a_i}$,即词汇翻译概率$f(s_j|t_{a_i})$。此时词汇翻译概率满足$\sum_{s_j}{f(s_j|t_{a_i})}=1$。比如在图\ref{fig:3-18}表示的例子中,源语单词``上''出现的概率只和与它对齐的单词``on''有关系,与其它单词没有关系。
\item 源语单词$s_j$的生成概率$\textrm{P}(a_j|a_1^{j-1},s_1^{j-1},m,\mathbf{t})$仅依赖与其对齐的译文单词$t_{a_j}$,即词汇翻译概率$f(s_j|t_{a_j})$。此时词汇翻译概率满足$\sum_{s_j}{f(s_j|t_{a_j})}=1$。比如在图\ref{fig:3-18}表示的例子中,源语单词``上''出现的概率只和与它对齐的单词``on''有关系,与其他单词没有关系。
\begin{eqnarray}
\textrm{P}(s_j|a_1^{j},s_1^{j-1},m,\mathbf{t}) \equiv f(s_j|t_{a_i})
\textrm{P}(s_j|a_1^{j},s_1^{j-1},m,\mathbf{t}) \equiv f(s_j|t_{a_j})
\label{eqC3.23-new}
\end{eqnarray}
......@@ -676,7 +677,7 @@ g(\mathbf{s},\mathbf{t}) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{IBM模型2}\index{Chapter3.4.2}
\parinterval IBM模型1很好的化简了问题,但是由于使用了很强的假设,导致模型和实际情况有较大差异。其中一个比较严重的问题是假设词对齐的生成概率服从均匀分布。图\ref{fig:3-20}展示了一个简单的实例。尽管译文$\mathbf{t}$$\mathbf{t}'$的质量更好,但对于IBM模型1来说翻译概率相同。这是因为当词对齐服从均匀分布时,模型会忽略目标语言单词的位置信息。因此当单词翻译相同但顺序不同时,翻译概率一样。同时,不合理的对齐也会导致使用不合理的词汇翻译概率,因为源语言单词是由错误位置的目标语单词生成的。虽然这个问题可以通过引入目标语语言模型进行缓解,但是翻译模型仍然需要给出更合理的建模方式,以保证翻译译文的选择是正确的。
\parinterval IBM模型1很好的化简了问题,但是由于使用了很强的假设,导致模型和实际情况有较大差异。其中一个比较严重的问题是假设词对齐的生成概率服从均匀分布。图\ref{fig:3-20}展示了一个简单的实例。尽管译文$\mathbf{t}$$\mathbf{t}'$的质量更好,但对于IBM模型1来说它们对应的翻译概率相同。这是因为当词对齐服从均匀分布时,模型会忽略目标语言单词的位置信息。因此当单词翻译相同但顺序不同时,翻译概率一样。同时,不合理的对齐也会导致使用不合理的词汇翻译概率,因为源语言单词是由错误位置的目标语单词生成的。
%----------------------------------------------
% 图3.30
......@@ -688,13 +689,13 @@ g(\mathbf{s},\mathbf{t}) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)}
\end{figure}
%---------------------------
\parinterval 因此,IBM模型2抛弃了对对齐概率$\textrm{P}(a_j|a_1^{j-1},s_1^{j-1},m,\mathbf{t})$服从均匀分布的假设。在IBM模型2中,我们认为词对齐是有倾向性的,对齐至少要与源语单词的位置和目标语单词的位置有关。具体来说,对齐位置$a_j$的生成概率与语言单位位置$j$、源语句子长度$m$和译文长度$l$有关,形式化表述为:
\parinterval 因此,IBM模型2抛弃了对对齐概率$\textrm{P}(a_j|a_1^{j-1},s_1^{j-1},m,\mathbf{t})$服从均匀分布的假设。在IBM模型2中,我们认为词对齐是有倾向性的,它要与源语单词的位置和目标语单词的位置有关。具体来说,对齐位置$a_j$的生成概率与位置$j$、源语句子长度$m$和译文长度$l$有关,形式化表述为:
\begin{eqnarray}
\textrm{P}(a_j|a_1^{j-1},s_1^{j-1},m,\mathbf{t}) \equiv a(a_j|j,m,l)
\label{eqC3.26-new}
\end{eqnarray}
\parinterval 我们还用图\ref{fig:3-18}中的例子来进行说明公式。在模型1中,``桌子''对齐到译文四个位置上的单词的概率是一样的。但在模型2中,``桌子''对齐到``table''被形式化为$a(a_j |j,m,l)=a(3|2,3,3)$,意思是对于源文位置2($j=2$)的词,如果它的源文和目标语译文都是3个词($l=3,m=3$),对齐到目标语译文位置3($a_j=3$)的概率是多少?因为$a(a_j|j,m,l)$也是模型需要学习的参数,因此``桌子''对齐到不同位置上的目标语单词概率也是不一样的。理想的情况下,通过$a(a_j|j,m,l)$,``桌子''对齐到``table''应该得到更高的概率。
\parinterval 我们还用图\ref{fig:3-18}中的例子来进行说明。在模型1中,``桌子''对齐到译文四个位置上的单词的概率是一样的。但在模型2中,``桌子''对齐到``table''被形式化为$a(a_j |j,m,l)=a(3|2,3,3)$,意思是对于源文位置2($j=2$)的词,如果它的源语言和译文都是3个词($l=3,m=3$),对齐到目标语译文位置3($a_j=3$)的概率是多少?因为$a(a_j|j,m,l)$也是模型需要学习的参数,因此``桌子''对齐到不同位置上的目标语单词概率也是不一样的。理想的情况下,通过$a(a_j|j,m,l)$,``桌子''对齐到``table''应该得到更高的概率。
\parinterval IBM模型2的其他假设均与模型1相同。把公式\ref{eqC3.21-new}\ref{eqC3.22-new}\ref{eqC3.26-new}重新带入公式\ref{eqC3.19-new}\ref{eqC3.18-new},可以得到IBM模型2的数学描述:
\begin{eqnarray}
......@@ -1103,7 +1104,7 @@ p_0+p_1 & = & 1 \label{eqC3.62-new}
\label{eqC3.63-new}
\end{equation}
\noindent 其中,译文的第$j$个单词生成的第$k$个源语单词在源语言句子中的位置用变量$\pi_{jk}$表示,$\pi_{jk}$表示它的观测值。而对于列表($\tau_{[j]}$)中的其的单词($\tau_{[j]k},1<k<\varphi[j]$)的扭曲度计算,进行如下计算
\noindent 其中,译文的第$j$个单词生成的第$k$个源语单词在源语言句子中的位置用变量$\pi_{jk}$表示,$\pi_{jk}$表示它的观测值。而对于列表($\tau_{[j]}$)中的其的单词($\tau_{[j]k},1<k<\varphi[j]$)的扭曲度计算,进行如下计算
\begin{equation}
\textrm{P}(\pi_{[j]k}=i|{\pi}_{[j]1}^{k-1},\pi_1^{[j]-1},\tau_0^l,\varphi_0^l,t)=d_{>1}(i-\pi_{[j]k-1}|B(f_i))
......@@ -1112,14 +1113,14 @@ p_0+p_1 & = & 1 \label{eqC3.62-new}
\parinterval 这里的函数$A(\cdot)$和函数$B(\cdot)$分别把目标语言和源语言的单词影射到单词的词类。这么做的目的一方面要减小参数空间的大小,另一方面是要减小数据的稀疏程度。词类信息通常可以通过外部工具得到,比如Brown聚类等。不过,我们并不会讨论词聚类算法。这里可以也提供一种简单的方法,那就把单词直接映射为它的词性即可。这样可以直接用现在已经非常成熟的词性标注工具解决问题。
\parinterval 从上面改进的扭曲度模型可以看出,对于$t_{[j]}$生成的第一个源语言单词,要考虑中心$\odot_{[j]}$和这个源语言单词之间的绝对距离。实际上也就要把$t_{[j]}$生成的所有源语言单词看成一个整体并把它放置在合适的位置。这个过程要依据第一个源语言单词的位置$i$及其词类,和前一个非空对目标语言单词$t_{[j-1]}$的词类。而对于$t[j]$生成的其源语言单词,只需要考虑它与前一个刚放置完的源语言单词的相对位置和这个源语言单词的词类。
\parinterval 从上面改进的扭曲度模型可以看出,对于$t_{[j]}$生成的第一个源语言单词,要考虑中心$\odot_{[j]}$和这个源语言单词之间的绝对距离。实际上也就要把$t_{[j]}$生成的所有源语言单词看成一个整体并把它放置在合适的位置。这个过程要依据第一个源语言单词的位置$i$及其词类,和前一个非空对目标语言单词$t_{[j-1]}$的词类。而对于$t[j]$生成的其源语言单词,只需要考虑它与前一个刚放置完的源语言单词的相对位置和这个源语言单词的词类。
\parinterval 实际上,上述过程就要先用$t_{[j]}$生成的第一个源语言单词代表整个$t_{[j]}$生成的单词列表,并把第一个源语言单词放置在合适的位置。然后,把列表中的其单词放置在相对于前一个刚生成的源语言单词合适的地方。这样就可以在一定程度上保证由同一个目标语言单词生成的源语言单词之间可以相互影响,达到了改进的目的。
\parinterval 实际上,上述过程就要先用$t_{[j]}$生成的第一个源语言单词代表整个$t_{[j]}$生成的单词列表,并把第一个源语言单词放置在合适的位置。然后,把列表中的其单词放置在相对于前一个刚生成的源语言单词合适的地方。这样就可以在一定程度上保证由同一个目标语言单词生成的源语言单词之间可以相互影响,达到了改进的目的。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{ IBM 模型5}\index{Chapter3.5.4}
\parinterval 模型3和模型4并不是``准确''的模型。这两个模型会把一部分概率分配给一些根本就不存在的句子。这个问题被称作IBM模型3和模型4的缺陷(Deficiency)。说的具体一些,模型3和模型4中并没有这样的约束:如果已经放置了某个源语言单词的位置不能再放置其它单词,也就是说句子的任何位置只能放置一个词,不能多也不能少。由于缺乏这个约束,模型3和模型4中在所有合法的词对齐上概率和不等于1。这部分缺失的概率被分配到其它不合法的词对齐上。举例来说,如图\ref{fig:3-33}所示,``吃 早饭''和``Have breakfast''之间的合法词对齐用直线表示 。但是在模型3和模型4中, 在它们上的概率和为$0.9<1$。损失掉的概率被分配到像5和6这样的对齐上了(红色)。虽然IBM模型并不支持一对多的对齐,但是模型3和模型4把概率分配给这些``不合法''的词对齐上,因此也就产生所谓的deficiency问题。
\parinterval 模型3和模型4并不是``准确''的模型。这两个模型会把一部分概率分配给一些根本就不存在的句子。这个问题被称作IBM模型3和模型4的缺陷(Deficiency)。说的具体一些,模型3和模型4中并没有这样的约束:如果已经放置了某个源语言单词的位置不能再放置其他单词,也就是说句子的任何位置只能放置一个词,不能多也不能少。由于缺乏这个约束,模型3和模型4中在所有合法的词对齐上概率和不等于1。这部分缺失的概率被分配到其他不合法的词对齐上。举例来说,如图\ref{fig:3-33}所示,``吃 早饭''和``Have breakfast''之间的合法词对齐用直线表示 。但是在模型3和模型4中, 在它们上的概率和为$0.9<1$。损失掉的概率被分配到像5和6这样的对齐上了(红色)。虽然IBM模型并不支持一对多的对齐,但是模型3和模型4把概率分配给这些``不合法''的词对齐上,因此也就产生所谓的deficiency问题。
%----------------------------------------------
% 图3.5.4
......@@ -1139,14 +1140,14 @@ p_0+p_1 & = & 1 \label{eqC3.62-new}
\label{eqC3.65-new}
\end{eqnarray}
\parinterval 对于其单词($\tau_{[j]k}$, $1<k\leqslant\varphi_{[j]}$),我们有
\parinterval 对于其单词($\tau_{[j]k}$, $1<k\leqslant\varphi_{[j]}$),我们有
\begin{eqnarray}
& & \textrm{P}(\pi_{[j]k}=i|\pi_{[j]1}^{k-1}, \pi_1^{[j]-1}, \tau_0^l, \varphi_0^l,\mathbf{t}) \nonumber \\
&= & d_{>1}(v_i-v_{\pi_{[j]k-1}}|B(f_i), v_m-v_{\pi_{[j]k-1}}-\varphi_{[j]}+k) \cdot (1-\delta(v_i,v_{i-1}))
\label{eqC3.66-new}
\end{eqnarray}
\parinterval 这里,因子$1-\delta(v_i, v_{i-1})$是用来判断第$i$个位置是不是为空。如果第$i$个位置为空则$v_i = v_{i-1}$,这样$\textrm{P}(\pi_{[j]1}=i|\pi_1^{[j]-1}, \tau_0^l, \varphi_0^l, \mathbf{t}) = 0$。这样就从模型上避免了模型3和模型4中生成不存在的字符串的问题。这里还要注意的是,对于放置第一个单词的情况,影响放置的因素有$v_i$$B(f_i)$$v_{i-1}$。此外还要考虑在$i$位置放置了第一个单词以后它的右边是不是还有足够的位置留给剩下的$k-1$个单词。参数$v_m-\varphi_{[j]}+1$就是为了考虑这个因素,这里$v_m$表示整个源语言言句子中还有多少空位置,$\varphi_{[j]}-1$表示$i$位置右边至少还要留出的空格数。对于放置非第一个单词的情况,主要是要考虑它和前一个放置位置的相对位置。这主要体现在参数$v_i-v_{\varphi_{[j]}k-1}$上。式4.99的其部分都可以用上面的理论解释,这里不再赘述。
\parinterval 这里,因子$1-\delta(v_i, v_{i-1})$是用来判断第$i$个位置是不是为空。如果第$i$个位置为空则$v_i = v_{i-1}$,这样$\textrm{P}(\pi_{[j]1}=i|\pi_1^{[j]-1}, \tau_0^l, \varphi_0^l, \mathbf{t}) = 0$。这样就从模型上避免了模型3和模型4中生成不存在的字符串的问题。这里还要注意的是,对于放置第一个单词的情况,影响放置的因素有$v_i$$B(f_i)$$v_{i-1}$。此外还要考虑在$i$位置放置了第一个单词以后它的右边是不是还有足够的位置留给剩下的$k-1$个单词。参数$v_m-\varphi_{[j]}+1$就是为了考虑这个因素,这里$v_m$表示整个源语言言句子中还有多少空位置,$\varphi_{[j]}-1$表示$i$位置右边至少还要留出的空格数。对于放置非第一个单词的情况,主要是要考虑它和前一个放置位置的相对位置。这主要体现在参数$v_i-v_{\varphi_{[j]}k-1}$上。式4.99的其部分都可以用上面的理论解释,这里不再赘述。
\parinterval 实际上,模型5和模型4的思想基本一致,即,先确定$\tau_{[j]1}$的绝对位置,然后再确定$\tau_{[j]}$中剩余单词的相对位置。模型5消除了产生不存在的句子的可能性,不过模型5的复杂性也大大增加了。
......@@ -1252,7 +1253,7 @@ p_0+p_1 & = & 1 \label{eqC3.62-new}
\label{eqC3.71-new}
\end{eqnarray}
\parinterval 本质上,模型3和模型4就是对应$\textrm{P}({\textrm{failure}|\mathbf{t}})>0$的情况。这部分概率是模型损失掉的。有时候也把这类Deficiency问题称为Technical Deficiency。还有一种Deficiency问题被称作Spiritually Deficiency,它是指$\textrm{P}({\textrm{well}|\mathbf{t}}) + \textrm{P}({\textrm{ill}|\mathbf{t}}) = 1$$\textrm{P}({\textrm{ill}|\mathbf{t}}) > 0$的情况。模型1和模型2就有Spiritually Deficiency的问题。可以注意到,Technical Deficiency只存在于模型3和模型4中,模型1和模型2并没有Technical Deficiency问题。根本原因是模型1和模型2的词对齐是从源语言出发对应到目标语言,$\mathbf{t}$$\mathbf{s}$的翻译过程实际上是从单词$s_1$开始到单词$s_m$结束,依次把每个源语言单词$s_i$对应到唯一一个目标语言位置。显然,这个过程能够保证每个源语言单词仅对应一个目标语言单词。但是,模型3和模型4中对齐是从目标语言出发对应到源语言,$\mathbf{t}$$\mathbf{s}$的翻译过程从$t_1$开始$t_l$结束,依次把目标语言单词$t_j$生成的单词对应到某个源语言位置上。但是这个过程不能保证$t_j$中生成的单词所对应的位置没有被其已经完成对齐的目标语单词所生成的某个源语言单词对应过,因此也就产生了Deficency问题。
\parinterval 本质上,模型3和模型4就是对应$\textrm{P}({\textrm{failure}|\mathbf{t}})>0$的情况。这部分概率是模型损失掉的。有时候也把这类Deficiency问题称为Technical Deficiency。还有一种Deficiency问题被称作Spiritually Deficiency,它是指$\textrm{P}({\textrm{well}|\mathbf{t}}) + \textrm{P}({\textrm{ill}|\mathbf{t}}) = 1$$\textrm{P}({\textrm{ill}|\mathbf{t}}) > 0$的情况。模型1和模型2就有Spiritually Deficiency的问题。可以注意到,Technical Deficiency只存在于模型3和模型4中,模型1和模型2并没有Technical Deficiency问题。根本原因是模型1和模型2的词对齐是从源语言出发对应到目标语言,$\mathbf{t}$$\mathbf{s}$的翻译过程实际上是从单词$s_1$开始到单词$s_m$结束,依次把每个源语言单词$s_i$对应到唯一一个目标语言位置。显然,这个过程能够保证每个源语言单词仅对应一个目标语言单词。但是,模型3和模型4中对齐是从目标语言出发对应到源语言,$\mathbf{t}$$\mathbf{s}$的翻译过程从$t_1$开始$t_l$结束,依次把目标语言单词$t_j$生成的单词对应到某个源语言位置上。但是这个过程不能保证$t_j$中生成的单词所对应的位置没有被其已经完成对齐的目标语单词所生成的某个源语言单词对应过,因此也就产生了Deficency问题。
\parinterval 这里还要强调的是,Technical Deficiency是模型3和模型4是模型本身的缺陷造成的,如果有一个``更好''的模型就可以完全避免这个问题。而Spiritually Deficiency几乎是不能从模型上根本解决的,因为对于任意一种语言我们都不能枚举所有的句子($\textrm{P}({\textrm{ill}|\mathbf{t}})$实际上是得不到的)。
......@@ -1266,7 +1267,7 @@ p_0+p_1 & = & 1 \label{eqC3.62-new}
\parinterval 这个问题在很多统计机器翻译系统中都存在,实际上也是一种系统偏置的体现。为了消除这种偏置,可以通过在模型中增加一个短句子惩罚引子来抵消调模型对短句子的倾向性。比如,可以定义一个惩罚引子,它的值随着长度的减少而增加。不过,简单引入这样的惩罚因子会导致模型并不符合一个严格的噪声信道模型。它对应一个判别式框架的翻译模型,这部分内容会在下一章进行介绍。
\subsection{问题}\index{Chapter3.6.5}
\subsection{问题}\index{Chapter3.6.5}
\parinterval 模型5的意义?模型5的提出是为了消除了模型3和模型4的Deficiency问题。Deficiency问题的本质是,$\textrm{P}(\mathbf{s},\mathbf{a}| \mathbf{t})$在所有合理的对齐上概率和不为1。但是,在统计机器翻译中我们更关心是哪个对齐$\mathbf{a}$使$\textrm{P}(\mathbf{s},\mathbf{a}| \mathbf{t})$达到最大,即使$\textrm{P}(\mathbf{s},\mathbf{a}|\mathbf{t})$不符合概率分布的定义,也并不影响我们寻找理想的对齐$\mathbf{a}$。从这个工程的角度说,$\textrm{P}(\mathbf{s},\mathbf{a}| \mathbf{t})$不归一并不是一个十分严重的问题。遗憾的是,实际上至今也太多对IBM模型3和模型4中的Deficiency问题进行过系统的实验和分析,这个问题到底有多严重并没有定论。当然用模型5是可以解决这个问题。但是如果用一个非常复杂的模型去解决了一个并不产生严重后果的问题,那这个模型也就没有太大意义了(从实践的角度)。
......@@ -1281,7 +1282,7 @@ p_0+p_1 & = & 1 \label{eqC3.62-new}
\begin{itemize}
\item IBM模型在提出后的十余年中,一直受到了学术界的关注。一个比较有代表性的成果是GIZA++(\url{https://github.com/moses-smt/giza-pp}),它集成了IBM模型和隐马尔可夫模型,并实现了这些模型的训练。在随后相当长的一段时间里,GIZA++也是机器翻译研究的标配,用于获得双语平行数据上单词一级的对齐结果。此外,研究者也对IBM模型进行了大量的分析,为后人研究统计机器翻译提供了大量依据\cite{och2004alignment}。虽然IBM模型很少被独立使用,甚至直接用基于IBM模型的解码器也不多见,但是它通常会作为其模型的一部分参与到对翻译的建模中。这部分工作会在下一章基于短语和句法的模型中进行讨论\cite{koehn2003statistical}。此外,IBM模型也给我们提供了一种非常简便的计算双语词串对应好坏的方式,因此也被广泛用于度量双语词串对应的强度,是自然语言处理中的一种常用特征。
\item IBM模型在提出后的十余年中,一直受到了学术界的关注。一个比较有代表性的成果是GIZA++(\url{https://github.com/moses-smt/giza-pp}),它集成了IBM模型和隐马尔可夫模型,并实现了这些模型的训练。在随后相当长的一段时间里,GIZA++也是机器翻译研究的标配,用于获得双语平行数据上单词一级的对齐结果。此外,研究者也对IBM模型进行了大量的分析,为后人研究统计机器翻译提供了大量依据\cite{och2004alignment}。虽然IBM模型很少被独立使用,甚至直接用基于IBM模型的解码器也不多见,但是它通常会作为其模型的一部分参与到对翻译的建模中。这部分工作会在下一章基于短语和句法的模型中进行讨论\cite{koehn2003statistical}。此外,IBM模型也给我们提供了一种非常简便的计算双语词串对应好坏的方式,因此也被广泛用于度量双语词串对应的强度,是自然语言处理中的一种常用特征。
\item 除了在机器翻译建模上的开创性工作,IBM模型的另一项重要贡献是建立了统计词对齐的基础模型。在训练IBM模型的过程中,除了学习到模型参数,我们还可以得到双语数据上的词对齐结果。也就是说词对齐标注是IBM模型训练的间接产物。这也使得IBM模型成为了自动词对齐的重要方法。包括GIZA++在内的很多工作,实际上更多的是被用于自动词对齐任务,而非简单的训练IBM模型参数。随着词对齐概念的不断深入,这个任务逐渐成为了自然语言处理中的重要分支,比如,对IBM模型的结果进行对称化\cite{och2003systematic},也可以直接使用判别式模型利用分类模型解决词对齐问题\cite{ittycheriah2005maximum},甚至可以把利用对齐的思想用于短语和句法结构的双语对应\cite{xiao2013unsupervised}。除了GIZA++,研究人员也开发了很多优秀的自动词对齐工具,比如,FastAlign(\url{https://github.com/clab/fast_align})、Berkeley Aligner(\url{https://github.com/mhajiloo/berkeleyaligner})等,这些工具现在也有很广泛的应用。
......
......@@ -82,7 +82,7 @@
\node[anchor=west](b8) at ([xshift=0em,yshift=-1.5em]b7.west){{VP}};
\node[anchor=west](b9) at ([xshift=0em,yshift=-1.5em]b8.west){{N/A}};
\node[anchor=west](b10) at ([xshift=0em,yshift=-1.5em]b9.west){{VP}};
\node[anchor=west](b11) at ([xshift=0em,yshift=-1.5em]b10.west){{IP({\red(root)})}};
\node[anchor=west](b11) at ([xshift=0em,yshift=-1.5em]b10.west){{IP({\redroot})}};
\node[anchor=west](y2) at ([xshift=0.2em,yshift=-1.7em]y1.west){{}};
\node[anchor=west](y3) at ([xshift=0em,yshift=-1.5em]y2.west){{喜欢}};
......
......@@ -26,16 +26,16 @@
\indexentry{Chapter3.4.4|hyperpage}{34}
\indexentry{Chapter3.4.4.1|hyperpage}{34}
\indexentry{Chapter3.4.4.2|hyperpage}{35}
\indexentry{Chapter3.5|hyperpage}{40}
\indexentry{Chapter3.5|hyperpage}{41}
\indexentry{Chapter3.5.1|hyperpage}{41}
\indexentry{Chapter3.5.2|hyperpage}{43}
\indexentry{Chapter3.5.2|hyperpage}{44}
\indexentry{Chapter3.5.3|hyperpage}{45}
\indexentry{Chapter3.5.4|hyperpage}{46}
\indexentry{Chapter3.5.4|hyperpage}{47}
\indexentry{Chapter3.5.5|hyperpage}{48}
\indexentry{Chapter3.5.5|hyperpage}{50}
\indexentry{Chapter3.5.5|hyperpage}{51}
\indexentry{Chapter3.6|hyperpage}{51}
\indexentry{Chapter3.6.1|hyperpage}{51}
\indexentry{Chapter3.6.2|hyperpage}{52}
\indexentry{Chapter3.6.4|hyperpage}{53}
\indexentry{Chapter3.6.5|hyperpage}{53}
\indexentry{Chapter3.7|hyperpage}{53}
\indexentry{Chapter3.6.5|hyperpage}{54}
\indexentry{Chapter3.7|hyperpage}{54}
\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax
\babel@toc {english}{}
\defcounter {refsection}{0}\relax
\contentsline {part}{\@mypartnumtocformat {I}{统计机器翻译}}{7}{part.1}%
\select@language {english}
\defcounter {refsection}{0}\relax
\contentsline {part}{\@mypartnumtocformat {I}{统计机器翻译}}{7}{part.1}
\ttl@starttoc {default@1}
\defcounter {refsection}{0}\relax
\contentsline {chapter}{\numberline {1}基于词的机器翻译模型}{9}{chapter.1}%
\contentsline {chapter}{\numberline {1}基于词的机器翻译模型}{9}{chapter.1}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {1.1}什么是基于词的翻译模型}{9}{section.1.1}%
\contentsline {section}{\numberline {1.1}什么是基于词的翻译模型}{9}{section.1.1}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {1.2}构建一个简单的机器翻译系统}{11}{section.1.2}%
\contentsline {section}{\numberline {1.2}构建一个简单的机器翻译系统}{11}{section.1.2}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.2.1}如何进行翻译?}{11}{subsection.1.2.1}%
\contentsline {subsection}{\numberline {1.2.1}如何进行翻译?}{11}{subsection.1.2.1}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{机器翻译流程}{12}{section*.6}%
\contentsline {subsubsection}{机器翻译流程}{12}{section*.6}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{人工翻译 vs. 机器翻译}{13}{section*.8}%
\contentsline {subsubsection}{人工翻译 vs. 机器翻译}{13}{section*.8}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.2.2}基本框架}{13}{subsection.1.2.2}%
\contentsline {subsection}{\numberline {1.2.2}基本框架}{13}{subsection.1.2.2}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.2.3}单词翻译概率}{14}{subsection.1.2.3}%
\contentsline {subsection}{\numberline {1.2.3}单词翻译概率}{14}{subsection.1.2.3}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{什么是单词翻译概率?}{14}{section*.10}%
\contentsline {subsubsection}{什么是单词翻译概率?}{14}{section*.10}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{如何从一个双语平行数据中学习?}{15}{section*.12}%
\contentsline {subsubsection}{如何从一个双语平行数据中学习?}{15}{section*.12}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{如何从大量的双语平行数据中学习?}{16}{section*.13}%
\contentsline {subsubsection}{如何从大量的双语平行数据中学习?}{16}{section*.13}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.2.4}句子级翻译模型}{17}{subsection.1.2.4}%
\contentsline {subsection}{\numberline {1.2.4}句子级翻译模型}{17}{subsection.1.2.4}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{基础模型}{17}{section*.15}%
\contentsline {subsubsection}{基础模型}{17}{section*.15}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{生成流畅的译文}{19}{section*.17}%
\contentsline {subsubsection}{生成流畅的译文}{19}{section*.17}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.2.5}解码}{21}{subsection.1.2.5}%
\contentsline {subsection}{\numberline {1.2.5}解码}{21}{subsection.1.2.5}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {1.3}基于词的翻译建模}{24}{section.1.3}%
\contentsline {section}{\numberline {1.3}基于词的翻译建模}{24}{section.1.3}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.3.1}噪声信道模型}{24}{subsection.1.3.1}%
\contentsline {subsection}{\numberline {1.3.1}噪声信道模型}{24}{subsection.1.3.1}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.3.2}统计机器翻译的三个基本问题}{26}{subsection.1.3.2}%
\contentsline {subsection}{\numberline {1.3.2}统计机器翻译的三个基本问题}{26}{subsection.1.3.2}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{词对齐}{27}{section*.26}%
\contentsline {subsubsection}{词对齐}{27}{section*.26}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{基于词对齐的翻译模型}{28}{section*.29}%
\contentsline {subsubsection}{基于词对齐的翻译模型}{28}{section*.29}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{基于词对齐的翻译实例}{29}{section*.31}%
\contentsline {subsubsection}{基于词对齐的翻译实例}{29}{section*.31}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {1.4}IBM模型1-2}{30}{section.1.4}%
\contentsline {section}{\numberline {1.4}IBM模型1-2}{30}{section.1.4}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.4.1}IBM模型1}{30}{subsection.1.4.1}%
\contentsline {subsection}{\numberline {1.4.1}IBM模型1}{30}{subsection.1.4.1}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.4.2}IBM模型2}{32}{subsection.1.4.2}%
\contentsline {subsection}{\numberline {1.4.2}IBM模型2}{32}{subsection.1.4.2}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.4.3}解码及计算优化}{33}{subsection.1.4.3}%
\contentsline {subsection}{\numberline {1.4.3}解码及计算优化}{33}{subsection.1.4.3}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.4.4}训练}{34}{subsection.1.4.4}%
\contentsline {subsection}{\numberline {1.4.4}训练}{34}{subsection.1.4.4}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{(一)目标函数}{34}{section*.36}%
\contentsline {subsubsection}{(一)目标函数}{34}{section*.36}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{(二)优化}{35}{section*.38}%
\contentsline {subsubsection}{(二)优化}{35}{section*.38}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {1.5}IBM模型3-5及隐马尔可夫模型}{40}{section.1.5}%
\contentsline {section}{\numberline {1.5}IBM模型3-5及隐马尔可夫模型}{41}{section.1.5}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.5.1}基于产出率的翻译模型}{41}{subsection.1.5.1}%
\contentsline {subsection}{\numberline {1.5.1}基于产出率的翻译模型}{41}{subsection.1.5.1}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.5.2}IBM 模型3}{43}{subsection.1.5.2}%
\contentsline {subsection}{\numberline {1.5.2}IBM 模型3}{44}{subsection.1.5.2}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.5.3}IBM 模型4}{45}{subsection.1.5.3}%
\contentsline {subsection}{\numberline {1.5.3}IBM 模型4}{45}{subsection.1.5.3}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.5.4} IBM 模型5}{46}{subsection.1.5.4}%
\contentsline {subsection}{\numberline {1.5.4} IBM 模型5}{47}{subsection.1.5.4}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.5.5}隐马尔可夫模型}{48}{subsection.1.5.5}%
\contentsline {subsection}{\numberline {1.5.5}隐马尔可夫模型}{48}{subsection.1.5.5}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{隐马尔可夫模型}{48}{section*.50}%
\contentsline {subsubsection}{隐马尔可夫模型}{49}{section*.50}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{词对齐模型}{49}{section*.52}%
\contentsline {subsubsection}{词对齐模型}{50}{section*.52}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.5.6}解码和训练}{50}{subsection.1.5.6}%
\contentsline {subsection}{\numberline {1.5.6}解码和训练}{51}{subsection.1.5.6}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {1.6}问题分析}{51}{section.1.6}%
\contentsline {section}{\numberline {1.6}问题分析}{51}{section.1.6}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.6.1}词对齐及对称化}{51}{subsection.1.6.1}%
\contentsline {subsection}{\numberline {1.6.1}词对齐及对称化}{51}{subsection.1.6.1}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.6.2}Deficiency}{52}{subsection.1.6.2}%
\contentsline {subsection}{\numberline {1.6.2}Deficiency}{52}{subsection.1.6.2}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.6.3}句子长度}{53}{subsection.1.6.3}%
\contentsline {subsection}{\numberline {1.6.3}句子长度}{53}{subsection.1.6.3}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.6.4}其它问题}{53}{subsection.1.6.4}%
\contentsline {subsection}{\numberline {1.6.4}其他问题}{54}{subsection.1.6.4}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {1.7}小结及深入阅读}{53}{section.1.7}%
\contentsline {section}{\numberline {1.7}小结及深入阅读}{54}{section.1.7}
\contentsfinish
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论