Commit a23bcd24 by xiaotong

recheck chapters 3.5-3.7

parent 8a6a72e0
......@@ -936,16 +936,16 @@ f(s_u|t_v) = \frac{\lambda_{t_v}^{-1} \epsilon}{(l+1)^{m}} \cdot \frac{\sum\limi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{IBM模型3-5及隐马尔可夫模型}\index{Chapter3.5}
\noindent\hspace{2em}本节在IBM模型1-2的基础上继续介绍IBM模型3-5,这些模型也采用了更细致的建模方式来描述翻译问题,包括引入产出率、单词进一步的抽象等重要方法。此外,我们也会介绍隐马尔可夫模型,它和IBM模型有一定联系,但是从不同的视角看待翻译问题。
\noindent\hspace{2em}本节在IBM模型1-2的基础上继续介绍IBM模型3-5,这些模型采用了更细致的建模方式来描述翻译问题,包括引入产出率、单词的抽象等重要方法。此外,我们也会介绍隐马尔可夫模型,它和IBM模型有一定联系,但是从另一个视角看待翻译问题。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{基于产出率的翻译模型}\index{Chapter3.5.1}
\noindent\hspace{2em}从前面的介绍可知,IBM模型1和模型2都把不同的源文单词都看作相互独立的单元来进行词对齐和翻译。换句话说,即使源语中的某个短语中的两个单词都对齐到同一个目标语单词,它们之间也是相互独立的。这样模型1和模型2对于多个源语单词对齐到同一个目标语单词的情况并不能很好的描述。
\noindent\hspace{2em}这里将会给出另一个翻译模型,能在一定程度上解决上面提到的问题。我们把目标语译文生成源文的过程分解为如下几个步骤:首先,确定每个目标语单词生成源语单词的个数,这里把它称为\textbf{产出率}\textbf{繁衍率}(fertility);其次,决定译文中每个单词生成的源语单词都是什么,即决定生成的第一个源语单词是什么,生成的第二个源语单词是什么,以此类推。这样每个目标语单词就对应了一个源语单词列表;最后把各组源语单词列表中的每个单词都放置到源语句子的某个位置上,完成目标语译文到源文的生成。
\noindent\hspace{2em}这里将会给出另一个翻译模型,能在一定程度上解决上面提到的问题。我们把目标语言译文生成源文的过程分解为如下几个步骤:首先,确定每个目标语言单词生成源语言单词的个数,这里把它称为\textbf{产出率}\textbf{繁衍率}(fertility);其次,决定译文中每个单词生成的源语单词都是什么,即决定生成的第一个源语单词是什么,生成的第二个源语单词是什么,以此类推。这样每个目标语单词就对应了一个源语单词列表;最后把各组源语单词列表中的每个单词都放置到源语句子的某个位置上,完成目标语言译文到源语言句子的生成。
\noindent\hspace{2em}对于句对$(s,t)$,令$\varphi$表示产出率,同时令${\tau}$表示每个目标语单词对应的源语言单词列表。 {\ref{figureC3.5.1}}描述了一个英文句子生成汉语句子的过程。首先,对于每个目标语单词$t_j$决定它的产出率$\varphi_{j}$。比如“Scientists”的产出率是2,可表示为${\varphi}_{1}=2$。这表明它会生成2个源语言单词;其次,确定译文中每个单词生成的源语单词列表。比如“Scientists”生成“科学家”和“们”两个源语单词,可表示为${\tau}_1=\{{\tau}_{11}=\textrm{``科学家''},{\tau}_{12}=\textrm{``科学家''}$。这里用特殊的空标记NULL表示翻译对空的情况;最后,把生成的所有源语言单词放在合适的位置。比如``科学家''和``们''分别放在$s$的位置1和位置2。我们用符号$\pi$记录生成的单词在源语言句子s的位置。比如“Scientists”生成的源语言单词在s中的位置表示为${\pi}_{1}=\{{\pi}_{11}=1,{\pi}_{12}=2\}$
\noindent\hspace{2em}对于句对$(s,t)$,令$\varphi$表示产出率,同时令${\tau}$表示每个目标语单词对应的源语言单词列表。 {\ref{figureC3.5.1}}描述了一个英语句子生成汉语句子的过程。首先,对于每个英语单词$t_j$决定它的产出率$\varphi_{j}$。比如“Scientists”的产出率是2,可表示为${\varphi}_{1}=2$。这表明它会生成2个汉语单词;其次,确定英语句子中每个单词生成的汉语单词列表。比如“Scientists”生成“科学家”和“们”两个汉语单词,可表示为${\tau}_1=\{{\tau}_{11}=\textrm{``科学家''},{\tau}_{12}=\textrm{``科学家''}$。这里用特殊的空标记NULL表示翻译对空的情况;最后,把生成的所有汉语单词放在合适的位置。比如``科学家''和``们''分别放在$s$的位置1和位置2。我们用符号$\pi$记录生成的单词在源语言句子s的位置。比如“Scientists”生成的汉语单词在s中的位置表示为${\pi}_{1}=\{{\pi}_{11}=1,{\pi}_{12}=2\}$
%----------------------------------------------
% 图3.5.1
......@@ -957,7 +957,7 @@ f(s_u|t_v) = \frac{\lambda_{t_v}^{-1} \epsilon}{(l+1)^{m}} \cdot \frac{\sum\limi
\end{figure}
%---------------------------
\noindent\hspace{2em}为了表述清晰,我们重新说明每个符号的含义。$s$$t$$m$$l$分别表示源文、目标语译文、源文单词数量以及译文单词数量。$\phi$$\tau$$\phi$分别记录产出率、生成的源语言单词以及它们在源文中的位置。${\phi}_{j}$表示第$j$个译文单词$t_j$的产出率。${\tau}_{j}$${\phi}_j$分别表示$t_j$生成的源语言单词列表及其在源语句s中的位置列表。
\noindent\hspace{2em}为了表述清晰,我们重新说明每个符号的含义。$\mathbf{s}$$\mathbf{t}$$m$$l$分别表示源语言句子、目标语译文、源语言单词数量以及译文单词数量。$\mathbf{\varphi}$$\mathbf{\tau}$$\mathbf{\pi}$分别记录产出率、生成的源语言单词以及它们在源文中的位置。${\phi}_{j}$表示第$j$个译文单词$t_j$的产出率。${\tau}_{j}$${\pi}_j$分别表示$t_j$生成的源语言单词列表及其在源语言句子$\mathbf{s}$中的位置列表。
%----------------------------------------------
% 图3.5.2
......@@ -969,14 +969,14 @@ f(s_u|t_v) = \frac{\lambda_{t_v}^{-1} \epsilon}{(l+1)^{m}} \cdot \frac{\sum\limi
\end{figure}
%---------------------------
\noindent\hspace{2em}可以看出,一组$\tau$$\phi$(记为$<\tau,\phi>$)可以决定一个对齐$a$和一个源语句子$s$。相反的,一个对齐$a$和一个源语句子$s$可以对应多组$<\tau,\phi>$。如\ref{figureC3.5.2}所示,表示不同的$<\tau,\phi>$对应同一个源语句子和对齐。它们的区别在于目标语单词“Scientists”生成的源语言单词“科学家”和“们”的顺序不同。我们把不同的$<\tau,\phi>$对应到的相同的对齐$a$和源语句子$s$记为$<s,a>$。因此计算$\textrm{P}(s,a|t)$时需要把每个可能结果的概率加起来,如下:
\noindent\hspace{2em}可以看出,一组$\tau$$\phi$(记为$<\tau,\phi>$)可以决定一个对齐$a$和一个源语句子$s$。相反的,一个对齐$a$和一个源语句子$s$可以对应多组$<\tau,\phi>$。如\ref{figureC3.5.2}所示,不同的$<\tau,\phi>$对应同一个源语言句子和词对齐。它们的区别在于目标语单词“Scientists”生成的源语言单词“科学家”和“们”的顺序不同。我们把不同的$<\tau,\phi>$对应到的相同的源语句子$s$和对齐$a$记为$<s,a>$。因此计算$\textrm{P}(s,a|t)$时需要把每个可能结果的概率加起来,如下:
\begin{equation}
\textrm{P}(s,a|t)=\sum_{{<\tau,\phi>}\in{<s,a>}}{\textrm{P}(\tau,\phi|t) }
\label{eqC3.5.1}
\end{equation}
\noindent\hspace{2em}不过$<s,a>$中有多少个元素呢?通过图\ref{figureC3.5.1}中的例子,可以推出$<s,a>$应该包含$\prod_{i=0}^{l}{\varphi !}$个不同的二元组$<\tau,\pi>$。这是因为在给定源文和对齐时,对于每一个$\tau_i$都有$\varphi_{i}!$种排列。
\noindent\hspace{2em}不过$<s,a>$中有多少个元素呢?通过图\ref{figureC3.5.1}中的例子,可以推出$<s,a>$应该包含$\prod_{i=0}^{l}{\varphi !}$个不同的二元组$<\tau,\pi>$。这是因为在给定源语言句子和词对齐时,对于每一个$\tau_i$都有$\varphi_{i}!$种排列。
\noindent\hspace{2em}进一步,$\textrm{P}(\tau,\pi|t)$可以被表示为:
......@@ -993,11 +993,11 @@ f(s_u|t_v) = \frac{\lambda_{t_v}^{-1} \epsilon}{(l+1)^{m}} \cdot \frac{\sum\limi
\begin{itemize}
\item 对每个$j\in[1,l]$的目标语单词的产出率建模$\varphi_j$的概率。它依赖于$t$和区间$[1,j-1]$的目标语单词的产出率$\varphi_1^{j-1}$
\item 对每个$j\in[1,l]$的目标语单词的产出率建模$\varphi_j$的概率。它依赖于$t$和区间$[1,j-1]$的目标语单词的产出率$\varphi_1^{j-1}$
\item $j=0$时的产出率建模,即空标记$t_0$的产出率的概率。它依赖于$t$和区间$[1,j-1]$的目标语单词的产出率$\varphi_1^l$
\item 词汇翻译建模。目标语单词$t_j$生成的第$k$个源语言单词$\tau_{jk}$时的概率,依赖于$t$、所有目标语单词的产出率$\varphi_0^l$、区间$j\in[1,l]$的目标语单词生成的源语言单词$\tau_1^{j-1}$和目标语单词$t_j$生成的前$k$个源语言单词$\tau_{j1}^{k-1}$
\item 对于每个$j\in[1,l]$的目标语单词生成的源语单词的扭曲度(distortion)建模,即第$j$个译文单词生成的第$k$个源语言单词在源文中的位置$\pi_{jk}$的概率。其中$\pi_1^{j-1}$$\pi_{j1}^{k-1}$分别表示区间$[1,j-1]$的目标语单词生成的源语单词的扭曲度和第$j$译文单词生成的前$k$个源语单词的扭曲度。
\item $j=0$时的扭曲度建模。即空标记$t_0$生成的源语单词在源中的位置的概率。
\item 词汇翻译建模。目标语言单词$t_j$生成第$k$个源语言单词$\tau_{jk}$时的概率,依赖于$t$、所有目标语言单词的产出率$\varphi_0^l$、区间$j\in[1,l]$的目标语言单词生成的源语言单词$\tau_1^{j-1}$和目标语单词$t_j$生成的前$k$个源语言单词$\tau_{j1}^{k-1}$
\item 对于每个$j\in[1,l]$的目标语言单词生成的源语言单词的扭曲度(distortion)建模,即第$j$个译文单词生成的第$k$个源语言单词在源文中的位置$\pi_{jk}$的概率。其中$\pi_1^{j-1}$$\pi_{j1}^{k-1}$分别表示区间$[1,j-1]$的目标语言单词生成的源语言单词的扭曲度和第$j$译文单词生成的前$k$个源语言单词的扭曲度。
\item $j=0$时的扭曲度建模。即空标记$t_0$生成的源语单词在源语言句子中的位置的概率。
\end{itemize}
......@@ -1012,23 +1012,23 @@ f(s_u|t_v) = \frac{\lambda_{t_v}^{-1} \epsilon}{(l+1)^{m}} \cdot \frac{\sum\limi
%---------------------------
\subsection{IBM 模型3}\index{Chapter3.5.2}
\noindent\hspace{2em}IBM模型3通过一些假设对公式\ref{eqC3.5.2}所表示的基本模型进行了化简。具体来说,对于每个$j\in[1,l]$,假设$\textrm{P}(\varphi_j |\varphi_1^{j-1},t)$仅依赖于$\phi_j$$t_j$$\textrm{P}(\pi_{jk}|\pi_{j1}^{k-1},\pi_1^{j-1},\tau_0^l,\varphi_0^l,t)$仅依赖于$\pi_{jk}$$j$$m$$l$。而对于所有的$j\in[0,l]$,假设$\textrm{P}(\tau_{jk}|\tau_{j1}^{k-1},\tau_1^{j-1},\phi_0^l,t)$仅依赖于$\tau_{jk}$$t_j$。形式化这些假设,我们得到:
\noindent\hspace{2em}IBM模型3通过一些假设对公式\ref{eqC3.5.2}所表示的基本模型进行了化简。具体来说,对于每个$j\in[1,l]$,假设$\textrm{P}(\varphi_j |\varphi_1^{j-1},t)$仅依赖于$\varphi_j$$t_j$$\textrm{P}(\pi_{jk}|\pi_{j1}^{k-1},\pi_1^{j-1},\tau_0^l,\varphi_0^l,t)$仅依赖于$\pi_{jk}$$j$$m$$l$。而对于所有的$j\in[0,l]$,假设$\textrm{P}(\tau_{jk}|\tau_{j1}^{k-1},\tau_1^{j-1},\phi_0^l,t)$仅依赖于$\tau_{jk}$$t_j$。形式化这些假设,我们得到:
\begin{eqnarray}
\textrm{P}(\varphi_j|\varphi_1^{j-1},t) & = &{\textrm{P}(\varphi_j|t_j)} \label{eqC3.5.3} \\
\textrm{P}(\tau_{jk}|\tau_{j1}^{k-1},\tau_{1}^{j-1},\varphi_0^t,t) & = & t(s|t_j) \label{eqC3.5.4} \\
\textrm{P}(\pi_{jk}|\pi_{j1}^{k-1},\pi_{1}^{j-1},\tau_{0}^{l},\varphi_{0}^{l},t) & = & d(i|j,m,l) \label{eqC3.5.5}
\textrm{P}(\tau_{jk} = s_i |\tau_{j1}^{k-1},\tau_{1}^{j-1},\varphi_0^t,t) & = & t(s_i|t_j) \label{eqC3.5.4} \\
\textrm{P}(\pi_{jk} = i |\pi_{j1}^{k-1},\pi_{1}^{j-1},\tau_{0}^{l},\varphi_{0}^{l},t) & = & d(i|j,m,l) \label{eqC3.5.5}
\end{eqnarray}
\noindent\hspace{2em}我们把$d(i|j,m,l)$称为扭曲度。这里$\textrm{P}(\varphi_j|\varphi_1^{j-1},t)={\textrm{P}(\varphi_j|t_j)}$$\textrm{P}(\pi_{jk}|\pi_{j1}^{k-1},\pi_{1}^{j-1},$\\$\tau_0^l,\varphi_0^l,t)=d(i|j,m,l)$仅对$1 \le j \le l$成立。这样就完成了公式\ref{eqC3.5.2}中第1、 3和4部分的建模。
\noindent\hspace{2em}我们把$d(i|j,m,l)$称为扭曲度。这里$\textrm{P}(\varphi_j|\varphi_1^{j-1},t)={\textrm{P}(\varphi_j|t_j)}$$\textrm{P}(\pi_{jk}=i|\pi_{j1}^{k-1},\pi_{1}^{j-1},$\\$\tau_0^l,\varphi_0^l,t)=d(i|j,m,l)$仅对$1 \le j \le l$成立。这样就完成了公式\ref{eqC3.5.2}中第1、 3和4部分的建模。
\noindent\hspace{2em}对于$j=0$的情况需要单独进行考虑。实际上,$t_0$只是一个虚拟的单词。它要对应源文$s$中原本为空对应的单词。这里假设,要等其他非空对应单词都被生成(放置)后,才考虑这些空对单词的生成(放置)。即非空对单词都被生成后,在那些还有空的位置上放置这些空对的源语单词。此外,在任何的空位置上放置空对的源语单词都是等概率的,即放置空对源语单词服从均匀分布。这样在已经放置了$k$个空对源语言单词的时候,应该还有$\varphi_0-k$个空位置。如果第$j$个位置为空,那么$\textrm{P}(\pi_{0k}=j|\pi_{01}^{k-1},\pi_1^l,\tau_0^l,\varphi_0^l,t)=(\varphi_0-k)^{-1}$,否则$\textrm{P}(\pi_{0k}=j|\pi_{01}^{k-1},\pi_1^l,\tau_0^l,\varphi_0^l,t)=0$。这样对于$t_0$所对应的$\tau_0$,就有
\noindent\hspace{2em}对于$j=0$的情况需要单独进行考虑。实际上,$t_0$只是一个虚拟的单词。它要对应$s$中原本为空对齐的单词。这里假设,要等其他非空对应单词都被生成(放置)后,才考虑这些空对齐单词的生成(放置)。即非空对单词都被生成后,在那些还有空的位置上放置这些空对的源语单词。此外,在任何的空位置上放置空对的源语单词都是等概率的,即放置空对齐源语言单词服从均匀分布。这样在已经放置了$k$个空对齐源语言单词的时候,应该还有$\varphi_0-k$个空位置。如果第$j$个位置为空,那么$\textrm{P}(\pi_{0k}=j|\pi_{01}^{k-1},\pi_1^l,\tau_0^l,\varphi_0^l,t)=\frac{1}{\varphi_0-k}$,否则$\textrm{P}(\pi_{0k}=j|\pi_{01}^{k-1},\pi_1^l,\tau_0^l,\varphi_0^l,t)=0$。这样对于$t_0$所对应的$\tau_0$,就有
\begin{equation}
\prod_{k=1}^{\varphi_0}{\textrm{P}(\pi_{0k}|\pi_{01}^{k-1},\pi_{1}^{l},\tau_{0}^{l},\varphi_{0}^{l},e) }=\frac{1}{\varphi_{0}!}
\label{eqC3.5.6}
\end{equation}
\noindent\hspace{2em}而上面提到的这些$t_0$所对应的空位置是如何生成的呢?即如何确定哪些位置是要放置空对的源语单词。在IBM模型3中,假设在所有的非空对源语单词都被生成出来后(共$\varphi_1+\varphi_2+\cdots {\varphi}_l$个非空对源语单词),这些单词后面都以$p_1$概率随机地产生一个``空''用来放置空对单词。这样,${\varphi}_0$就服从了一个二项分布。于是我们得到
\noindent\hspace{2em}而上面提到的这些$t_0$所对应的空位置是如何生成的呢?即如何确定哪些位置是要放置空对齐的源语言单词。在IBM模型3中,假设在所有的非空对源语单词都被生成出来后(共$\varphi_1+\varphi_2+\cdots {\varphi}_l$个非空对源语单词),这些单词后面都以$p_1$概率随机地产生一个``槽''用来放置空对单词。这样,${\varphi}_0$就服从了一个二项分布。于是我们得到
\begin{equation}
\textrm{P}(\varphi_0|t)=(\begin{array}{c}
\varphi_1+\varphi_2+\cdots \varphi_l\\
......@@ -1037,17 +1037,17 @@ f(s_u|t_v) = \frac{\lambda_{t_v}^{-1} \epsilon}{(l+1)^{m}} \cdot \frac{\sum\limi
\label{eqC3.5.7}
\end{equation}
\noindent其中,\ref{eqC3.5.7}$p_0+p_1=1$值此为止,我们完成了公式\ref{eqC3.5.7}中第2和5部分的建模。最终根据这些假设可以得到$\textrm{P}(s|t)$
\noindent其中,\ref{eqC3.5.7}$p_0+p_1=1$到此为止,我们完成了公式\ref{eqC3.5.7}中第2和5部分的建模。最终根据这些假设可以得到$\textrm{P}(s|t)$的形式
\begin{eqnarray}
{\textrm{P}(s|t)}&= &{\sum_{a_1=0}^{l}{\cdots}\sum_{a_m=0}^{l}{(\begin{array}{c}
m-\varphi_0\\
\varphi_0\\
\end{array})}p_0^{m-2\varphi_0}p_1^{\varphi_0}\prod_{j=1}^{l}{{\varphi_j}!n(\varphi_j|e_j) }} \nonumber \\
& & \times{\prod_{i=1}^{m}{t(s_i|t_{s_{ai}})}\prod_{i=1,a_i\neq 0}{d(i|a_i,m,l)}}
& & \times{\prod_{i=1}^{m}{t(s_i|t_{s_{a_i}})}\prod_{i=1,a_i\neq 0}{d(i|a_i,m,l)}}
\label{eqC3.5.8}
\end{eqnarray}
\noindent其中,$n(\varphi_j |e_j)$表示产出率的分布。这里的约束条件为,
\noindent其中,$n(\varphi_j |e_j)={\textrm{P}(\varphi_j|t_j)}$表示产出率的分布。这里的约束条件为,
\begin{eqnarray}
\sum_{f}t(s|t) & = &1 \label{eqC3.5.9} \\
......@@ -1060,9 +1060,9 @@ p_0+p_1 & = & 1 \label{eqC3.5.12}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{IBM 模型4}\index{Chapter3.5.3}
\noindent\hspace{2em}IBM模型3仍然存在问题,比如不能很好的处理一个目标语言单词生成多个源语单词的情况。这个问题在模型1和模型2中也存在。如果一个目标语言单词对应多个源语言单词,往往这些源语言单词构成短语或搭配。但是模型1-3都把这些源语单词看成独立的单元,而实际上它们应该被看成一个翻译的整体。这就造成了在模型1-3中,这些源语言单词可能“分散”开。为了解决这个问题,模型4对模型3进行了进一步修改。
\noindent\hspace{2em}IBM模型3仍然存在问题,比如不能很好的处理一个目标语言单词生成多个源语单词的情况。这个问题在模型1和模型2中也存在。如果一个目标语言单词对应多个源语言单词,往往这些源语言单词构成短语或搭配。但是模型1-3都把这些源语单词看成独立的单元,而实际上它们应该被看成一个翻译的整体。这就造成了在模型1-3中,这些源语言单词可能“分散”开。为了解决这个问题,模型4对模型3进行了进一步修改。
\noindent\hspace{2em}为了更清楚的阐述,这里引入新的术语\ \ 概念单元。\noindent\hspace{2em}词对齐又可以被看作概念(concept,简记为cept.)之间的对应。这里的概念是指具有独立语法或语义功能的一组单词。依照Brown等人的表示方法,我们把概念记为cept.。每个句子都可以被表示成一系列的cept.。这里要注意的是,源语言句子中的cept.数量不一定等于目标句子中的cept.数量。因为有些cept.可以为空,我们把那些空对的单词看作空cept.。比如,在图\ref{figureC3.6.1}的实例中,``了''就是(对应)一个空cept.。
\noindent\hspace{2em}为了更清楚的阐述,这里引入新的术语\ \ 概念单元。词对齐又可以被看作概念(concept,简记为cept.)之间的对应。这里的概念是指具有独立语法或语义功能的一组单词。依照Brown等人的表示方法,我们把概念记为cept.。每个句子都可以被表示成一系列的cept.。这里要注意的是,源语言句子中的cept.数量不一定等于目标句子中的cept.数量。因为有些cept.可以为空,我们把那些空对的单词看作空cept.。比如,在图\ref{figureC3.6.1}的实例中,``了''就是(对应)一个空cept.。
%----------------------------------------------
% 图3.6.1
\begin{figure}[htp]
......@@ -1075,32 +1075,32 @@ p_0+p_1 & = & 1 \label{eqC3.5.12}
\noindent\hspace{2em}在IBM模型的词对齐框架下,目标语的cept.只能是那些非空对的目标语单词,而且每个cept.只能由一个目标语单词组成(通常把这类由一个单词组成的cept.称为独立单词cept.)。我们用$[j]$表示第$j$个独立单词cept.在目标语言句子中的位置。换句话说,$[j]$表示第$j$个非空对的目标语单词在目标语言句子中的位置。比如在本例中``mind''在$t$中的位置表示为$[3]$
\noindent\hspace{2em}另外,我们用$\odot[j]$表示位置为$[j]$的目标语言单词对应的那些源语言单词的位置的独立单词cept.平均值,如果这个平均值不是整数则对它向上取整。比如在本例中,目标语句中第4个cept.(``.'')对应在源语言句子中的第5个输出值。可表示为${\odot}_{[4]}=5$
\noindent\hspace{2em}另外,我们用$\odot_{[j]}$表示位置为$[j]$的目标语言单词对应的那些源语言单词的位置的独立单词cept.平均值,如果这个平均值不是整数则对它向上取整。比如在本例中,目标语句中第4个cept.(``.'')对应在源语言句子中的第5个输出值。可表示为${\odot}_{[4]}=5$
\noindent\hspace{2em}利用这些新引进的概念,模型4对模型3的扭曲度进行了修改。主要是把扭曲度分解为两类参数。对于$[j]$对应的源语言单词列表($\tau_{[j]}$)中的第一个单词($\tau_{[j]1}$),它的扭曲度用如下等式计算:
\begin{equation}
\textrm{P}(\pi_{[j]1}=i|{\pi}_1^{[j]-1},{\tau}_0^l,{\varphi}_0^l,t)=d_{1}(i-{\odot}_{[j]}|\textrm{A}(e_{[j-1]}),\textrm{B}(f_i))
\textrm{P}(\pi_{[j]1}=i|{\pi}_1^{[j]-1},{\tau}_0^l,{\varphi}_0^l,t)=d_{1}(i-{\odot}_{[j]}|A(e_{[j-1]}),B(f_i))
\label{eqC3.6.1}
\end{equation}
\noindent其中,译文的第$j$个单词生成的第$k$个源语单词在源语言句子中的位置用变量$\pi_{jk}$表示,$\pi$表示它的观测值。而对于列表($\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}|\textrm{B}(f_i))
\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))
\label{eqC3.6.1}
\end{equation}
\noindent\hspace{2em}这里的函数$\textrm{A}(\cdot)$和函数$\textrm{B}(\cdot)$分别把目标语言和源语言的单词影射到单词的词类。这么做的目的一方面要减小参数空间的大小,另一方面是要减小数据的稀疏程度。词类信息通常可以通过外部工具得到,比如Brown聚类等。不过,我们并不会讨论词聚类算法。这里可以也提供一种简单的方法,那就把单词直接映射为它的词性即可。这样可以直接用现在已经非常成熟的词性标注工具解决问题。
\noindent\hspace{2em}这里的函数$A(\cdot)$和函数$B(\cdot)$分别把目标语言和源语言的单词影射到单词的词类。这么做的目的一方面要减小参数空间的大小,另一方面是要减小数据的稀疏程度。词类信息通常可以通过外部工具得到,比如Brown聚类等。不过,我们并不会讨论词聚类算法。这里可以也提供一种简单的方法,那就把单词直接映射为它的词性即可。这样可以直接用现在已经非常成熟的词性标注工具解决问题。
\noindent\hspace{2em}从上面改进的扭曲度模型中可以看出,对于$t[j]$生成的第一个源语言单词,要考虑中心$\odot_{[j]}$和这个源语言单词之间的绝对距离。实际上也就要把$t[j]$生成的所有源语言单词看成一个整体并把它放置在合适的位置。这个过程要依据第一个源语言单词的位置$i$及其词类,和前一个非空对目标语言单词$t[j-1]$的词类。而对于$t[j]$生成的其它源语言单词,只需要考虑它与前一个刚放置完的源语言单词的相对位置和这个源语言单词的词类。
\noindent\hspace{2em}从上面改进的扭曲度模型可以看出,对于$t_{[j]}$生成的第一个源语言单词,要考虑中心$\odot_{[j]}$和这个源语言单词之间的绝对距离。实际上也就要把$t_{[j]}$生成的所有源语言单词看成一个整体并把它放置在合适的位置。这个过程要依据第一个源语言单词的位置$i$及其词类,和前一个非空对目标语言单词$t_{[j-1]}$的词类。而对于$t[j]$生成的其它源语言单词,只需要考虑它与前一个刚放置完的源语言单词的相对位置和这个源语言单词的词类。
\noindent\hspace{2em}实际上,上述过程就要先用$t[j]$生成的第一个源语言单词代表整个$t[j]$生成的单词列表,并把第一个源语言单词放置在合适的位置。然后,把列表中的其它单词放置在相对于前一个刚生成的源语言单词合适的地方。这样就可以在一定程度上保证由同一个目标语言单词生成的源语言单词之间可以相互影响,达到了改进的目的。
\noindent\hspace{2em}实际上,上述过程就要先用$t_{[j]}$生成的第一个源语言单词代表整个$t_{[j]}$生成的单词列表,并把第一个源语言单词放置在合适的位置。然后,把列表中的其它单词放置在相对于前一个刚生成的源语言单词合适的地方。这样就可以在一定程度上保证由同一个目标语言单词生成的源语言单词之间可以相互影响,达到了改进的目的。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{ IBM 模型5}\index{Chapter3.5.4}
\noindent\hspace{2em}模型3和模型4并不是``准确''的模型。这两个模型会把一部分概率分配给一些根本就不存在的句子。这个问题被称作IBM模型3和模型4的缺陷(Deficiency)。说的具体一些,模型3和模型4中并没有这样的约束:如果已经放置了某个源语言单词的位置不能再放置其它单词,也就是说句子的任何位置只能放置一个词,不能多也不能少。由于缺乏这个约束,模型3和模型4中在所有合法的对齐上概率和不等于1。这部分缺失的概率被分配到其它不合法的对齐上。举例来说,如图\ref{figureC3.5.4}所示,``吃 早饭''和``Have breakfast''之间的合法词对齐用直线表示 。但是在模型3和模型4中, 在它们上的概率和为$0.9<1$。损失掉的概率被分配到像5和6这样的对齐上了(红色)。虽然IBM模型并不支持一对多的对齐,但是模型3和模型4把概率分配给这些``不合法''的词对齐上,因此也就产生所谓的dificency问题。
\noindent\hspace{2em}模型3和模型4并不是``准确''的模型。这两个模型会把一部分概率分配给一些根本就不存在的句子。这个问题被称作IBM模型3和模型4的缺陷(Deficiency)。说的具体一些,模型3和模型4中并没有这样的约束:如果已经放置了某个源语言单词的位置不能再放置其它单词,也就是说句子的任何位置只能放置一个词,不能多也不能少。由于缺乏这个约束,模型3和模型4中在所有合法的词对齐上概率和不等于1。这部分缺失的概率被分配到其它不合法的词对齐上。举例来说,如图\ref{figureC3.5.4}所示,``吃 早饭''和``Have breakfast''之间的合法词对齐用直线表示 。但是在模型3和模型4中, 在它们上的概率和为$0.9<1$。损失掉的概率被分配到像5和6这样的对齐上了(红色)。虽然IBM模型并不支持一对多的对齐,但是模型3和模型4把概率分配给这些``不合法''的词对齐上,因此也就产生所谓的dificency问题。
%----------------------------------------------
% 图3.5.4
......@@ -1113,10 +1113,10 @@ p_0+p_1 & = & 1 \label{eqC3.5.12}
\end{figure}
%-------------------------------------------
\noindent\hspace{2em}为了解决这个问题,模型5在模型中增加了额外的约束。基本想法是,在放置一个源语言单词的时候检查要放置的位置是否已经放置了单词,如果可以则把这个放置过程赋予一定的概率,否则把它作为不可能事件。依据这个想法,就需要在逐个放置源语言单词的时候判断源语言句子的哪些位置为空。这里引进一个变量$v(i, {\tau_1}^{[j]-1}, \tau_{[i]1}^{k-1})$,它表示在放置$\tau_{[i]k}$之前($\tau_1^{[j]-1}$$\tau_{[i]1}^{k-1}$已经被放置完了),从源语言句子的第一个位置到位置$i$(包括$i$)为止还有多少个空位置。这里,把这个变量简写为$v_j$。于是,对于$[j]$对应的源语言单词列表($\tau_{[j]}$)中的第一个单词($\tau_{[j]1}$),我们有:
\noindent\hspace{2em}为了解决这个问题,模型5在模型中增加了额外的约束。基本想法是,在放置一个源语言单词的时候检查要放置的位置是否已经放置了单词,如果可以则把这个放置过程赋予一定的概率,否则把它作为不可能事件。依据这个想法,就需要在逐个放置源语言单词的时候判断源语言句子的哪些位置为空。这里引入一个变量$v(i, {\tau_1}^{[j]-1}, \tau_{[i]1}^{k-1})$,它表示在放置$\tau_{[i]k}$之前($\tau_1^{[j]-1}$$\tau_{[i]1}^{k-1}$已经被放置完了),从源语言句子的第一个位置到位置$i$(包含$i$)为止还有多少个空位置。这里,把这个变量简写为$v_j$。于是,对于$[j]$对应的源语言单词列表($\tau_{[j]}$)中的第一个单词($\tau_{[j]1}$),我们有:
\begin{eqnarray}
\textrm{P}(\prod_{[j]1} = i | \pi_1^{[j]-1}, \tau_0^l, \varphi_0^l, t) & = & d_1(v_i|\textrm{B}(f_i), \odot_{v_{j-1}}, v_m-\varphi_{[j]}+1) \times \nonumber \\
\textrm{P}(\pi_{[j]1} = i | \pi_1^{[j]-1}, \tau_0^l, \varphi_0^l, t) & = & d_1(v_i|B(f_i), \odot_{v_{j-1}}, v_m-(\varphi_{[j]}-1)) \cdot \nonumber \\
& & (1-\delta(v_i,v_{i-1}))
\label{eqC3.5.41}
\end{eqnarray}
......@@ -1124,19 +1124,19 @@ p_0+p_1 & = & 1 \label{eqC3.5.12}
\noindent\hspace{2em}对于其它单词($\tau_{[j]k}$, $1<k\leqslant\varphi_{[j]}$),我们有
\begin{eqnarray}
& & \textrm{P}(\prod_{[j]k}=i|\pi_{[j]1}^{k-1}, \pi_1^{[j]-1}, \tau_0^l, \varphi_0^l, t) \nonumber \\
&= & d_{>1}(v_i-v_{\varphi_{[j]}k-1}|\textrm{B}(f_i), v_m-v_{\varphi_{[j]}k-1}-\varphi_{[j]}+k)(1-\delta(v_i,v_{i-1}))
& & \textrm{P}(\pi_{[j]k}=i|\pi_{[j]1}^{k-1}, \pi_1^{[j]-1}, \tau_0^l, \varphi_0^l, 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.5.42}
\end{eqnarray}
\noindent\hspace{2em}这里,因子$1-\delta(v_i, v_{i-1})$是用来判断第$i$个位置是不是为空。如果第$i$个位置为空则$v_i = v_{i-1}$,这样$\textrm{P}(\prod_{[j]1}=i|\pi_1^{[j]-1}, \tau_0^l, \varphi_0^l, t) = 0$。这样就从模型上避免了模型3和模型4中生成不存在的字符串的问题。这里还要注意的是,对于放置第一个单词的情况,影响放置的因素有$v_i$$\textrm{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的其它部分都可以的用上面的理论解释,这里不再重复
\noindent\hspace{2em}这里,因子$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, 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的其它部分都可以用上面的理论解释,这里不再赘述
\noindent\hspace{2em}实际上,模型5和模型4的思想基本一致,即,先确定$\tau_{[j]1}$的绝对位置,然后再确定$\tau_{[j]}$中剩余单词的相对位置。模型5消除了产生不存在的句子的可能性,不过模型5的复杂性也大大增加了。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{基于隐马尔可夫模型的模型}\index{Chapter3.5.5}
\noindent\hspace{2em}在IBM模型可以得到句子间的词对齐,因此也有很多工作在这个模型的基础上改进词对齐结果。其中一个比较有代表性的方法是基于隐马尔可夫模型的方法({\red 参考文献?}),它可以被看作是IBM模型2的升级版本。
\noindent\hspace{2em}在IBM模型可以得到句子间的词对齐,因此也有很多工作在这个模型的基础上对词对齐进行改进。其中一个比较有代表性的方法是基于隐马尔可夫模型的方法({\red 参考文献?}),它可以被看作是IBM模型2的升级版本。
\subsubsection{(一)隐马尔可夫模型}
......@@ -1149,7 +1149,7 @@ p_0+p_1 & = & 1 \label{eqC3.5.12}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{解码和训练}\index{Chapter3.5.5}
\noindent\hspace{2em}和IBM模型1-2一样,IBM模型3-5和隐马尔可夫模型的解码可以直接使用\ref{sec:sentence-level-translation}节所描述的方法。基本思路是对译文自左向右生成,每次扩展一个源语言单词的翻译。每次扩展可以选择不同的源语言单词或者同一个源语言单词的不同翻译候选,这样就可以得到多个不同的扩展译文。在这个过程中,同时计算翻译模型和语言模型的得分,对每个得到译文候选打分。最终,保留一个或者多个译文。这个过程重复执行直至所有源语言单词被翻译完。
\noindent\hspace{2em}和IBM模型1-2一样,IBM模型3-5和隐马尔可夫模型的解码可以直接使用\ref{sec:sentence-level-translation}节所描述的方法。基本思路是对译文自左向右生成,每次扩展一个源语言单词的翻译,即把源语言单词的译文放到已经生成的译文的右侧。每次扩展可以选择不同的源语言单词或者同一个源语言单词的不同翻译候选,这样就可以得到多个不同的扩展译文。在这个过程中,同时计算翻译模型和语言模型的得分,对每个得到译文候选打分。最终,保留一个或者多个译文。这个过程重复执行直至所有源语言单词被翻译完。
类似的,IBM模型3-5和隐马尔可夫模型也都可以使用期望最大化(EM)方法进行模型训练。相关数学推导可参考附录??的内容({\red 附录A可以放IBM模型3-5的训练方法,我的硕士论文上都有,直接抄过去就行,注意符号!})。通常,我们会使用这些模型获得双语句对间的词对齐结果,比如著名的GIZA++工具。这时,往往会使用多个模型,把简单的模型训练后的参数作为初始值送给后面更加复杂的模型。比如,先用IBM模型1训练,之后把参数送给IBM模型2,再训练,之后把参数送给隐马尔可夫模型等。值得注意的是,并不是所有的模型使用EM算法都能找到全局最优解。特别是IBM模型3-5的训练中使用一些剪枝和近似的方法,优化的真实目标函数会更加复杂。不过,IBM模型1是一个凸函数(convex function),因此理论上使用EM类的方法是能找到全局最优解的。更实际的好处是,IBM模型1训练的最终结果与参数的初始化过程无关。也是为什么在使用IBM系列模型时,往往会使用IBM模型1作为起始模型的原因。
......@@ -1161,17 +1161,17 @@ p_0+p_1 & = & 1 \label{eqC3.5.12}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{词对齐及对称化}\index{Chapter3.6.1}
\noindent\hspace{2em}IBM的五个模型都是基于一个词对齐的假设 —— 一个源语言单词最多只能对齐到一个目标语言单词。这个约束大大化简了IBM模型的建模。最初,Brown等人提出这个假设可能是因为在法英翻译中一对多的对齐情况并不多见,这个假设带来的问题也不是那么严重。但是,在像汉英翻译这样的机器翻译任务中,一个中文单词对应多个英文单词的翻译很常见。这时IBM模型的词对齐假设就表现出了明显的问题。比如在翻译``我 会 试一试 。''$\to$``I will have a try .|''时,IBM模型根本不能把单词``试一试''对齐到三个单词“have a try”,因而可能无法得到正确的翻译结果。
\noindent\hspace{2em}IBM的五个模型都是基于一个词对齐的假设\ \ \ \ 一个源语言单词最多只能对齐到一个目标语言单词。这个约束大大化简了IBM模型的建模。最初,Brown等人提出这个假设可能是因为在法英翻译中一对多的对齐情况并不多见,这个假设带来的问题也不是那么严重。但是,在像汉英翻译这样的任务中,一个汉语单词对应多个英语单词的翻译很常见。这时IBM模型的词对齐假设就表现出了明显的问题。比如在翻译``我 会 试一试 。''$\to$``I will have a try .''时,IBM模型根本不能把单词``试一试''对齐到三个单词“have a try”,因而可能无法得到正确的翻译结果。
\noindent\hspace{2em}本质上说,IBM模型的词对齐的不``完整''问题是IBM模型本身的缺陷。解决这个问题有很多思路,第一种方法就是,反向训练后,合并源语言单词,然后再正向训练。这里用汉英翻译为例来解释这个方法。首先反向训练,就是把英语当作待翻译语言,而把汉语当作目标语言进行训练(参数估计)。这样可以得到一个词对齐结果(参数估计的中间结果)。在这个词对齐结果里面,一个中文单词可对应多个英文单词。之后,扫描每个英文句子,如果有多个英文单词对应同一个中文单词,就把这些英文单词合并成一个英文单词。处理完之后,再把汉语当作源语言言把英语当作目标语言进行训练。这样就可以把一个中文词对应到合并的英文单词上。虽然从模型上看,还是一个中文单词对应一个英文``单词'',但实质上已经把这个中文单词对应到多个英文单词上了。训练完之后,再利用这些参数进行翻译(解码)时,就能把一个中文单词翻译成多个英文单词了。这个方法的流程如图所示。但是反向训练后再训练也存在一些问题。首先,合并英文单词会使数据变得更稀疏,使训练不充分。其次,由于IBM模型的词对齐结果并不是高精度的,利用它的词对齐结果来合并一些英文单词可能造成严重的错误,比如:把本来很独立的几个单词合在了一起。因此,此方法也并不完美。具体使用时还要考虑实际需要和问题的严重程度来决定是否使用这个方法。
\noindent\hspace{2em}本质上说,IBM模型的词对齐的不``完整''问题是IBM模型本身的缺陷。解决这个问题有很多思路,第一种方法就是,反向训练后,合并源语言单词,然后再正向训练。这里用汉英翻译为例来解释这个方法。首先反向训练,就是把英语当作待翻译语言,而把汉语当作目标语言进行训练(参数估计)。这样可以得到一个词对齐结果(参数估计的中间结果)。在这个词对齐结果里面,一个汉语单词可对应多个英语单词。之后,扫描每个英语句子,如果有多个英语单词对应同一个汉语单词,就把这些英语单词合并成一个英语单词。处理完之后,再把汉语当作源语言言把英语当作目标语言进行训练。这样就可以把一个汉语词对应到合并的英语单词上。虽然从模型上看,还是一个汉语单词对应一个英语``单词'',但实质上已经把这个汉语单词对应到多个英语单词上了。训练完之后,再利用这些参数进行翻译(解码)时,就能把一个中文单词翻译成多个英文单词了。但是反向训练后再训练也存在一些问题。首先,合并英语单词会使数据变得更稀疏,使训练不充分。其次,由于IBM模型的词对齐结果并不是高精度的,利用它的词对齐结果来合并一些英文单词可能造成严重的错误,比如:把本来很独立的几个单词合在了一起。因此,此方法也并不完美。具体使用时还要考虑实际需要和问题的严重程度来决定是否使用这个方法。
\noindent\hspace{2em}另一种方法是双向对齐之后进行词对齐\textbf{对称化}(Symmetrization)。这个方法可以帮助我们在IBM词对齐的基础上获得对称的词对齐结果。这个思路很简单,就是用正向(汉语为源语言,英语为目标语言)和反向(汉语为目标语言,英语为源语言)同时训练。这样可以得到两个词对齐结果。然后利用一些启发性方法使用这两个词对齐生成对称的结果(比如,取``并集''、``交集''等),这样就可以得到包含1对多和多对多的词对齐结果。比如,在基于短语的统计机器翻译中已经很成功地使用了这种词对齐信息进行短语的获取。直到今天,对称化仍然是很多自然语言处理系统中的一个步骤。
\noindent\hspace{2em}另一种方法是双向对齐之后进行词对齐\textbf{对称化}(Symmetrization)。这个方法可以帮助我们在IBM词对齐的基础上获得对称的词对齐结果。思路很简单,用正向(汉语为源语言,英语为目标语言)和反向(汉语为目标语言,英语为源语言)同时训练。这样可以得到两个词对齐结果。然后利用一些启发性方法用这两个词对齐生成对称的结果(比如,取``并集''、``交集''等),这样就可以得到包含1对多和多对多的词对齐结果。比如,在基于短语的统计机器翻译中已经很成功地使用了这种词对齐信息进行短语的获取。直到今天,对称化仍然是很多自然语言处理系统中的一个关键步骤。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Deficiency}\index{Chapter3.6.2}
\noindent\hspace{2em}Deficiency问题是指翻译模型会把一部分的概率分配给一些根本不存在的源语言字符串。如果用$P(\textrm{well}|t)$表示$P(s|t)$在所有的正确的(可以理解为语法上正确的)$s$上的和,即
\noindent\hspace{2em}Deficiency问题是指翻译模型会把一部分概率分配给一些根本不存在的源语言字符串。如果用$\textrm{P}(\textrm{well}|t)$表示$\textrm{P}(s|t)$在所有的正确的(可以理解为语法上正确的)$s$上的和,即
\begin{equation}
\textrm{P}(\textrm{well}|t)=\sum_{s\textrm{\;is\;well\;formed}}{\textrm{P}(s|t)}
......@@ -1185,11 +1185,11 @@ p_0+p_1 & = & 1 \label{eqC3.5.12}
\label{eqC3.6.1}
\end{equation}
\noindent\hspace{2em}本质上,模型3和模型4就是对应$\textrm{P}({\textrm{failure}|t})>0$的情况。这部分概率是模型损失掉的。有时候也把这类Deficiency问题称为Technical Deficiency。还有一种Deficiency问题被称作Spiritual Deficiency,它是指$\textrm{P}({\textrm{well}|t}) + \textrm{P}({\textrm{ill}|t}) = 1$$\textrm{P}({\textrm{ill}|t}) > 0$的情况。模型1和模型2就有Spiritually Deficiency的问题。可以注意到,Technical Deficiency只存在于模型3和模型4中,模型1和模型2并没有Technical Deficiency问题。根本原因是模型1和模型2的词对齐是从源语言出发对应到目标语言,$t$$s$的翻译过程实际上是从单词$s_1$开始到单词$s_m$结束,依次把每个源语言单词$s_i$对应到唯一一个目标语言位置。显然,这个过程能够保证每个源语言单词仅对应一个目标语言单词。但是,模型3和模型4中对齐是从目标语言出发对应到源语言,$t$$s$的翻译过程从$t_1$开始$t_l$结束,依次把目标语言单词$t_j$生成的单词对应到某个源语言位置上。但是这个过程不能保证$t_j$中生成的单词所对应的位置没有被其它已经完成对齐的目标语单词所生成的某个源语言单词对应过,因此也就产生了deficency问题。
\noindent\hspace{2em}本质上,模型3和模型4就是对应$\textrm{P}({\textrm{failure}|t})>0$的情况。这部分概率是模型损失掉的。有时候也把这类Deficiency问题称为Technical Deficiency。还有一种Deficiency问题被称作Spiritual Deficiency,它是指$\textrm{P}({\textrm{well}|t}) + \textrm{P}({\textrm{ill}|t}) = 1$$\textrm{P}({\textrm{ill}|t}) > 0$的情况。模型1和模型2就有Spiritually Deficiency的问题。可以注意到,Technical Deficiency只存在于模型3和模型4中,模型1和模型2并没有Technical Deficiency问题。根本原因是模型1和模型2的词对齐是从源语言出发对应到目标语言,$t$$s$的翻译过程实际上是从单词$s_1$开始到单词$s_m$结束,依次把每个源语言单词$s_i$对应到唯一一个目标语言位置。显然,这个过程能够保证每个源语言单词仅对应一个目标语言单词。但是,模型3和模型4中对齐是从目标语言出发对应到源语言,$t$$s$的翻译过程从$t_1$开始$t_l$结束,依次把目标语言单词$t_j$生成的单词对应到某个源语言位置上。但是这个过程不能保证$t_j$中生成的单词所对应的位置没有被其它已经完成对齐的目标语单词所生成的某个源语言单词对应过,因此也就产生了Deficency问题。
\noindent\hspace{2em}这里还要强调的是,Technical Deficiency是模型3和模型4是模型本身的缺陷造成的,如果有一个``更好''的模型就可以完全避免这个问题。而Spiritually Deficiency几乎是不能从模型上根本解决的,因为对于任意一种语言我们都不能枚举所有的句子($\textrm{P}({\textrm{ill}|t})$实际上是得不到的)。
\noindent\hspace{2em}IBM的模型5已经解决了Technical Deficiency问题。不过模型5过于复杂。实际上Technical Deficiency问题是不是需要解决,这一点在本节随后的内容中还要进行讨论。Spiritually Deficiency的解决很困难,因为即使对于人来说也很难判断一个句子是不是``良好''的句子。当然可以考虑用语言模型来缓解这个问题,不过由于在翻译的时候源语言句子都是定义``良好''的句子,$\textrm{P}({\textrm{ill}|t})$$\textrm{P}(s|t)$的影响并不大。但用输入的源语言句子$s$的``良好性''并不能解决Technical Deficiency,因为Technical Deficiency是模型的问题或者模型参数估计方法的问题。无论输入什么样的f,模型3和模型4的Technical Deficiency问题都存在。
\noindent\hspace{2em}IBM的模型5已经解决了Technical Deficiency问题。不过模型5过于复杂。实际上Technical Deficiency问题是不是需要解决,这一点在本节随后的内容中还要进行讨论。Spiritually Deficiency的解决很困难,因为即使对于人来说也很难判断一个句子是不是``良好''的句子。当然可以考虑用语言模型来缓解这个问题,不过由于在翻译的时候源语言句子都是定义``良好''的句子,$\textrm{P}({\textrm{ill}|t})$$\textrm{P}(s|t)$的影响并不大。但用输入的源语言句子$s$的``良好性''并不能解决Technical Deficiency,因为Technical Deficiency是模型的问题或者模型参数估计方法的问题。无论输入什么样的$s$,模型3和模型4的Technical Deficiency问题都存在。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{句子长度}\index{Chapter3.6.4}
......@@ -1197,13 +1197,13 @@ p_0+p_1 & = & 1 \label{eqC3.5.12}
\noindent\hspace{2em}在IBM模型中,$\textrm{P}(t)\textrm{P}(s|t)$会随着目标语言句子长度的增加而减少,因为这种生成模型有多个概率化的因素组成,一般乘积项越多结果的值越小。这也就是说,IBM模型会更倾向选择长度短一些的目标语言句子。显然这种对短句子的偏向性并不是我们所期望的。
\noindent\hspace{2em}整个问题在很多统计机器翻译系统中都存在,实际上也是一种系统偏置的体现。为了消除这种偏执,可以通过在模型中增加一个短句子惩罚引子来抵消调模型对短句子的倾向性。比如,可以定义一个惩罚引子,它的值随着长度的减少而增加。不过,简单引入这样的惩罚因子会导致模型并不符合一个严格的噪声信道模型。它对应一个基于最大熵框架的翻译模型,这部分内容会在下一章进行介绍。
\noindent\hspace{2em}这个问题在很多统计机器翻译系统中都存在,实际上也是一种系统偏置的体现。为了消除这种偏置,可以通过在模型中增加一个短句子惩罚引子来抵消调模型对短句子的倾向性。比如,可以定义一个惩罚引子,它的值随着长度的减少而增加。不过,简单引入这样的惩罚因子会导致模型并不符合一个严格的噪声信道模型。它对应一个判别式框架的翻译模型,这部分内容会在下一章进行介绍。
\subsection{其它问题}\index{Chapter3.6.5}
\noindent\hspace{2em}模型5的意义?模型5的提出是为了消除了模型3和模型4的Deficiency问题。\\Deficiency问题的本质是,$\textrm{P}(s,a|t)$在所有合理的对齐上概率和不为1。但是,在统计机器翻译中我们更关心是哪个对齐$a$使$\textrm{P}(s,a|t)$达到最大,即使$P(s,a|t)$不符合概率分布的定义,也并不影响我们寻找理想的对齐$a$。从这个工程的角度说,$P(s,a|t)$不归一并不是一个十分严重的问题。遗憾的是,实际上至今也太多对IBM模型3和模型4中的deficiency问题进行过系统的实验和分析,这个问题到底有多严重并没有定论。当然用模型5是可以解决这个问题。但是如果用一个非常复杂的模型去解决了一个并不产生严重后果的问题,那这个模型也就没有太大意义了(从实践的角度)。
\noindent\hspace{2em}模型5的意义?模型5的提出是为了消除了模型3和模型4的Deficiency问题。\\Deficiency问题的本质是,$\textrm{P}(s,a|t)$在所有合理的对齐上概率和不为1。但是,在统计机器翻译中我们更关心是哪个对齐$a$使$\textrm{P}(s,a|t)$达到最大,即使$P(s,a|t)$不符合概率分布的定义,也并不影响我们寻找理想的对齐$a$。从这个工程的角度说,$\textrm{P}(s,a|t)$不归一并不是一个十分严重的问题。遗憾的是,实际上至今也太多对IBM模型3和模型4中的deficiency问题进行过系统的实验和分析,这个问题到底有多严重并没有定论。当然用模型5是可以解决这个问题。但是如果用一个非常复杂的模型去解决了一个并不产生严重后果的问题,那这个模型也就没有太大意义了(从实践的角度)。
\noindent\hspace{2em}概念(Cept.)的意义?经过前面的分析可知,IBM模型的词对齐模型是使用了cept.这个概念。但是实质上,在IBM模型中使用的cept.最多只能对应一个目标语言单词(模型并没有用到源语言cept.的概念)。因此可以直接用单词代替cept.。这样,即使不引入cept.的概念,也并不影响IBM模型的建模。实际上,cept.的引入确实可以帮助我们从语法和语义的角度解释词对齐过程。不过,这个概念并没在IBM模型中的效果究竟如何也没有定论。
\noindent\hspace{2em}概念(Cept.)的意义?经过前面的分析可知,IBM模型的词对齐模型是使用了cept.这个概念。但是实质上,在IBM模型中使用的cept.最多只能对应一个目标语言单词(模型并没有用到源语言cept.的概念)。因此可以直接用单词代替cept.。这样,即使不引入cept.的概念,也并不影响IBM模型的建模。实际上,cept.的引入确实可以帮助我们从语法和语义的角度解释词对齐过程。不过,这个方法在IBM模型中的效果究竟如何也没有定论。
\section{小结和深入阅读}\index{Chapter3.7}
......@@ -1214,9 +1214,9 @@ p_0+p_1 & = & 1 \label{eqC3.5.12}
\begin{itemize}
\item IBM模型在提出后的十余年中,一直受到了学术界的关注。一个比较有代表性的成果是GIZA++({\red 给出链接!}),它集成了IBM模型和隐马尔可夫模型,并实现了这些模型的训练。在随后相当长的一段时间里,GIZA++也是机器翻译研究的标配,用于获得双语平行数据上单词一级的对齐结果。此外,研究者也对IBM模型进行了大量的分析,为后人研究统计机器翻译提供了大量依据({\red 可以引用Franz Och早期的论文,我记得有一个CL上的论文,应该还有一两篇,可以找找!})。虽然IBM模型很少被独立使用,甚至直接用基于IBM模型的解码器也不多见,但是它通常会作为其它模型的一部分参与到对翻译的建模中。这部分工作会在下一章基于短语和句法的模型中进行讨论({\red 参考论文?可以引用基于短语或者句法的模型,但是确认一下论文中是否提到了IBM这几个字})。此外,IBM模型也给我们提供了一种非常简便的计算双语词串对应好坏的方式,因此也被广泛用于度量双语词串对应的强度,是自然语言处理中的一种常用特征。
\item IBM模型在提出后的十余年中,一直受到了学术界的关注。一个比较有代表性的成果是GIZA++({\red 给出链接!}),它集成了IBM模型和隐马尔可夫模型,并实现了这些模型的训练。在随后相当长的一段时间里,GIZA++也是机器翻译研究的标配,用于获得双语平行数据上单词一级的对齐结果。此外,研究者也对IBM模型进行了大量的分析,为后人研究统计机器翻译提供了大量依据({\red 可以引用Franz Och早期的论文,我记得有一个CL上的论文,应该还有一两篇,可以找找!})。虽然IBM模型很少被独立使用,甚至直接用基于IBM模型的解码器也不多见,但是它通常会作为其它模型的一部分参与到对翻译的建模中。这部分工作会在下一章基于短语和句法的模型中进行讨论({\red 参考论文?可以引用基于短语或者句法的模型,但是确认一下论文中是否提到了IBM这几个字})。此外,IBM模型也给我们提供了一种非常简便的计算双语词串对应好坏的方式,因此也被广泛用于度量双语词串对应的强度,是自然语言处理中的一种常用特征。
\item 除了在机器翻译建模上的开创性工作,IBM模型的另一项重要贡献是建立了统计词对齐的基础模型。在训练IBM模型的过程中,除了学习到模型参数,我们还可以得到训练双语数据上的词对齐结果。也就是说词对齐标注是IBM模型训练的间接产物。这也使得IBM模型成为了自动词对齐的重要方法。包括GIZA++在内的很多工作,实际上更多的是被用于自动词对齐任务,而非简单的训练IBM模型参数。随着词对齐概念的不断深入,这个任务逐渐成为了自然语言处理中的重要分支,比如,对IBM模型的结果进行对称化({\red 引用1-2篇论文!}),也可以直接使用判别式模型利用分类模型解决词对齐问题({\red 引用1-2篇论文!}),甚至可以把利用对齐的思想用于短语和句法结构的双语对应({\red 引用2-3篇论文,看一下我的sub-tree alignment的论文!})。除了GIZA++,研究人员也开发了很多优秀的自动词对齐工具,比如,FastAlign({\red 链接})、Berkeley Aligner({\red 链接})等,这些工具现在也有很广泛的应用。
\item 除了在机器翻译建模上的开创性工作,IBM模型的另一项重要贡献是建立了统计词对齐的基础模型。在训练IBM模型的过程中,除了学习到模型参数,我们还可以得到双语数据上的词对齐结果。也就是说词对齐标注是IBM模型训练的间接产物。这也使得IBM模型成为了自动词对齐的重要方法。包括GIZA++在内的很多工作,实际上更多的是被用于自动词对齐任务,而非简单的训练IBM模型参数。随着词对齐概念的不断深入,这个任务逐渐成为了自然语言处理中的重要分支,比如,对IBM模型的结果进行对称化({\red 引用1-2篇论文!}),也可以直接使用判别式模型利用分类模型解决词对齐问题({\red 引用1-2篇论文!}),甚至可以把利用对齐的思想用于短语和句法结构的双语对应({\red 引用2-3篇论文,看一下我的sub-tree alignment的论文!})。除了GIZA++,研究人员也开发了很多优秀的自动词对齐工具,比如,FastAlign({\red 链接})、Berkeley Aligner({\red 链接})等,这些工具现在也有很广泛的应用。
\end{itemize}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论