Commit 5fa775eb by xiaotong

chapters 3.6 and 3.7

parent c72056ad
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{基于词的翻译模型} \chapter{基于词的翻译模型}
\hspace{2em}使用统计方法对翻译进行建模是机器翻译发展中的重要里程碑。这种思想也影响了随后的统计机器翻译和神经机器翻译。虽然技术不断发展,传统的统计模型已经不再``新鲜'',但是对于今天机器翻译的研究仍然有启示作用。想要了解前沿、展望未来,我们更要冷静的思考前任给我们带来了什么。基于此,本章将主要介绍统计机器翻译的开山之作\ \ \ \ IBM模型,它主要提出了使用统计模型进行翻译的思想,并使用基于单词对齐的方式完成了机器翻译的统计建模。IBM模型由Peter E. Brown等人在1993年提出({\red 参考文献!!!})\ \ \ \ 《The Mathematics of Statistical Machine Translation: Parameter Estimation》。客观的说,这篇文章的视野和对问题的理解,已经超过当时绝大多数人所能看到的东西,其衍生出来的一系列方法和新的问题还被后人花费将近10年的时间来进行研究与讨论。时至今日,IBM模型中的一些思想仍然影响着很多研究工作。 \hspace{2em}使用统计方法对翻译进行建模是机器翻译发展中的重要里程碑。这种思想也影响了随后的统计机器翻译和神经机器翻译。虽然技术不断发展,传统的统计模型已经不再``新鲜'',但是对于今天机器翻译的研究仍然有启示作用。想要了解前沿、展望未来,我们更要冷静的思考前任给我们带来了什么。基于此,本章将主要介绍统计机器翻译的开山之作\ \ \ \ IBM模型,它主要提出了使用统计模型进行翻译的思想,并使用基于单词对齐的方式完成了机器翻译的统计建模。IBM模型由Peter E. Brown等人在1993年提出({\red 参考文献!!!})\ \ \ \ 《The Mathematics of Statistical Machine Translation: Parameter Estimation》。客观的说,这篇文章的视野和对问题的理解,已经超过当时很多人所能看到的东西,其衍生出来的一系列方法和新的问题还被后人花费将近10年的时间来进行研究与讨论。时至今日,IBM模型中的一些思想仍然影响着很多研究工作。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{什么是基于词的翻译模型}\index{Chapter3.1}%Index的作用,目前不清晰 \section{什么是基于词的翻译模型}\index{Chapter3.1}%Index的作用,目前不清晰
...@@ -638,17 +638,7 @@ g(s,t) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)} \times \textrm{P ...@@ -638,17 +638,7 @@ g(s,t) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)} \times \textrm{P
\noindent\textbf{(三)基于词对齐的翻译实例}\index{Chapter3.3.2.3} \noindent\textbf{(三)基于词对齐的翻译实例}\index{Chapter3.3.2.3}
%---------------------------------------------- \noindent\hspace{2em}我们用前面图\ref{figureC3.24}中例子来对公式\ref{eqC3.22}进行说明。例子中,源语言句子``在 桌子 上''目标语译文``on the table''之间的词对齐为$a=\{1-0,2-3,3-1\}$。基于当前的假设,我们套用公式\ref{eqC3.22}$t$生成$s$$a$,即求概率$\textrm{P}(s,a|t)$。求解的过程如下所示:
% 图3.26
\begin{figure}[htp]
\centering
\input{./Chapter3/Figures/figure327}
\caption{汉译英词对齐实例}
\label{figureC3.27}
\end{figure}
%---------------------------
\noindent\hspace{2em}我们用一个简单的例子来对公式\ref{eqC3.22}进行进一步说明。如图\ref{figureC3.27}所示,源语言句子``在 桌子 上''目标语译文``on the table''之间的词对齐为$a=\{1-0,2-3,3-1\}$。基于当前的假设,我们套用公式\ref{eqC3.22}$t$生成$s$$a$,即求概率$\textrm{P}(s,a|t)$。求解的过程如下所示:
\begin{itemize} \begin{itemize}
...@@ -1099,18 +1089,18 @@ p_0+p_1 & = & 1 \label{eqC3.5.12} ...@@ -1099,18 +1089,18 @@ p_0+p_1 & = & 1 \label{eqC3.5.12}
\noindent\hspace{2em}利用这些新引进的概念,模型4对模型3的扭曲度进行了修改。主要是把扭曲度分解为两类参数。对于$[j]$对应的源语言单词列表($\tau_{[j]}$)中的第一个单词($\tau_{[j]1}$),它的扭曲度用如下等式计算: \noindent\hspace{2em}利用这些新引进的概念,模型4对模型3的扭曲度进行了修改。主要是把扭曲度分解为两类参数。对于$[j]$对应的源语言单词列表($\tau_{[j]}$)中的第一个单词($\tau_{[j]1}$),它的扭曲度用如下等式计算:
\begin{equation} \begin{equation}
\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)) \textrm{P}(\pi_{[j]1}=i|{\pi}_1^{[j]-1},{\tau}_0^l,_0^l,t)=d_{1}(i-{\odot}_{[j]}|\textrm{A}(e_{[j-1]}),\textrm{B}(f_i))
\label{eqC3.6.1} \label{eqC3.6.1}
\end{equation} \end{equation}
\noindent其中,译文的第$j$个单词生成的第$k$个源语单词在源语言句子中的位置用变量$\pi_{jk}$表示,$\pi$表示它的观测值。而对于列表($\tau_{[j]}$)中的其它的单词($\tau_{[j]k},1<k<\varphi[j]$)的扭曲度计算,进行如下计算 \noindent其中,译文的第$j$个单词生成的第$k$个源语单词在源语言句子中的位置用变量$\pi_{jk}$表示,$\pi$表示它的观测值。而对于列表($\tau_{[j]}$)中的其它的单词($\tau_{[j]k},1<k<\varphi[j]$)的扭曲度计算,进行如下计算
\begin{equation} \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}|\textrm{B}(f_i))
\label{eqC3.6.1} \label{eqC3.6.1}
\end{equation} \end{equation}
\noindent\hspace{2em}这里的函数$A(.)$和函数$B(.)$分别把目标语言和源语言的单词影射到单词的词类。这么做的目的一方面要减小参数空间的大小,另一方面是要减小数据的稀疏程度。词类信息通常可以通过外部工具得到,比如Brown聚类等。不过,我们并不会讨论词聚类算法。这里可以也提供一种简单的方法,那就把单词直接映射为它的词性即可。这样可以直接用现在已经非常成熟的词性标注工具解决问题。 \noindent\hspace{2em}这里的函数$\textrm{A}(\cdot)$和函数$\textrm{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]$生成的其它源语言单词,只需要考虑它与前一个刚放置完的源语言单词的相对位置和这个源语言单词的词类。
...@@ -1135,7 +1125,7 @@ p_0+p_1 & = & 1 \label{eqC3.5.12} ...@@ -1135,7 +1125,7 @@ p_0+p_1 & = & 1 \label{eqC3.5.12}
\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} \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 \\ \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 \\
& & (1-\delta(v_i,v_{i-1})) & & (1-\delta(v_i,v_{i-1}))
\label{eqC3.5.41} \label{eqC3.5.41}
\end{eqnarray} \end{eqnarray}
...@@ -1144,154 +1134,100 @@ p_0+p_1 & = & 1 \label{eqC3.5.12} ...@@ -1144,154 +1134,100 @@ p_0+p_1 & = & 1 \label{eqC3.5.12}
\begin{eqnarray} \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 \\ & & \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})) &= & 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}))
\label{eqC3.5.42} \label{eqC3.5.42}
\end{eqnarray} \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$$\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}这里,因子$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}实际上,模型5和模型4的思想基本一致,即,先确定$\tau_{[j]1}$的绝对位置,然后再确定$\tau_{[j]}$中剩余单词的相对位置。模型5消除了产生不存在的句子的可能性,不过模型5的复杂性也大大增加了。 \noindent\hspace{2em}实际上,模型5和模型4的思想基本一致,即,先确定$\tau_{[j]1}$的绝对位置,然后再确定$\tau_{[j]}$中剩余单词的相对位置。模型5消除了产生不存在的句子的可能性,不过模型5的复杂性也大大增加了。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{隐马尔可夫模型}\index{Chapter3.5.5} \subsection{基于隐马尔可夫模型的模型}\index{Chapter3.5.5}
\noindent\hspace{2em} \noindent\hspace{2em}在IBM模型可以得到句子间的词对齐,因此也有很多工作在这个模型的基础上改进词对齐结果。其中一个比较有代表性的方法是基于隐马尔可夫模型的方法({\red 参考文献?}),它可以被看作是IBM模型2的升级版本。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsubsection{(一)隐马尔可夫模型}
\subsection{训练和解码}\index{Chapter3.5.5}
\section{IBM模型的若干问题分析}\index{Chapter3.6}%Index的作用,目前不清晰 {\red 此处简单介绍一下隐马尔可夫模型,注意符号尽可能前后一致 0.5-1页即可}
\subsection{词对齐}\index{Chapter3.6.1} \subsubsection{(二)词对齐模型}
\noindent\textbf{问题分析}\index{Chapter3.6.1.1} {\red 就是https://www.aclweb.org/anthology/C96-2141.pdf中3.2节的内容,不要直接翻译,理解了写出来就行,主要说意思,这个模型不是这章的重点,但是与IBM模型有联系 1-1.5页}
\noindent\hspace{2em}IBM的五个模型都是基于一个词对齐的假设 —— 一个源语言单词最多只能对齐到一个目标语言单词。这个约束大大化简了IBM模型的建模。最初,Brown等人提出这个假设可能是因为在法英翻译中一对多的对齐情况并不多见,这个假设带来的问题也不是那么严重。但是,在像汉英翻译这样的机器翻译任务中,一个中文单词对应多个英文单词的翻译很常见。这时IBM模型的词对齐假设就表现出了明显的问题。比如在翻译<I will have a try .|我 会 试一试 。>中,IBM模型根本不可能把单词“试一试”对齐到三个单词“have a try”,因而很难得到正确的翻译结果。可见IBM模型的词对齐假设所带来的问题还是很严重的。 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{解码和训练}\index{Chapter3.5.5}
\noindent\hspace{2em}本质上说,IBM模型的词对齐的不“完整”问题是IBM模型本身的缺陷。说得更清楚一些,这个问题就是IBM模型建模的缺陷。因此要想从根本上解决这个问题,只有对IBM模型进行修改或者提出新的词对齐模型来避免对IBM模型词对齐假设的依赖。但是不论是对IBM模型进行修改还是提出新的词对齐模型,至今仍没有太多的进展。这主要是由于建模问题本身就是NLP乃至整个人工智能领域中最困难的问题之一,对经典的IBM的修改或替换谈何容易 \noindent\hspace{2em}和IBM模型1-2一样,IBM模型3-5和隐马尔可夫模型的解码可以直接使用\ref{sec:sentence-level-translation}节所描述的方法。基本思路是对译文自左向右生成,每次扩展一个源语言单词的翻译。每次扩展可以选择不同的源语言单词或者同一个源语言单词的不同翻译候选,这样就可以得到多个不同的扩展译文。在这个过程中,同时计算翻译模型和语言模型的得分,对每个得到译文候选打分。最终,保留一个或者多个译文。这个过程重复执行直至所有源语言单词被翻译完
\noindent\textbf{解决方法}\index{Chapter3.6.1.2} 类似的,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作为起始模型的原因。
\noindent\hspace{2em}前面已经提到,对IBM模型的直接修改是非常困难的。不过也有一些不需要改动模型就可以缓解该问题的方法。 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{问题分析}\index{Chapter3.6}%Index的作用,目前不清晰
\noindent\hspace{2em}第一种方法就是,反向训练后,合并源语言单词,然后再正向训练。这里用汉英翻译为例来解释这个方法。首先反向训练,就是把英语当作待翻译语言,而把汉语当作目标语言进行训练(参数估计)。这样可以得到一个词对齐结果(参数估计的中间结果,比如可以让系统输出训练中使P(a|t,s;3)达到最大的词对齐结果)。在这个词对齐结果里面,一个中文单词可对应多个英文单词。之后,扫描每个英文句子,如果有多个英文单词对应同一个中文单词,就把这些英文单词合并成一个英文单词。处理完之后,再把汉语当作源语言言把英语当作目标语言进行训练。这样就可以把一个中文词对应到合并的英文单词上。虽然从模型上看,还是一个中文单词对应一个英文“单词”,但实质上已经把这个中文单词对应到多个英文单词上了。训练完之后,再利用这些参数进行翻译(解码)时,就能把一个中文单词翻译成多个英文单词了。这个方法的流程如图所示。%\ref{figureC6.1} \noindent\hspace{2em}IBM模型是一个时代的经典,但也留下了一些值得思考的问题。这一方面体现了科学技术发展需要一步步前行,而非简单的一蹴而就。另一方面也体现了机器翻译问题的困难程度。下面,我们对IBM存在的问题进行分析,同时给出一些解决问题的思路,希望通过这些讨论可以使我们对机器翻译问题有更深层次的理解。
%---------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%图6.1 \subsection{词对齐及对称化}\index{Chapter3.6.1}
\begin{figure}[h]
\centering
\includegraphics{./Chapter3/Figures/figure6.jpg}
\caption{此处为图片的描述...单词x和y在句对(s, t)中的共现总次数的算法}
\label{figureC6.1}
\end{figure}
%---------------------------
\noindent\hspace{2em}但是反向训练后再训练也存在一些问题。首先,合并英文单词会使数据变得更稀疏,使训练不充分。其次,由于IBM模型的词对齐结果并不是高精度的,利用它的词对齐结果来合并一些英文单词可能造成严重的错误,比如:把本来很独立的几个单词合在了一起。因此,此方法也并不完美。具体使用时还要考虑实际需要和问题的严重程度来决定是否使用这个方法 \noindent\hspace{2em}IBM的五个模型都是基于一个词对齐的假设 —— 一个源语言单词最多只能对齐到一个目标语言单词。这个约束大大化简了IBM模型的建模。最初,Brown等人提出这个假设可能是因为在法英翻译中一对多的对齐情况并不多见,这个假设带来的问题也不是那么严重。但是,在像汉英翻译这样的机器翻译任务中,一个中文单词对应多个英文单词的翻译很常见。这时IBM模型的词对齐假设就表现出了明显的问题。比如在翻译``我 会 试一试 。''$\to$``I will have a try .|''时,IBM模型根本不能把单词``试一试''对齐到三个单词“have a try”,因而可能无法得到正确的翻译结果
\noindent\hspace{2em}第二个方法,双向对齐。这个方法可以帮助我们在IBM词对齐的基础上获得“完整”的词对齐结果。它的思路很简单,就是用正向(汉语为源语言,英语为目标语言)和反向(汉语为目标语言,英语为源语言)同时训练。这样可以得到两个词对齐结果。然后可以对这两个词对齐结果求“并集”,这样就可以得到包含1对多和多对多的词对齐结果 \noindent\hspace{2em}本质上说,IBM模型的词对齐的不``完整''问题是IBM模型本身的缺陷。解决这个问题有很多思路,第一种方法就是,反向训练后,合并源语言单词,然后再正向训练。这里用汉英翻译为例来解释这个方法。首先反向训练,就是把英语当作待翻译语言,而把汉语当作目标语言进行训练(参数估计)。这样可以得到一个词对齐结果(参数估计的中间结果)。在这个词对齐结果里面,一个中文单词可对应多个英文单词。之后,扫描每个英文句子,如果有多个英文单词对应同一个中文单词,就把这些英文单词合并成一个英文单词。处理完之后,再把汉语当作源语言言把英语当作目标语言进行训练。这样就可以把一个中文词对应到合并的英文单词上。虽然从模型上看,还是一个中文单词对应一个英文``单词'',但实质上已经把这个中文单词对应到多个英文单词上了。训练完之后,再利用这些参数进行翻译(解码)时,就能把一个中文单词翻译成多个英文单词了。这个方法的流程如图所示。但是反向训练后再训练也存在一些问题。首先,合并英文单词会使数据变得更稀疏,使训练不充分。其次,由于IBM模型的词对齐结果并不是高精度的,利用它的词对齐结果来合并一些英文单词可能造成严重的错误,比如:把本来很独立的几个单词合在了一起。因此,此方法也并不完美。具体使用时还要考虑实际需要和问题的严重程度来决定是否使用这个方法
\noindent\hspace{2em}不过这个方法只是提供了获得“完整”的词对齐的手段。因为基于IBM模型的解码器还是不支持这种对齐,因此还并不能直接使用它。如何利用这个“完整”的词对齐结果也是一个问题。在基于短语的统计机器翻译中已经很成功地使用了这些词对齐信息。这里并不对此做深入讨论 \noindent\hspace{2em}另一种方法是双向对齐之后进行词对齐\textbf{对称化}(Symmetrization)。这个方法可以帮助我们在IBM词对齐的基础上获得对称的词对齐结果。这个思路很简单,就是用正向(汉语为源语言,英语为目标语言)和反向(汉语为目标语言,英语为源语言)同时训练。这样可以得到两个词对齐结果。然后利用一些启发性方法使用这两个词对齐生成对称的结果(比如,取``并集''、``交集''等),这样就可以得到包含1对多和多对多的词对齐结果。比如,在基于短语的统计机器翻译中已经很成功地使用了这种词对齐信息进行短语的获取。直到今天,对称化仍然是很多自然语言处理系统中的一个步骤
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Deficiency}\index{Chapter3.6.2} \subsection{Deficiency}\index{Chapter3.6.2}
\noindent\textbf{问题分析}\index{Chapter3.6.2.1}
\noindent\hspace{2em}Deficiency问题是指翻译模型会把一部分的概率分配给一些根本不存在的源语言字符串。 \noindent\hspace{2em}Deficiency问题是指翻译模型会把一部分的概率分配给一些根本不存在的源语言字符串。如果用$P(\textrm{well}|t)$表示$P(s|t)$在所有的正确的(可以理解为语法上正确的)$s$上的和,即
\noindent\hspace{2em}如果用P(well|e)表示P(f|e)在所有的正确的(可以理解为语法上正确的)f上的和,即
\begin{equation} \begin{equation}
\textrm{P}(well|e)=\sum_{\textbf{f}\;is\;well\;formed}{\textrm{p}(\textbf{f}|\textbf{e})} \textrm{P}(\textrm{well}|t)=\sum_{s\textrm{\;is\;well\;formed}}{\textrm{P}(s|t)}
\label{eqC3.6.1} \label{eqC3.6.1}
\end{equation} \end{equation}
\noindent\hspace{2em}类似地,用$\textrm{P}(ill|e)$表示$\textrm{P}(f|e)$在所有的错误的$$可以理解为语法上错误的$$$f$上的和。如果$\textrm{P}r(well|e)+ \textrm{P}r(ill|e)<1$,就把剩余的部分定义为$\textrm{P}(failure|e)$。它的形式化定义为, \noindent\hspace{2em}类似地,用$\textrm{P}(\textrm{ill}|t)$表示$\textrm{P}(s|t)$在所有的错误的(可以理解为语法上错误的)$s$上的和。如果$\textrm{P}(\textrm{well}|t)+ \textrm{P}(\textrm{ill}|t)<1$,就把剩余的部分定义为$\textrm{P}(\textrm{failure}|t)$。它的形式化定义为,
\begin{equation} \begin{equation}
\textrm{P}({failure|e}) = 1 - \textrm{P}({well|e}) - \textrm{P}({ill|e}) \textrm{P}({\textrm{failure}|t}) = 1 - \textrm{P}({\textrm{well}|t}) - \textrm{P}({\textrm{ill}|t})
\label{eqC3.6.1} \label{eqC3.6.1}
\end{equation} \end{equation}
\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}本质上,模型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中,模型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问题。无论是引入语言模型还是使用其它方法,都只是缓解这个问题。
\noindent\textbf{解决方法}\index{Chapter3.6.2.2}
\noindent\hspace{2em}IBM的模型5已经解决了technical deficiency问题。不过模型5过于复杂。实际上technical deficiency问题是不是需要解决,这一点在本节—其他问题还要进行讨论。
\noindent\hspace{2em}spiritually deficiency的解决很困难,因为即使对于人来说也很难判断一个句子是不是“良好”的句子。当然可以考虑用语言模型Pr(f)来缓解这个问题,不过由于在翻译的时候f都是定义“良好”的句子,Pr(ill|e)对Pr(f|e)的影响并不大。但用输入的f的“良好性”并不能解决technical deficiency,因为technical deficiency是模型的问题或者模型参数估计方法的问题。无论输入什么样的f,模型3和模型4的technical deficiency问题都存在。
\subsection{单词翻译}\index{Chapter3.6.3}
\noindent\textbf{问题分析}\index{Chapter3.6.3.1}
\noindent\hspace{2em}在IBM模型中翻译的单元是单词。但除了字符串它没有考虑单词的时态、语态、句法等信息。比如,在实验中我们发现,系统把“他 去…”翻译成了“He go to …”。这是由于“去”这个单词经常和“go”共现,这样系统很容易就把“去”翻译成了“go”,不管它是不是第三人称单数。类似的单词翻译问题还有一些。如在下面的实例1中,“year”使用的是单数形式,而实际上应该是复数形式。在实例2中,increase应该使用第三人称单数或者被动语态。而实例3中,“3月15日”被翻译成了“three month 15”这些显然都是不正确的翻译 \noindent\hspace{2em}这里还要强调的是,Technical Deficiency是模型3和模型4是模型本身的缺陷造成的,如果有一个``更好''的模型就可以完全避免这个问题。而Spiritually Deficiency几乎是不能从模型上根本解决的,因为对于任意一种语言我们都不能枚举所有的句子($\textrm{P}({\textrm{ill}|t})$实际上是得不到的)
\noindent\hspace{2em}实例1 \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}源语言句子:经过10多年的建设 …
\noindent\hspace{2em}IBM模型4翻译结果:After 10 year of construction …
\noindent\hspace{2em}实例2
\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}IBM模型4翻译结果:From three month 15
\noindent\hspace{2em}产生这些问题的原因是,IBM模型处理的单元是单词(字符串)。只有在语料中训练很充分的情况下,才可能得到准确的翻译结果。如果语料中一个单词的某种翻译出现的很少,那么这个翻译对应的翻译概率通常也不会很高。这样即使对于某些句子这个翻译是正确的,也就很难选择它作为译词。比如在实例3中,如果训练语料中“15”从来没有被翻译为“15th”,那么测试语料就不可能得到它的正确翻译。本质上,这个问题还是由于数据的稀疏性造成的。
\noindent\textbf{解决方法}\index{Chapter3.6.3.2}
\noindent\hspace{2em}解决这类问题的最理想方法就是在模型中加入除了句子以外的其它特征,比如:时态、词性、专名等信息。但是这些特征的引入将会使模型异常复杂。而且它也并不会解决数据的稀疏问题。它并不是很好的方法。
\noindent\hspace{2em}另一种方法是,通过预处理和后处理把某些有相同特征的单词(或词组)表示成相同的“单词”。比如:在预处理的时候把语料中的日期都用\$date替换,而是在后处理的时候在再对\$date进行单独翻译。或者把单词都替换成词性,通过训练获得对齐模板(因为对齐的并不是单词)。然后用对齐模板修正基于单句子的对齐结果。这些方法都能在一定程度上缓解数据稀疏问题。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{句子长度}\index{Chapter3.6.4} \subsection{句子长度}\index{Chapter3.6.4}
\noindent\textbf{问题分析}\index{Chapter3.6.4.1}
\noindent\hspace{2em}在IBM模型中,P(e)P(f|e)会随着l(目标语言句子长度)的增加而减少。这也就是说,IBM模型会更“偏向”选择长度短一些的目标语言句子。显然这种对短句子的偏向性并不是我们所期望的。
\noindent\textbf{解决方法}\index{Chapter3.6.4.2}
\noindent\hspace{2em}对于这个问题,可以通过在模型中增加一个短句子惩罚引子来抵消调模型对短句子的倾向性。比如,可以重新定义P(e|f), \noindent\hspace{2em}在IBM模型中,$\textrm{P}(t)\textrm{P}(s|t)$会随着目标语言句子长度的增加而减少,因为这种生成模型有多个概率化的因素组成,一般乘积项越多结果的值越小。这也就是说,IBM模型会更倾向选择长度短一些的目标语言句子。显然这种对短句子的偏向性并不是我们所期望的。
\begin{equation} \noindent\hspace{2em}整个问题在很多统计机器翻译系统中都存在,实际上也是一种系统偏置的体现。为了消除这种偏执,可以通过在模型中增加一个短句子惩罚引子来抵消调模型对短句子的倾向性。比如,可以定义一个惩罚引子,它的值随着长度的减少而增加。不过,简单引入这样的惩罚因子会导致模型并不符合一个严格的噪声信道模型。它对应一个基于最大熵框架的翻译模型,这部分内容会在下一章进行介绍。
\textrm{P}({e|f}) \approx {LB} \times \textrm{P}({e}) \times \textrm{P}({f|e})
\label{eqC3.6.2}
\end{equation}
\begin{equation} \subsection{其它问题}\index{Chapter3.6.5}
{LB} = c^1
\label{eqC3.6.3}
\end{equation}
\noindent\hspace{2em}其中LB为惩罚引子,c为一个大于1的常数。LB会随着l的增加而增大 \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}本质上说,式\ref{eqC3.6.3}并不符合一个严格的噪声信道模型。它对应一个基于最大熵框架的翻译模型,在这个模型中一共有三个特征LB、P(e)和P(e|f)每个特征的权重都是1 \noindent\hspace{2em}概念(Cept.)的意义?经过前面的分析可知,IBM模型的词对齐模型是使用了cept.这个概念。但是实质上,在IBM模型中使用的cept.最多只能对应一个目标语言单词(模型并没有用到源语言cept.的概念)。因此可以直接用单词代替cept.。这样,即使不引入cept.的概念,也并不影响IBM模型的建模。实际上,cept.的引入确实可以帮助我们从语法和语义的角度解释词对齐过程。不过,这个概念并没在IBM模型中的效果究竟如何也没有定论
\subsection{其它问题}\index{Chapter3.6.5}
\noindent\textbf{模型5的意义}\index{Chapter3.6.5.1} \section{小结和深入阅读}\index{Chapter3.7}
\noindent\hspace{2em}模型5的提出是为了消除了模型3和模型4的deficiency问题。Deficiency问题本质是,P(f,a|e)在所有合理的对齐上概率和不为1。但是,在统计机器翻译中我们根关心是哪个对齐a使P(f,a|e)达到最大,即使P(f,a|e)不符合概率分布的定义,也并不影响我们寻找理想的a。从这个角度说,P(f,a|e)不归一并不是一个十分严重的问题 \noindent\hspace{2em}本章对IBM系列模型进行了全面的介绍和讨论,从一个简单的基于单词的翻译模型开始,我们以建模、解码、训练多个维度对统计机器翻译进行了描述,期间也涉及了词对齐、优化等多个重要概念。IBM模型共分为5个模型,对翻译问题的建模依次由浅入深,同时模型复杂度也依次增加。IBM模型作为入门统计机器翻译的``必经之路'',其思想对今天的机器翻译仍然产生着影响。虽然单独使用IBM模型进行机器翻译现在已经不多见,甚至很多从事神经机器翻译等前沿研究的人对IBM模型已经逐渐淡忘,但是不能否认IBM模型标志着一个时代的开始。从某种意义上,当我们使用公式$\hat{t} = \argmax_{t} \textrm{P}(t|s)$描述机器翻译问题的时候,或多或少都在与IBM模型使用相似的思想
\noindent\hspace{2em}实际上至今也没有人对IBM模型3和模型4中的deficiency问题进行过系统的实验和分析,这个问题到底有多严重并没有定论。当然用模型5是可以解决这个问题。但是如果用一个非常复杂的模型去解决了一个并不产生严重后果的问题,那这个模型也就没有太大意义了。 \noindent\hspace{2em}当然,本书也无法涵盖IBM模型的所有内涵,很多内容需要感兴趣的读者继续研究和挖掘。有两个方向可以考虑
\noindent\textbf{概念(Cept.)的意义}\index{Chapter3.6.5.2} \begin{itemize}
\noindent\hspace{2em}经过前面的分析可知,IBM模型的词对齐模型是使用了cept.这个概念。但是实质上,在IBM模型中使用的cept.最多只能对应一个目标语言单词(模型并没有用到源语言cept.的概念)。因此可以直接用单词代替cept.。这样,即使不引入cept.的概念,也并不影响IBM模型的建模 \item IBM模型在提出后的十余年中,一直受到了学术界的关注。一个比较有代表性的成果是GIZA++({\red 给出链接!}),它集成了IBM模型和隐马尔可夫模型,并实现了这些模型的训练。在随后相当长的一段时间里,GIZA++也是机器翻译研究的标配,用于获得双语平行数据上单词一级的对齐结果。此外,研究者也对IBM模型进行了大量的分析,为后人研究统计机器翻译提供了大量依据({\red 可以引用Franz Och早期的论文,我记得有一个CL上的论文,应该还有一两篇,可以找找!})。虽然IBM模型并很少被独立使用,甚至直接用基于IBM模型的解码器也不多见,但是它通常会作为其它模型的一部分参与到对翻译的建模中。这部分工作会在下一章基于短语和句法的模型中进行讨论({\red 参考论文?可以引用基于短语或者句法的模型,但是确认一下论文中是否提到了IBM这几个字})。此外,IBM模型也给我们提供了一种非常简便的计算双语词串对应好坏的方式,因此也被广泛用于度量双语词串对应的强度,是自然语言处理中的一种常用特征
\noindent\hspace{2em}实际上cept.的引入确实可以帮助我们从语法和语义的角度解释词对齐过程。不过,这个概念并没在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 链接})等,这些工具现在也有很广泛的应用
\end{itemize}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论