Commit c72056ad by xiaotong

chapter 1.5.4

parent d9eaf1d3
......@@ -882,7 +882,7 @@ g(s,t) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)} \times \textrm{P
\begin{equation}
L(f,\lambda)=\frac{\epsilon}{(l+1)^m}\prod_{j=1}^{m}\sum_{i=0}^{l}\prod_{j=1}^{m}{f(s_j|t_i)}-\sum_{u}{\lambda_{t_y}(\sum_{s_x}{f(s_x|t_y)}-1)}
\label{eqC3.37}
\label{eqC3.37new}
\end{equation}
\noindent\hspace{2em}$L(f,\lambda)$包含两部分,$\frac{\epsilon}{(l+1)^m}\prod_{j=1}^{m}\sum_{i=0}^{l}\prod_{j=1}^{m}{f(s_j|t_i)}$是原始的目标函数,\\$\sum_{u}{\lambda_{t_y}(\sum_{s_x}{f(s_x|t_y)}-1)}$是原始的约束条件乘以拉格朗日乘数$\lambda_{t_y}$,拉格朗日乘数的数量和约束条件的数量相同。图\ref{figureC3.35}通过图例说明了$L(f,\lambda)$各部分的意义。
......@@ -954,101 +954,100 @@ 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模型有一定联系,但是从不同的视角看待翻译问题。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{基本翻译模型}\index{Chapter3.5.1}
\noindent\hspace{2em}从前面的介绍可知,IBM模型1和模型2都把不同的源文单词都看作相互独立的单元来进行词对齐和翻译。换句话说,即使源语中的某个短语中的两个单词都对齐到同一个目标语单词,它们之间也是相互独立的。这样模型1和模型2对于多个源语单词对齐到同一个目标语单词的情况并不能进行很好的描述。
\noindent\hspace{2em}从前面的介绍可知,IBM模型1和模型2都把不同的源文单词都看作相互独立的单元来进行词对齐和翻译。换句话说,即使源语中的某个短语中的两个单词都对齐到同一个目标语单词,它们之间也是相互独立的。这样模型1和模型2对于多个源语单词对齐到同一个目标语单词的情况并不能很好的描述。
\noindent\hspace{2em}这里将会给出另一个翻译模型,它能更细致的描述翻译过程,同时在一定程度上解决上面提到的问题
\noindent\hspace{2em}这里将会给出另一个翻译模型,能在一定程度上解决上面提到的问题。我们把目标语译文生成源文的过程分解为如下几个步骤:首先,确定每个目标语单词生成源语单词的个数,这里把它称为\textbf{产出率}\textbf{繁衍率}(fertility);其次,决定译文中每个单词生成的源语单词都是什么,即决定生成的第一个源语单词是什么,生成的第二个源语单词是什么,以此类推。这样每个目标语单词就对应了一个源语单词列表;最后把各组源语单词列表中的每个单词都放置到源语句子的某个位置上,完成目标语译文到源文的生成
\noindent\hspace{2em}我们把目标语译文生成源文的过程分解为如下几个步骤。首先确定每个目标语单词生成源语单词的个数,这里把它称为产出率(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}{\ref{figureC3.5.1}}中的实例描述了$<\textrm{科学家们 并不 知道}|Scientists(1,2) do(0) not(3) know(\\4)>$的生成过程。首先对于目标语译文$t$的每个单词$t_j$决定它的产出率$\varphi_{j}$。比如“Scie\\-ntists”的产出率是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
\begin{figure}[htp]
\centering
\includegraphics{./Chapter3/Figures/figure2.jpg}
\caption{此处为图片的描述...}
\caption{基于产出率的翻译过程}
\label{figureC3.5.1}
\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}可以看出,一组$\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)$时需要把每个可能结果的概率加起来。如公式\ref{eqC3.5.1}所示。
\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$$t$$m$$l$分别表示源文、目标语译文、源文单词数量以及译文单词数量。$\phi$$\tau$$\phi$分别记录产出率、生成的源语言单词以及它们在源文中的位置。${\phi}_{j}$表示第$j$个译文单词$t_j$的产出率。${\tau}_{j}$${\phi}_j$分别表示$t_j$生成的源语言单词列表及其在源语句s中的位置列表。
\noindent\hspace{2em}不过$<s,a>$中有多少个元素呢?通过图\ref{figureC3.5.1}中的例子,可以推出$<s,a>$应该包含$\prod_{i=0}^{l}{\varphi !}$个不同的二元组$<\tau,\pi>$。这是因为在给定源文和对齐时,对于每一个$\tau_i$都有$\varphi_{i}!$种排列。
%----------------------------------------------
% 图3.5.2
\begin{figure}[htp]
\centering
\includegraphics{./Chapter3/Figures/figure3.jpg}
\caption{此处为图片的描述...}
\caption{目标语单词生成源语言单词列表的实例}
\label{figureC3.5.2}
\end{figure}
%---------------------------
\noindent\hspace{2em}如何表示$\textrm{P}(\tau,\pi|t)$呢?对于一个$t$,在给出$\tau$$\pi$的情况下,可以得到公式\ref{eqC3.5.2}。其中$τ_{j1}^{k-1}$表示$\tau_{j1}\tau_{j2}\cdots \tau_{j(k-1)}$$\pi_{j1}^{ k-1}$表示$\pi_{j1}\pi_{j2}\cdots \pi_{j(k-1)}$
\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)$时需要把每个可能结果的概率加起来,如下:
\begin{equation}
\begin{split}
{\textrm{P}(\tau,\pi|t)} &={\prod_{j=0}^{l}{\textrm{P}(\varphi_j|\varphi_{1}^{j-1},t)} \times {\textrm{P}(\varphi_0|\varphi_{1}^{l},t)}} \\
& \times {\prod_{j=0}^l{\prod_{k=1}^{\varphi_j}{\textrm{P}(\tau_{jk}|\tau_{j1}^{k-1},\tau_{1}^{j-1},\varphi_{0}^{l},t )}}}\\
& \times {\prod_{j=1}^l{\prod_{k=1}^{\varphi_j}{\textrm{P}(\pi_{jk}|\pi_{j1}^{k-1},\pi_{1}^{j-1},\tau_{0}^{l},\varphi_{0}^{l},t )}}}\\
& \times{\prod_{k=1}^{\varphi_0}{\textrm{P}(\pi_{0k}|\pi_{01}^{k-1},\pi_{1}^{l},\tau_{0}^{l},\varphi_{0}^{l},t )}}
\label{eqC3.5.2}
\end{split}
\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}如图\ref{{figureC3.5.3}}所示,我们可以把公式\ref{eqC3.5.2}分为5个部分,并用不同的序号和颜色进行标注。下面我们介绍每一部分的含义
\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}第一、对于每个$j\in[1,l]$的目标语单词的繁衍率建模。即$\varphi_j$的概率。它依赖于$t$和区间$[1,j-1]$的目标语单词的繁衍率$\varphi_1^{j-1}$
\noindent\hspace{2em}第二、$j=0$时的繁衍率建模。即空标记$t_0$的繁衍率的概率。它依赖于$t$和区间$[1,j-1]$的目标语单词的繁衍率$\varphi_1^l$
\noindent\hspace{2em}进一步,$\textrm{P}(\tau,\pi|t)$可以被表示为:
\noindent\hspace{2em}第三、词汇翻译建模。目标语单词$t_j$生成的第$k$个源语言单词$\tau_{jk}$时的概率,依赖于$t$、所有目标语单词的繁衍率$\varphi_0^l$、区间$j\in[1,l]$的目标语单词生成的源语言单词$\tau_1^{j-1}$和目标语单词$t_j$生成的前$k$个源语言单词$\tau_{j1}^{k-1}$
\begin{eqnarray}
\textrm{P}(\tau,\pi|t) &= & \prod_{j=0}^{l}{\textrm{P}(\varphi_j|\varphi_{1}^{j-1},t)} \times {\textrm{P}(\varphi_0|\varphi_{1}^{l},t)} \times \nonumber \\
& & \prod_{j=0}^l{\prod_{k=1}^{\varphi_j}{\textrm{P}(\tau_{jk}|\tau_{j1}^{k-1},\tau_{1}^{j-1},\varphi_{0}^{l},t )}} \times \nonumber \\
& & \prod_{j=1}^l{\prod_{k=1}^{\varphi_j}{\textrm{P}(\pi_{jk}|\pi_{j1}^{k-1},\pi_{1}^{j-1},\tau_{0}^{l},\varphi_{0}^{l},t )}} \times \nonumber \\
& & \prod_{k=1}^{\varphi_0}{\textrm{P}(\pi_{0k}|\pi_{01}^{k-1},\pi_{1}^{l},\tau_{0}^{l},\varphi_{0}^{l},t )}
\label{eqC3.5.2}
\end{eqnarray}
\noindent\hspace{2em}第四、对于每个$j\in[1,l]$的目标语单词生成的源语单词的扭曲度(distortion)建模。即第$j$个译文单词生成的第$k$个源语言单词在源文中的位置$\pi_{jk}$的概率。其中$\pi_1^{j-1}$$\pi_{j1}^{k-1}$分别表示区间$[1,j-1]$的目标语单词生成的源语单词的扭曲度和第$j$译文单词生成的前$k$个源语单词的扭曲度。
\noindent 其中$τ_{j1}^{k-1}$表示$\tau_{j1}\tau_{j2}\cdots \tau_{j(k-1)}$$\pi_{j1}^{ k-1}$表示$\pi_{j1}\pi_{j2}\cdots \pi_{j(k-1)}$。我们可以把公式\ref{eqC3.5.2}分为5个部分,并用不同的序号和颜色进行标注。每部分的具体含义是:
\begin{itemize}
\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$生成的源语单词在源文中的位置的概率。
\end{itemize}
\noindent\hspace{2em}第五、$j=0$时的扭曲度建模。即空标记$t_0$生成的源语单词在源文中的位置的概率。
%----------------------------------------------
% 图3.5.3
\begin{figure}[htp]
\centering
\includegraphics{./Chapter3/Figures/figure4.jpg}
\caption{此处为图片的描述...}
\caption{{\red 这个图应该合并到公式3.40中}}
\label{figureC3.5.3}
\end{figure}
%---------------------------
\subsection{IBM 模型3}\index{Chapter3.5.2}
\noindent\hspace{2em}IBM模型3通过一些假设对基本翻译模型进行了化简。对于每个$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$。形式化这些假设,我们得到公式\ref{eqC3.5.3}$~$\ref{eqC3.5.5}
\begin{equation}
\textrm{P}(\varphi_j|\varphi_1^{j-1},t)={\textrm{P}(\varphi_j|t_j)}
\label{eqC3.5.3}
\end{equation}
\begin{equation}
\textrm{P}(\tau_{jk}|\tau_{j1}^{k-1},\tau_{1}^{j-1},\varphi_0^t,t)=t(s|t_j)
\label{eqC3.5.4}
\end{equation}
\begin{equation}
\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}
\end{equation}
\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$。形式化这些假设,我们得到:
\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}
\end{eqnarray}
\noindent\hspace{2em}通常把$d(i|j,m,l)$称为扭曲度(distortion)。这里$\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≤j≤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}|\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$中原本为空对应的单词(unaligned word)。这里假设,要等其他非空对应单词都被生成(放置)后,才考虑这些空对单词的生成(放置)。即非空对单词都被生成后,在那些还有空的位置上放置这些空对的源语单词。此外,在任何的空位置上放置空对的源语单词都是等概率的,即放置空对源语单词服从均匀分布。这样在已经放置了$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)=(\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$,就有
\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\\
......@@ -1057,78 +1056,70 @@ 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\hspace{2em}公式\ref{eqC3.5.7}$p_0+p_1=1$。此时我们完成了公式\ref{eqC3.5.7}中第2和5部分的建模。最终根据这些假设可以得到$\textrm{P}(s|t)$。其中$n(\varphi_j |e_j)$表示繁衍率的分布。
\begin{equation}
\begin{split}
{\textrm{P}(s|t)}&= {\sum_{a_1=0}^{l}{\cdots}\sum_{a_m=0}^{l}{(\begin{array}{c}
\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) }}\\
& \times{\prod_{i=1}^{m}{t(s_i|t_{s_{ai}})}\prod_{i=1,ai\neq 0}{d(i|a_i,m,l)}}
\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)}}
\label{eqC3.5.8}
\end{split}
\end{equation}
\end{eqnarray}
\noindent\hspace{2em}这里面的约束条件为,
\begin{equation}
\sum_{f}{t(s|t)=1}
\label{eqC3.5.9}
\end{equation}
\begin{equation}
\sum_{i}{d(i|j,m,l)=1}
\label{eqC3.5.10}
\end{equation}
\begin{equation}
\sum_{\varphi}{n(\varphi|t)=1}
\label{eqC3.5.11}
\end{equation}
\begin{equation}
p_0+p_1=1
\label{eqC3.5.12}
\end{equation}
\noindent其中,$n(\varphi_j |e_j)$表示产出率的分布。这里的约束条件为,
\begin{eqnarray}
\sum_{f}t(s|t) & = &1 \label{eqC3.5.9} \\
\sum_{i}d(i|j,m,l) & = & 1 \label{eqC3.5.10} \\
\sum_{\varphi} n(\varphi|t) & = &1 \label{eqC3.5.11} \\
p_0+p_1 & = & 1 \label{eqC3.5.12}
\end{eqnarray}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{IBM 模型4}\index{Chapter3.5.3}
\noindent\hspace{2em}经过分析,可以发现IBM模型3并不能很好的处理一个目标语言单词生成多个源语单词的情况。这个问题在模型1和模型2中也存在。如果一个目标语单词对应多个源语单词,往往这些源语单词构成短语或搭配。但是前面这三个模型都把这些源语单词看成独立的单元,而实际上它们应该被看成一个翻译的整体。这就造成了在前三个模型中,这些源语单词可能“分散”开。为了解决这个问题,模型4对模型3进行了修改。
\noindent\hspace{2em}IBM模型3仍然存在问题,比如不能很好的处理一个目标语言单词生成多个源语单词的情况。这个问题在模型1和模型2中也存在。如果一个目标语言单词对应多个源语言单词,往往这些源语言单词构成短语或搭配。但是模型1-3都把这些源语单词看成独立的单元,而实际上它们应该被看成一个翻译的整体。这就造成了在模型1-3中,这些源语言单词可能“分散”开。为了解决这个问题,模型4对模型3进行了进一步修改。
\noindent\hspace{2em}为了更清楚的阐述,我们引入术语—概念单元。以{\color{red}图3.6.1}为例进行说明。图中表示的是源语句“我 改变 主意 了”翻译为目标语语句“I changed my mind”。其中的词对齐关系是“我”对应“I”、“改变”对应“changed”、“主意”对应“mind”、“。”对应“.”以及“了”对空
\noindent\hspace{2em}为了更清楚的阐述,这里引入新的术语\ \ 概念单元。\noindent\hspace{2em}词对齐又可以被看作概念(concept,简记为cept.)之间的对应。这里的概念是指具有独立语法或语义功能的一组单词。依照Brown等人的表示方法,我们把概念记为cept.。每个句子都可以被表示成一系列的cept.。这里要注意的是,源语言句子中的cept.数量不一定等于目标句子中的cept.数量。因为有些cept.可以为空,我们把那些空对的单词看作空cept.。比如,在图\ref{figureC3.6.1}的实例中,``了''就是(对应)一个空cept.
%----------------------------------------------
% 图3.6.1
\begin{figure}[htp]
\centering
\includegraphics[scale=1]{./Chapter3/Figures/figure7.jpg}
\caption{此处为图片的描述...}
\caption{汉译英句对及词对齐}
\label{figureC3.6.1}
\end{figure}
%---------------------------
\noindent\hspace{2em}词对齐又可以被看作概念(concept)之间的对应。这里的概念是指具有独立语法或语义功能的一组单词。依照Brown等人的表示方法,我们把概念记为cept.。每个句子都可以被表示成一系列的cept.。这里要注意的是,源语言句子中的cept.数量不一定等于目标句子中的cept.数量。因为有些cept.可以为空,我们把那些空对的单词看作空cept.。比如在本例中“了”就是(对应)一个空cept.
\noindent\hspace{2em}在IBM模型的词对齐框架下,目标语的cept.只能是那些非空对的目标语单词,而且每个cept.只能由一个目标语单词组成(通常把这类由一个单词组成的cept.称为独立单词cept.)。我们用$[j]$表示第$j$个独立单词cept.在目标语言句子中的位置。换句话说,$[j]$表示第$j$个非空对的目标语单词在目标语言句子中的位置。比如在本例中``mind''在$t$中的位置表示为$[3]$
\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}$),它的扭曲度用如下等式计算:
\noindent\hspace{2em}利用这些新引进的概念,模型4对模型3的扭曲度进行了修改。主要是把扭曲度分解为两类参数。对于$[j]$对应的源语单词列表($\tau[j]$)中的第一个单词($\tau[j]1$),它的扭曲度用如下等式计算。其中目标语译文的第$j$个单词生成的第$k$个源语单词在源文中的位置用变量$\pi_{jk}$表示,$\pi$表示它的观测值。
\begin{equation}
\textrm{P}(\pi_{[j]=1}=i|{\pi}_1^{[j]-1},{\tau}_0^l,\varphi_0^l,t)=d1(i-{\odot}_{[j-1]}|A(e_{[j-1]}),B(f_i))
\textrm{P}(\pi_{[j]1}=i|{\pi}_1^{[j]-1},{\tau}_0^l,_0^l,t)=d_{1}(i-{\odot}_{[j]}|A(e_{[j-1]}),B(f_i))
\label{eqC3.6.1}
\end{equation}
\noindent\hspace{2em}而对于列表($\tau[j]$)中的其它的单词($\tau[j]k,1<k<\varphi[j]$)的扭曲度计算,如公式(3.6.\\2)所示。
\noindent其中,译文的第$j$个单词生成的第$k$个源语单词在源语言句子中的位置用变量$\pi_{jk}$表示,$\pi$表示它的观测值。而对于列表($\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))
\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}这里的函数$A(.)$和函数$B(.)$分别把目标语和源语的单词影射到单词的词类。这么做的目的一方面要减小参数空间的大小,另一方面是要减小数据的稀疏程度。不过,我们并不会讨论词聚类算法。这里可以提供一种简单的方法,那就把单词直接映射为它的词性即可。这样可以直接用现在已经非常成熟的词性标注技术就可以解决这个问题。
\noindent\hspace{2em}这里的函数$A(.)$和函数$B(.)$分别把目标语言和源语言的单词影射到单词的词类。这么做的目的一方面要减小参数空间的大小,另一方面是要减小数据的稀疏程度。词类信息通常可以通过外部工具得到,比如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]$生成的单词列表,并把第一个源语单词放置在合适的位置。然后,把列表中的其它单词放置在相对于前一个刚生成的源语单词合适的地方。这样就可以在一定程度上保证由同一个目标语单词生成的源语单词之间可以相互影响,达到了改进的目的。
\subsection{ IBM 模型5}\index{Chapter3.5.4}
\noindent\hspace{2em}实际上,上述过程就要先用$t[j]$生成的第一个源语言单词代表整个$t[j]$生成的单词列表,并把第一个源语言单词放置在合适的位置。然后,把列表中的其它单词放置在相对于前一个刚生成的源语言单词合适的地方。这样就可以在一定程度上保证由同一个目标语言单词生成的源语言单词之间可以相互影响,达到了改进的目的。
\noindent\hspace{2em}模型3和模型4并不是“准确”的模型。这两个模型会把一部分概率分配给一些根本就不存在的句子。这个问题被称作IBM模型3和模型4的缺陷(Deficiency)。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{ IBM 模型5}\index{Chapter3.5.4}
\noindent\hspace{2em}说的具体一些。模型3和模型4中并没有这样的约束:如果已经放置了某个源语单词的位置不能再放置其它单词,也就是说句子的任何位置只能放置一个词,不能多也不能少。由于缺乏这个约束,模型3和模型4中 在所有合法的对齐 上概率和不等于1。这部分缺失的概率被分配到其它不合法的对齐上。举例来说(图*),“吃 早饭”和“Have breakfast”之间的合法词对齐为 - 。但是在模型3和模型4中, 在它们上的概率和为0.9<0.1。损失掉的概率被分配到像 和 这样的对齐上了。虽然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
......@@ -1136,45 +1127,46 @@ p_0+p_1=1
\begin{figure}[htp]
\centering
\includegraphics[scale=1]{./Chapter3/Figures/figure5.jpg}
\caption{Model 3的对齐实例}
\caption{IBM模型3的词对齐及概率分配}
\label{figureC3.5.4}
\end{figure}
%-------------------------------------------
\noindent\hspace{2em}为了解决这个问题,模型5在模型中增加了约束。模型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$。这样,
\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}对于[j]对应的源语单词列表($\tau_{[j]}$)中的第一个单词($\tau_{[j]1}$),
\begin{equation}
\textrm{P}(\prod_{[j]1} = i | \pi_1^{[j]-1}, \tau_0^l, \phi_0^l, t) = d_1(v_i|\textbf{B}(f_i), v_{j-1}, v_m-\phi_{[j]}+1)(1-\delta(v_i,v_{i-1}))
\begin{eqnarray}
\textrm{P}(\prod_{[j]1} = i | \pi_1^{[j]-1}, \tau_0^l, \varphi_0^l, t) & = & d_1(v_i|\textbf{B}(f_i), \odot_{v_{j-1}}, v_m-\varphi_{[j]}+1) \times \nonumber \\
& & (1-\delta(v_i,v_{i-1}))
\label{eqC3.5.41}
\end{equation}
\end{eqnarray}
\noindent\hspace{2em}对于其它单词($\tau_{[j]k}$, $1<k\leqslant\phi_{[j]}$),
\noindent\hspace{2em}对于其它单词($\tau_{[j]k}$, $1<k\leqslant\varphi_{[j]}$),我们有
\begin{equation}
\begin{split}
&\textrm{P}(\prod_{[j]k}=i|\pi_{[j]1}^{k-1}, \pi_1^{[j]-1}, \tau_0^l, \phi_0^l, t) \\
&= d_{>1}(v_i-v_{\phi_{[j]}k-1}|\textbf{B}(f_i), v_{j-1}, v_m-v_{\phi_{[j]}k-1}-\phi_{[j]}+1)(1-\delta(v_i,v_{i-1}))
\end{split}
\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}|\textbf{B}(f_i), v_m-v_{\varphi_{[j]}k-1}-\varphi_{[j]}+k)(1-\delta(v_i,v_{i-1}))
\label{eqC3.5.42}
\end{equation}
\end{eqnarray}
\noindent\hspace{2em}这里,因子$1-\delta(v_j, v_{j-1})$是用来判断第i个位置是不是为空。如果第i个位置为空则$v_j = v_{j-1}$,这样$\textrm{P}(\prod_{[j]1}=i|\pi_1^{[j]-1}, \tau_0^l, \phi_0^l, t) = 0$。这样就从模型上避免了模型3和模型4中生成不存在的字符串的问题。这里还要注意的是,对于放置第一个单词的情况,影响放置的因素有$v_j$$\textbf{B}(f_i)$$v_{j-1}$。此外还要考虑在i位置放置了第一个单词以后它的右边是不是还有足够的位置留给剩下的k-1个单词。参数$v_m-\phi_{[j]}+1$就是为了考虑这个因素,这里$v_m$表示整个源语言句子中还有多少空位置,$\phi_{[j]}-1$表示i位置右边至少还要留出的空格数。对于放置非第一个单词的情况,主要是要考虑它和前一个放置位置的相对位置。这主要体现在参数$v_i-v_{\phi_{[j]}k-1}$上。式(4.99)的其它部分都可以的用上面的理论解释,这里不再重复。
\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$$\textbf{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}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{训练和解码}\index{Chapter3.5.5}
\section{IBM模型的若干问题分析}\index{Chapter3.6}%Index的作用,目前不清晰
\subsection{词对齐}\index{Chapter3.6.1}
\noindent\textbf{问题分析}\index{Chapter3.6.1.1}
\noindent\hspace{2em}IBM的五个模型都是基于一个词对齐的假设 —— 一个源语单词最多只能对齐到一个目标语单词。这个约束大大化简了IBM模型的建模。最初,Brown等人提出这个假设可能是因为在法英翻译中一对多的对齐情况并不多见,这个假设带来的问题也不是那么严重。但是,在像汉英翻译这样的机器翻译任务中,一个中文单词对应多个英文单词的翻译很常见。这时IBM模型的词对齐假设就表现出了明显的问题。比如在翻译<I will have a try .|我 会 试一试 。>中,IBM模型根本不可能把单词“试一试”对齐到三个单词“have a try”,因而很难得到正确的翻译结果。可见IBM模型的词对齐假设所带来的问题还是很严重的。
\noindent\hspace{2em}IBM的五个模型都是基于一个词对齐的假设 —— 一个源语言单词最多只能对齐到一个目标语言单词。这个约束大大化简了IBM模型的建模。最初,Brown等人提出这个假设可能是因为在法英翻译中一对多的对齐情况并不多见,这个假设带来的问题也不是那么严重。但是,在像汉英翻译这样的机器翻译任务中,一个中文单词对应多个英文单词的翻译很常见。这时IBM模型的词对齐假设就表现出了明显的问题。比如在翻译<I will have a try .|我 会 试一试 。>中,IBM模型根本不可能把单词“试一试”对齐到三个单词“have a try”,因而很难得到正确的翻译结果。可见IBM模型的词对齐假设所带来的问题还是很严重的。
\noindent\hspace{2em}本质上说,IBM模型的词对齐的不“完整”问题是IBM模型本身的缺陷。说得更清楚一些,这个问题就是IBM模型建模的缺陷。因此要想从根本上解决这个问题,只有对IBM模型进行修改或者提出新的词对齐模型来避免对IBM模型词对齐假设的依赖。但是不论是对IBM模型进行修改还是提出新的词对齐模型,至今仍没有太多的进展。这主要是由于建模问题本身就是NLP乃至整个人工智能领域中最困难的问题之一,对经典的IBM的修改或替换谈何容易。
......@@ -1182,7 +1174,7 @@ p_0+p_1=1
\noindent\hspace{2em}前面已经提到,对IBM模型的直接修改是非常困难的。不过也有一些不需要改动模型就可以缓解该问题的方法。
\noindent\hspace{2em}第一种方法就是,反向训练后,合并源语单词,然后再正向训练。这里用汉英翻译为例来解释这个方法。首先反向训练,就是把英语当作待翻译语言,而把汉语当作目标语言进行训练(参数估计)。这样可以得到一个词对齐结果(参数估计的中间结果,比如可以让系统输出训练中使P(a|t,s;3)达到最大的词对齐结果)。在这个词对齐结果里面,一个中文单词可对应多个英文单词。之后,扫描每个英文句子,如果有多个英文单词对应同一个中文单词,就把这些英文单词合并成一个英文单词。处理完之后,再把汉语当作源语言把英语当作目标语言进行训练。这样就可以把一个中文词对应到合并的英文单词上。虽然从模型上看,还是一个中文单词对应一个英文“单词”,但实质上已经把这个中文单词对应到多个英文单词上了。训练完之后,再利用这些参数进行翻译(解码)时,就能把一个中文单词翻译成多个英文单词了。这个方法的流程如图所示。%\ref{figureC6.1}
\noindent\hspace{2em}第一种方法就是,反向训练后,合并源语言单词,然后再正向训练。这里用汉英翻译为例来解释这个方法。首先反向训练,就是把英语当作待翻译语言,而把汉语当作目标语言进行训练(参数估计)。这样可以得到一个词对齐结果(参数估计的中间结果,比如可以让系统输出训练中使P(a|t,s;3)达到最大的词对齐结果)。在这个词对齐结果里面,一个中文单词可对应多个英文单词。之后,扫描每个英文句子,如果有多个英文单词对应同一个中文单词,就把这些英文单词合并成一个英文单词。处理完之后,再把汉语当作源语言言把英语当作目标语言进行训练。这样就可以把一个中文词对应到合并的英文单词上。虽然从模型上看,还是一个中文单词对应一个英文“单词”,但实质上已经把这个中文单词对应到多个英文单词上了。训练完之后,再利用这些参数进行翻译(解码)时,就能把一个中文单词翻译成多个英文单词了。这个方法的流程如图所示。%\ref{figureC6.1}
%----------------------------------------------
%图6.1
......@@ -1196,7 +1188,7 @@ p_0+p_1=1
\noindent\hspace{2em}但是反向训练后再训练也存在一些问题。首先,合并英文单词会使数据变得更稀疏,使训练不充分。其次,由于IBM模型的词对齐结果并不是高精度的,利用它的词对齐结果来合并一些英文单词可能造成严重的错误,比如:把本来很独立的几个单词合在了一起。因此,此方法也并不完美。具体使用时还要考虑实际需要和问题的严重程度来决定是否使用这个方法。
\noindent\hspace{2em}第二个方法,双向对齐。这个方法可以帮助我们在IBM词对齐的基础上获得“完整”的词对齐结果。它的思路很简单,就是用正向(汉语为源语,英语为目标语)和反向(汉语为目标语,英语为源语)同时训练。这样可以得到两个词对齐结果。然后可以对这两个词对齐结果求“并集”,这样就可以得到包含1对多和多对多的词对齐结果。
\noindent\hspace{2em}第二个方法,双向对齐。这个方法可以帮助我们在IBM词对齐的基础上获得“完整”的词对齐结果。它的思路很简单,就是用正向(汉语为源语言,英语为目标语言)和反向(汉语为目标语言,英语为源语言)同时训练。这样可以得到两个词对齐结果。然后可以对这两个词对齐结果求“并集”,这样就可以得到包含1对多和多对多的词对齐结果。
\noindent\hspace{2em}不过这个方法只是提供了获得“完整”的词对齐的手段。因为基于IBM模型的解码器还是不支持这种对齐,因此还并不能直接使用它。如何利用这个“完整”的词对齐结果也是一个问题。在基于短语的统计机器翻译中已经很成功地使用了这些词对齐信息。这里并不对此做深入讨论。
......@@ -1220,7 +1212,7 @@ p_0+p_1=1
\noindent\hspace{2em}本质上来说,模型3和模型4就是对应P(failure|e)>0的情况。这部分概率是模型损失掉的。有时候也把这类Deficiency问题称为technical deficiency。还有一种Deficien\\-cy问题被称作spiritual deficiency,它是指Pr(well|e)+ Pr(ill|e)=1且Pr(ill|e)>0的情况。模型1和模型2就有spiritually deficiency的问题。比如,在模型1中< 我 改变 主意 了|I(1) changed(2) my(0) mind(3)>和<主意 了 改变 我| I(4) changed(3) my(0) mind(1)>的翻译概率是相同的。显然“主意 了 改变 我”不是一个很合理的且符合中文语法的句子。
\noindent\hspace{2em}应该注意到,technical deficiency只存在于模型3和模型4中,模型1和模型2并没有technical deficiency问题。根本原因是模型1和模型2的词对齐是从源语出发对应到目标语,e到f的翻译过程实际上是从f1开始到fm结束,依次把每个fi对应到唯一一个目标语位置。显然,这个过程能够保证每个源语言单词仅对应一个目标语单词。但是,模型3和模型4中对齐是从目标语出发对应到源语言,e到f的翻译过程从e1开始el结束,依次把ej生成的单词对应到某个源语言位置上。但是这个过程不能保证,ej中生成的单词所对应的位置没有被其它已经完成对齐的ej’生成的某个单词对应过。因此也就产生了deficency问题。
\noindent\hspace{2em}应该注意到,technical deficiency只存在于模型3和模型4中,模型1和模型2并没有technical deficiency问题。根本原因是模型1和模型2的词对齐是从源语言出发对应到目标语言,e到f的翻译过程实际上是从f1开始到fm结束,依次把每个fi对应到唯一一个目标语言位置。显然,这个过程能够保证每个源语言单词仅对应一个目标语言单词。但是,模型3和模型4中对齐是从目标语言出发对应到源语言,e到f的翻译过程从e1开始el结束,依次把ej生成的单词对应到某个源语言位置上。但是这个过程不能保证,ej中生成的单词所对应的位置没有被其它已经完成对齐的ej’生成的某个单词对应过。因此也就产生了deficency问题。
\noindent\hspace{2em}这里还要强调的是,technical deficiency是模型3和模型4是模型本身的缺陷造成的,如果有一个“更好”的模型就可以完全避免这个问题。而spiritually deficiency几乎是不能从模型上根本解决的,因为对于任意一种语言我们都不能枚举所有的句子(Pr(ill|e)实际上是得不到的)。也就是说,我们还很难找到一个通用的模型解决spiritually deficiency问题。无论是引入语言模型还是使用其它方法,都只是缓解这个问题。
......@@ -1238,19 +1230,19 @@ p_0+p_1=1
\noindent\hspace{2em}实例1
\noindent\hspace{2em}源语句子:经过10多年的建设 …
\noindent\hspace{2em}源语句子:经过10多年的建设 …
\noindent\hspace{2em}IBM模型4翻译结果:After 10 year of construction …
\noindent\hspace{2em}实例2
\noindent\hspace{2em}源语句子:今年北京考生填报志愿继续实行网上填报。
\noindent\hspace{2em}源语句子:今年北京考生填报志愿继续实行网上填报。
\noindent\hspace{2em}IBM模型4翻译结果:Through this elevate the railway passenger transport capacity increase by 18\% and 12\% respectively .
\noindent\hspace{2em}实例3
\noindent\hspace{2em}源语句子:从3月15日 …
\noindent\hspace{2em}源语句子:从3月15日 …
\noindent\hspace{2em}IBM模型4翻译结果:From three month 15
......@@ -1266,7 +1258,7 @@ p_0+p_1=1
\noindent\textbf{问题分析}\index{Chapter3.6.4.1}
\noindent\hspace{2em}在IBM模型中,P(e)P(f|e)会随着l(目标语句子长度)的增加而减少。这也就是说,IBM模型会更“偏向”选择长度短一些的目标语句子。显然这种对短句子的偏向性并不是我们所期望的。
\noindent\hspace{2em}在IBM模型中,P(e)P(f|e)会随着l(目标语言句子长度)的增加而减少。这也就是说,IBM模型会更“偏向”选择长度短一些的目标语言句子。显然这种对短句子的偏向性并不是我们所期望的。
\noindent\textbf{解决方法}\index{Chapter3.6.4.2}
......@@ -1296,7 +1288,7 @@ p_0+p_1=1
\noindent\textbf{概念(Cept.)的意义}\index{Chapter3.6.5.2}
\noindent\hspace{2em}经过前面的分析可知,IBM模型的词对齐模型是使用了cept.这个概念。但是实质上,在IBM模型中使用的cept.最多只能对应一个目标语单词(模型并没有用到源语cept.的概念)。因此可以直接用单词代替cept.。这样,即使不引入cept.的概念,也并不影响IBM模型的建模。
\noindent\hspace{2em}经过前面的分析可知,IBM模型的词对齐模型是使用了cept.这个概念。但是实质上,在IBM模型中使用的cept.最多只能对应一个目标语言单词(模型并没有用到源语言cept.的概念)。因此可以直接用单词代替cept.。这样,即使不引入cept.的概念,也并不影响IBM模型的建模。
\noindent\hspace{2em}实际上cept.的引入确实可以帮助我们从语法和语义的角度解释词对齐过程。不过,这个概念并没在IBM模型中发挥出效果。它对IBM模型的建模的意义并不是很大。
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论