Commit 3ff9f20a by 曹润柘

合并分支 'master' 到 'caorunzhe'

Master

查看合并请求 !160
parents 3ab25770 27f0ccba
...@@ -12,11 +12,11 @@ ...@@ -12,11 +12,11 @@
\node[srcnode,anchor=north west] (c21) at ([xshift=1.5em,yshift=0.4em]c1.south west) {\normalsize{\textbf{for} $j=0$ to $ J - 1$}}; \node[srcnode,anchor=north west] (c21) at ([xshift=1.5em,yshift=0.4em]c1.south west) {\normalsize{\textbf{for} $j=0$ to $ J - 1$}};
\node[srcnode,anchor=north west] (c22) at ([xshift=1.5em,yshift=0.4em]c21.south west) {\normalsize{$span[j,j+1 ]$.Add($A \to a \in G$)}}; \node[srcnode,anchor=north west] (c22) at ([xshift=1.5em,yshift=0.4em]c21.south west) {\normalsize{$span[j,j+1 ]$.Add($A \to a \in G$)}};
\node[srcnode,anchor=north west] (c3) at ([xshift=-1.5em,yshift=0.4em]c22.south west) {\normalsize{\textbf{for} $l$ = 1 to $J$}}; \node[srcnode,anchor=north west] (c3) at ([xshift=-1.5em,yshift=0.4em]c22.south west) {\normalsize{\textbf{for} $l$ = 1 to $J$}};
\node[srcnode,anchor=west] (c31) at ([xshift=6em]c3.east) {\normalsize{// length of span}}; \node[srcnode,anchor=west] (c31) at ([xshift=6em]c3.east) {\normalsize{// 跨度长度}};
\node[srcnode,anchor=north west] (c4) at ([xshift=1.5em,yshift=0.4em]c3.south west) {\normalsize{\textbf{for} $j$ = 0 to $J-l$}}; \node[srcnode,anchor=north west] (c4) at ([xshift=1.5em,yshift=0.4em]c3.south west) {\normalsize{\textbf{for} $j$ = 0 to $J-l$}};
\node[srcnode,anchor=north west] (c41) at ([yshift=0.4em]c31.south west) {\normalsize{// beginning of span}}; \node[srcnode,anchor=north west] (c41) at ([yshift=0.4em]c31.south west) {\normalsize{// 跨度起始位置}};
\node[srcnode,anchor=north west] (c5) at ([xshift=1.5em,yshift=0.4em]c4.south west) {\normalsize{\textbf{for} $k$ = $j$ to $j+l$}}; \node[srcnode,anchor=north west] (c5) at ([xshift=1.5em,yshift=0.4em]c4.south west) {\normalsize{\textbf{for} $k$ = $j$ to $j+l$}};
\node[srcnode,anchor=north west] (c51) at ([yshift=0.4em]c41.south west) {\normalsize{// partition of span}}; \node[srcnode,anchor=north west] (c51) at ([yshift=0.4em]c41.south west) {\normalsize{// 跨度结束位置}};
\node[srcnode,anchor=north west] (c6) at ([xshift=1.5em,yshift=0.4em]c5.south west) {\normalsize{$hypos$ = Compose($span[j, k], span[k, j+l]$)}}; \node[srcnode,anchor=north west] (c6) at ([xshift=1.5em,yshift=0.4em]c5.south west) {\normalsize{$hypos$ = Compose($span[j, k], span[k, j+l]$)}};
\node[srcnode,anchor=north west] (c7) at ([yshift=0.4em]c6.south west) {\normalsize{$span[j, j+l]$.Update($hypos$)}}; \node[srcnode,anchor=north west] (c7) at ([yshift=0.4em]c6.south west) {\normalsize{$span[j, j+l]$.Update($hypos$)}};
\node[srcnode,anchor=north west] (c8) at ([xshift=-4.5em,yshift=0.4em]c7.south west) {\normalsize{\textbf{return} $span[0, J]$}}; \node[srcnode,anchor=north west] (c8) at ([xshift=-4.5em,yshift=0.4em]c7.south west) {\normalsize{\textbf{return} $span[0, J]$}};
......
...@@ -22,13 +22,13 @@ ...@@ -22,13 +22,13 @@
\draw[decorate,decoration={mirror,brace}]([xshift=0.5em,yshift=-1em]q2.west) --([xshift=7em,yshift=-1em]q2.west) node [xshift=0em,yshift=-1em,align=center](label1) {}; \draw[decorate,decoration={mirror,brace}]([xshift=0.5em,yshift=-1em]q2.west) --([xshift=7em,yshift=-1em]q2.west) node [xshift=0em,yshift=-1em,align=center](label1) {};
{\scriptsize {\scriptsize
\node[anchor=west] (h1) at ([xshift=1em,yshift=-12em]q2.west) {{Span[0,3]下的翻译假设:}}; \node[anchor=west] (h1) at ([xshift=1em,yshift=-15em]q2.west) {{Span[0,3]下的翻译假设:}};
\node[anchor=west] (h2) at ([xshift=0em,yshift=-1.3em]h1.west) {{X:imports and exports}}; \node[anchor=west] (h2) at ([xshift=0em,yshift=-1.3em]h1.west) {{X:imports and exports}};
\node[anchor=west] (h6) at ([xshift=0em,yshift=-1.3em]h2.west) {{S:the import and export}}; \node[anchor=west] (h6) at ([xshift=0em,yshift=-1.3em]h2.west) {{S:the import and export}};
} }
{\scriptsize {\scriptsize
\node[anchor=west] (h21) at ([xshift=9em,yshift=2em]h1.east) {{替换$\textrm{X}_1$后生成的翻译假设:}}; \node[anchor=west] (h21) at ([xshift=9em,yshift=5.0em]h1.east) {{替换$\textrm{X}_1$后生成的翻译假设:}};
\node[anchor=west] (h22) at ([xshift=0em,yshift=-1.3em]h21.west) {{X:imports and exports have drastically fallen}}; \node[anchor=west] (h22) at ([xshift=0em,yshift=-1.3em]h21.west) {{X:imports and exports have drastically fallen}};
\node[anchor=west] (h23) at ([xshift=0em,yshift=-1.3em]h22.west) {{X:the import and export have drastically fallen}}; \node[anchor=west] (h23) at ([xshift=0em,yshift=-1.3em]h22.west) {{X:the import and export have drastically fallen}};
\node[anchor=west] (h24) at ([xshift=0em,yshift=-1.3em]h23.west) {{X:imports and exports have drastically fallen}}; \node[anchor=west] (h24) at ([xshift=0em,yshift=-1.3em]h23.west) {{X:imports and exports have drastically fallen}};
...@@ -37,11 +37,14 @@ ...@@ -37,11 +37,14 @@
\node[anchor=west] (h27) at ([xshift=0em,yshift=-1.3em]h26.west) {{X:the import and export has drastically fallen}}; \node[anchor=west] (h27) at ([xshift=0em,yshift=-1.3em]h26.west) {{X:the import and export has drastically fallen}};
} }
\node [rectangle,inner sep=0.1em,rounded corners=1pt,draw] [fit = (h1) (h5) (h6)] (gl1) {}; \node [rectangle,inner sep=0.1em,rounded corners=1pt,draw] [fit = (h1) (h2) (h6)] (gl1) {};
\node [rectangle,inner sep=0.1em,rounded corners=1pt,draw] [fit = (h21) (h25) (h27)] (gl2) {}; \node [rectangle,inner sep=0.1em,rounded corners=1pt,draw] [fit = (h21) (h25) (h27)] (gl2) {};
\draw [->,ublue,thick] ([xshift=0.6em,yshift=0.2em]n4.south) .. controls +(south:2em) and +(east:0em) .. ([xshift=-0em,yshift=2em]gl2.west); \node [anchor=east,circle,inner sep=2pt,drop shadow,thick,draw=ublue,fill=white] (join) at ([xshift=4em,yshift=1em]gl1.north east) {\tiny{组合}};
\draw [->,ublue,thick] ([xshift=0em,yshift=0em]gl1.east) .. controls +(north:2.2em) and +(east:0em) .. ([xshift=-0em,yshift=2em]gl2.west);
\draw [->,ublue,thick] ([xshift=0.6em,yshift=0.2em]n4.south) .. controls +(south:2em) and +(north:2em) .. (join.90);
\draw [->,ublue,thick] ([xshift=0em,yshift=1em]gl1.south east) .. controls +(east:2em) and +(south:2em) .. (join.-90);
\draw [->,ublue,thick] (join.0) -- ([xshift=2.3em]join.0);
\end{scope} \end{scope}
\end{tikzpicture} \end{tikzpicture}
......
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
{\scriptsize {\scriptsize
\node (phrase) {\textbf{抽取得到的短语:}}; \node (phrase) {\textbf{抽取得到的短语:}};
\draw[-] (phrase.south west)--([xshift=1.9in]phrase.south west); \draw[-] (phrase.south west)--([xshift=1.9in]phrase.south west);
\node[anchor=north west] (rules) at ([yshift=-7.5em]phrase.south west) {\textbf{抽取得到的规则:}}; \node[anchor=north west] (rules) at ([yshift=-7.5em]phrase.south west) {\textbf{抽取得到的层次短语规则:}};
\draw[-] (rules.south west)--([xshift=1.9in]rules.south west); \draw[-] (rules.south west)--([xshift=1.9in]rules.south west);
{ {
......
...@@ -35,8 +35,11 @@ ...@@ -35,8 +35,11 @@
\node [rectangle,inner sep=0.1em,rounded corners=1pt,draw] [fit = (h1) (h5) (h6)] (gl1) {}; \node [rectangle,inner sep=0.1em,rounded corners=1pt,draw] [fit = (h1) (h5) (h6)] (gl1) {};
\node [rectangle,inner sep=0.1em,rounded corners=1pt,draw] [fit = (h21) (h25)] (gl2) {}; \node [rectangle,inner sep=0.1em,rounded corners=1pt,draw] [fit = (h21) (h25)] (gl2) {};
\draw [->,ublue,thick] ([xshift=0.6em,yshift=0.2em]n2.south) .. controls +(south:2em) and +(east:0em) .. ([xshift=-0em,yshift=2em]gl2.west); \node [anchor=east,circle,inner sep=2pt,drop shadow,thick,draw=ublue,fill=white] (join) at ([xshift=3em,yshift=-2em]gl1.north east) {\tiny{组合}};
\draw [->,ublue,thick] ([xshift=0em,yshift=1em]gl1.east) .. controls +(north:2.2em) and +(east:0em) .. ([xshift=-0em,yshift=2em]gl2.west);
\draw [->,ublue,thick] ([xshift=0.6em,yshift=0.2em]n2.south) .. controls +(south:2em) and +(north:2em) .. (join.90);
\draw [->,ublue,thick] ([xshift=0em,yshift=1em]gl1.south east) .. controls +(east:2em) and +(south:2em) .. (join.-90);
\draw [->,ublue,thick] (join.0) -- ([xshift=1.7em]join.0);
\end{scope} \end{scope}
\end{tikzpicture} \end{tikzpicture}
......
...@@ -23,9 +23,9 @@ ...@@ -23,9 +23,9 @@
\chapter{基于句法的模型} \chapter{基于句法的模型}
人类的语言是具有结构的,这种结构往往体现在句子的句法信息上。比如,人们在翻译一个句子的时候会将待翻译的主干确定下来,之后得到译文的主干,最后形成完整的译文。一个人学习外语时,也会先学习外语句子的基本构成,比如,主语、谓语等,之后用这种句子结构知识生成外语句子。 人类的语言是具有结构的,这种结构往往体现在句子的句法信息上。比如,人们进行翻译时会将待翻译句子的主干确定下来,之后得到译文的主干,最后形成完整的译文。一个人学习外语时,也会先学习外语句子的基本构成,比如,主语、谓语等,之后用这种句子结构知识生成外语句子。
使用句法分析也可以很好的处理翻译中的结构调序、远距离依赖等问题。而基于句法的机器翻译长期受到研究者关注。比如,早期基于规则的方法里就大量使用了句法信息来定义翻译规则。机器翻译的统计建模时代,句法信息的使用同样是领域主要研究方向之一。这也产生了很多基于句法的机器翻译模型及方法,而且在很多任务上取得非常出色的结果。本章将对这些模型和方法进行介绍,内容涉及机器翻译中句法信息的表示、句法翻译规则的学习、基于句法的翻译建模等。 使用句法分析可以很好的处理翻译中的结构调序、远距离依赖等问题。因此,基于句法的机器翻译模型长期受到研究者关注。比如,早期基于规则的方法里就大量使用了句法信息来定义翻译规则。进入统计机器翻译时代,句法信息的使用同样是领域主要研究方向之一。这也产生了很多基于句法的机器翻译模型及方法,而且在很多任务上取得非常出色的结果。本章将对这些模型和方法进行介绍,内容涉及机器翻译中句法信息的表示、基于句法的翻译建模、句法翻译规则的学习等。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
...@@ -33,31 +33,31 @@ ...@@ -33,31 +33,31 @@
\sectionnewpage \sectionnewpage
\section{翻译中句法信息的使用} \section{翻译中句法信息的使用}
\parinterval 使用短语的优点在于可以捕捉到具有完整意思的连续词串,因此能够对局部上下文信息进行建模。当单词之间的搭配和依赖关系出现在连续词串中时,短语可以很好地对其进行描述。但是,当单词之间距离很远时,使用短语的“效率”很低。同$n$-gram语言模型一样,当短语长度变长时,数据会变得非常稀疏。比如,很多实验已经证明,测试数据中超过5个的连续单词在训练数据中往往是很低频的现象,更长的短语甚至都很难在训练数据中找到。 \parinterval 使用短语的优点在于可以捕捉到具有完整意思的连续词串,因此能够对局部上下文信息进行建模。当单词之间的搭配和依赖关系出现在连续词串中时,短语可以很好地对其进行描述。但是,当单词之间距离很远时,使用短语的“效率”很低。同$n$-gram语言模型一样,当短语长度变长时,数据会变得非常稀疏。比如,很多实验已经证明,如果在测试数据中有一个超过5个单词的连续词串,那么它在训练数据中往往是很低频的现象,更长的短语甚至都很难在训练数据中找到。
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
\centering \centering
\input{./Chapter8/Figures/figure-long-distance-dependence-in-zh2en-translation} \input{./Chapter8/Figures/figure-long-distance-dependence-in-zh2en-translation}
\caption{汉英翻译中的长距离依赖} \caption{汉英翻译中的不同距离下的依赖}
\label{fig:8-1} \label{fig:8-1}
\end{figure} \end{figure}
%------------------------------------------- %-------------------------------------------
\parinterval 当然,可以使用平滑算法对长短语的概率进行估计,但是使用过长的短语在实际系统研发中仍然不现实。图\ref{fig:8-1}展示了一个汉语到英语的翻译实例。源语言的两个短语(蓝色和红色高亮)在目标语言中产生了调序。但是,这两个短语在源语言句子中横跨11个单词。如果直接使用这11个单词构成的短语进行翻译,显然会有非常严重的数据稀疏问题,因为很难期望在训练数据中见到一模一样的短语。 \parinterval 当然,可以使用平滑算法对长短语的概率进行估计,但是使用过长的短语在实际系统研发中仍然不现实。图\ref{fig:8-1}展示了一个汉语到英语的翻译实例。源语言的两个短语(蓝色和红色高亮)在目标语言中产生了调序。但是,这两个短语在源语言句子中横跨11个单词。如果直接使用这11个单词构成的短语进行翻译,显然会有非常严重的数据稀疏问题,因为很难期望在训练数据中见到一模一样的短语。
\parinterval 仅使用连续词串不能处理所有的翻译问题,其根本原因在于句子的表层串很难描述片段之间大范围的依赖。一个新的思路是使用句子的结构信息进行建模。{\chapterthree}已经介绍了句子的句法表示形式。对于每个句子,都可以用句法树描述它的结构。 \parinterval 仅使用连续词串不能处理所有的翻译问题,其根本原因在于句子的表层串很难描述片段之间大范围的依赖。一个新的思路是使用句子的层次结构信息进行建模。{\chapterthree}已经介绍了句法分析基础。对于每个句子,都可以用句法树描述它的结构。
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
\centering \centering
\input{./Chapter8/Figures/figure-chinese-syntax-tree} \input{./Chapter8/Figures/figure-chinese-syntax-tree}
\caption{个英文句法树(短语结构树)} \caption{棵英语句法树(短语结构树)}
\label{fig:8-2} \label{fig:8-2}
\end{figure} \end{figure}
%------------------------------------------- %-------------------------------------------
\parinterval\ref{fig:8-2}就展示了一棵英文句法树(短语结构树)。句法树描述了一种递归的结构,每个句法结构都可以用一个子树来描述,子树之间的组合可以构成更大的子树,最终完成整个句子的表示。相比线性的序列模型,树结构更容易处理大片段之间的关系。比如,两个在序列中距离“很远”的单词,在树结构中可能会“很近”。 \parinterval\ref{fig:8-2}就展示了一棵英语句法树(短语结构树)。句法树描述了一种递归的结构,每个句法结构都可以用一个子树来描述,子树之间的组合可以构成更大的子树,最终完成整个句子的表示。相比线性的序列结构,树结构更容易处理大片段之间的关系。比如,两个在序列中距离“很远”的单词,在树结构中可能会“很近”。
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -68,9 +68,9 @@ ...@@ -68,9 +68,9 @@
\end{figure} \end{figure}
%------------------------------------------- %-------------------------------------------
\parinterval 句法树结构可以赋予机器翻译一种对语言进一步抽象的能力,这样,并不需要使用连续词串,而是通过句法结构来对大范围的译文生成和调序进行建模。图\ref{fig:8-3}是一个在翻译中融入源语言(中文)句法信息的实例。这个例子中,介词短语包含15个单词,因此,使用短语很难涵盖“在 $...$ 后”这样的片段。这时,系统会把“在 $...$ 后”错误的翻译为“In $...$”。通过句法树,可以知道“在 $...$ 后”对应着一个完整的子树结构PP(介词短语)。因此也很容易知道介词短语中“在 $...$ 后”是一个模板(红色),而“在”和“后”之间的部分构成从句部分(蓝色)。最终得到正确的译文“After $...$”。 \parinterval 句法树结构可以赋予机器翻译对语言进一步抽象的能力,这样,可以不需要使用连续词串,而是通过句法结构来对大范围的译文生成和调序进行建模。图\ref{fig:8-3}是一个在翻译中融入源语言(汉语)句法信息的实例。这个例子中,介词短语包含15个单词,因此,使用短语很难涵盖“在 $...$ 后”这样的片段。这时,系统会把“在 $...$ 后”错误地翻译为“In $...$”。通过句法树,可以知道“在 $...$ 后”对应着一个完整的子树结构PP(介词短语)。因此也很容易知道介词短语中“在 $...$ 后”是一个模板(红色),而“在”和“后”之间的部分构成从句部分(蓝色)。最终得到正确的译文“After $...$”。
\parinterval 使用句法信息在机器翻译中不新鲜。在基于规则和模板的翻译模型中,就大量使用了句法等结构信息。只是由于早期句法分析技术不成熟,系统的整体效果并不突出。在数据驱动的方法中,句法可以很好地融合在统计建模中。通过概率化的文法设计,可以对翻译过程进行很好的描述。 \parinterval 使用句法信息在机器翻译中不新鲜。在基于规则和模板的翻译模型中,就大量使用了句法等结构信息。只是由于早期句法分析技术不成熟,系统的整体效果并不突出。在数据驱动的方法中,句法可以很好地融合在统计建模中。通过概率化的文法设计,可以对翻译过程进行很好的描述。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,7 @@
\parinterval 在机器翻译中,如果翻译需要局部上下文的信息,把短语作为翻译单元是一种理想的方案。但是,单词之间的关系并不总是“局部”的,很多时候需要距离更远一些的搭配。比较典型的例子是含有从句的情况。比如: \parinterval 在机器翻译中,如果翻译需要局部上下文的信息,把短语作为翻译单元是一种理想的方案。但是,单词之间的关系并不总是“局部”的,很多时候需要距离更远一些的搭配。比较典型的例子是含有从句的情况。比如:
\begin{eqnarray} \begin{eqnarray}
\qquad \textrm{{\small\bfnew{}}\ \ \ \ 今天\ \ 早上\ \ 没有\ \ \ \ \ \ \ \ \ \ 情况\ \ \ \ 还是\ \ 正常\ \ {\small\bfnew{}}\ \ {\small\bfnew{上班}}\ \ 了。} \nonumber \qquad \textrm{\underline{}\ \ \ \ 今天\ \ 早上\ \ 没有\ \ \ \ \ \ \ \ \ \ 情况\ \ \ \ 还是\ \ 正常\ \ \underline{\ \ 上班}\ \ 了。} \nonumber
\end{eqnarray} \end{eqnarray}
\parinterval 这句话的主语“我”和谓语“去\ 上班”构成了主谓搭配,而二者之间的部分是状语。显然,用短语去捕捉这个搭配需要覆盖很长的词串,也就是整个“我 $...$ 去 上班”的部分。如果把这样的短语考虑到建模中,会面临非常严重的数据稀疏问题,因为无法保证这么长的词串在训练数据中能够出现。 \parinterval 这句话的主语“我”和谓语“去\ 上班”构成了主谓搭配,而二者之间的部分是状语。显然,用短语去捕捉这个搭配需要覆盖很长的词串,也就是整个“我 $...$ 去 上班”的部分。如果把这样的短语考虑到建模中,会面临非常严重的数据稀疏问题,因为无法保证这么长的词串在训练数据中能够出现。
...@@ -106,11 +106,11 @@ ...@@ -106,11 +106,11 @@
}\end{table} }\end{table}
%------------------------------------------- %-------------------------------------------
\parinterval 实际上,随着短语长度变长,短语在数据中会变得越来越低频,相关的统计特征也会越来越不可靠。表\ref{tab:8-1}就展示了不同长度的短语在训练数据中出现的频次。可以看到,长度超过3的短语已经非常低频了,更长的短语甚至在训练数据中一次也没有出现过。 \parinterval 实际上,随着短语长度变长,短语在数据中会变得越来越低频,相关的统计特征也会越来越不可靠。表\ref{tab:8-1}就展示了不同长度的短语在一个训练数据中出现的频次。可以看到,长度超过3的短语已经非常低频了,更长的短语甚至在训练数据中一次也没有出现过。
\parinterval 显然,利用过长的短语来处理长距离的依赖并不是一种十分有效的方法。过于低频的长短语无法提供可靠的信息,而且使用长短语会导致模型体积急剧增加。 \parinterval 显然,利用过长的短语来处理长距离的依赖并不是一种十分有效的方法。过于低频的长短语无法提供可靠的信息,而且使用长短语会导致模型体积急剧增加。
\parinterval 再来看一个翻译实例\upcite{Chiang2012Hope},图\ref{fig:8-4}是一个基于短语的机器翻译系统的翻译结果。这个例子中的调序有一些复杂,比如,“少数\ 国家\ 之一”和“与\ 北韩\ \ 邦交”的英文翻译都需要进行调序,分别是“one of the few countries”和“have diplomatic relations with North Korea”。基于短语的系统可以很好地处理这些调序问题,因为它们仅仅使用了局部的信息。但是,系统却无法在这两个短语(1和2)之间进行正确的调序。 \parinterval 再来看一个翻译实例\upcite{Chiang2012Hope},图\ref{fig:8-4}是一个基于短语的机器翻译系统的翻译结果。这个例子中的调序有一些复杂,比如,“少数/国家/之一”和“与/北韩/有/邦交”的英文翻译都需要进行调序,分别是“one of the few countries”和“have diplomatic relations with North Korea”。基于短语的系统可以很好地处理这些调序问题,因为它们仅仅使用了局部的信息。但是,系统却无法在这两个短语(1和2)之间进行正确的调序。
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -121,17 +121,17 @@ ...@@ -121,17 +121,17 @@
\end{figure} \end{figure}
%------------------------------------------- %-------------------------------------------
\parinterval 这个例子也在一定程度上说明了长距离的调序需要额外的机制才能得到更好地被处理。实际上,两个短语(1和2)之间的调序现象本身对应了一种结构,或者说模板。也就是汉语中的: \parinterval 这个例子也在一定程度上说明了长距离的调序需要额外的机制才能得到更好处理。实际上,两个短语(1和2)之间的调序现象本身对应了一种结构,或者说模板。也就是汉语中的:
\begin{eqnarray} \begin{eqnarray}
\text{}\ \ \text{[什么东西]}\ \ \text{}\ \ \text{[什么事]} \quad \nonumber \text{}\ \ \text{[什么\ \ 东西]}\ \ \text{}\ \ \text{[什么\ \ 事]} \quad \nonumber
\end{eqnarray} \end{eqnarray}
\parinterval 可以翻译成: \parinterval 可以翻译成:
\begin{eqnarray} \begin{eqnarray}
\textrm{have}\ \ \text{[什么事]}\ \ \textrm{with}\ \ \text{[什么东西]} \nonumber \textrm{have}\ \ \text{[什么\ \ 事]}\ \ \textrm{with}\ \ \text{[什么\ \ 东西]} \nonumber
\end{eqnarray} \end{eqnarray}
\parinterval 这里[什么东西]和[什么事]表示模板中的变量,可以被其他词序列替换。通常,可以把这个模板形式化描述为: \parinterval 这里[什么\ \ 东西]和[什么\ \ 事]表示模板中的变量,可以被其他词序列替换。通常,可以把这个模板形式化描述为:
\begin{eqnarray} \begin{eqnarray}
\langle \ \text{}\ \textrm{X}_1\ \text{}\ \textrm{X}_2,\quad \textrm{have}\ \textrm{X}_2\ \textrm{with}\ \textrm{X}_1\ \rangle \nonumber \langle \ \text{}\ \textrm{X}_1\ \text{}\ \textrm{X}_2,\quad \textrm{have}\ \textrm{X}_2\ \textrm{with}\ \textrm{X}_1\ \rangle \nonumber
\end{eqnarray} \end{eqnarray}
...@@ -180,7 +180,7 @@ ...@@ -180,7 +180,7 @@
\subsection{同步上下文无关文法} \subsection{同步上下文无关文法}
\parinterval {\small\bfnew{基于层次短语的模型}}\index{基于层次短语的模型}(Hierarchical Phrase-based Model)\index{Hierarchical Phrase-based Model}David Chiang于2005提出的统计机器翻译模型\upcite{chiang2005a,chiang2007hierarchical}。这个模型可以很好地解决短语系统对翻译中长距离调序建模不足的问题。基于层次短语的系统也在多项机器翻译比赛中取得了很好的成绩。这项工作也获得了自然处理领域顶级会议ACL2015的最佳论文奖。 \parinterval {\small\bfnew{基于层次短语的模型}}\index{基于层次短语的模型}(Hierarchical Phrase-based Model)\index{Hierarchical Phrase-based Model}一个经典的统计机器翻译模型\upcite{chiang2005a,chiang2007hierarchical}。这个模型可以很好地解决短语系统对翻译中长距离调序建模不足的问题。基于层次短语的系统也在多项机器翻译比赛中取得了很好的成绩。这项工作也获得了自然处理领域顶级会议ACL2015的最佳论文奖。
\parinterval 层次短语模型的核心是把翻译问题归结为两种语言词串的同步生成问题。实际上,词串的生成问题是自然语言处理中的经典问题,早期的研究更多的是关注单语句子的生成,比如,如何使用句法树描述一个句子的生成过程。层次短语模型的创新之处是把传统单语词串的生成推广到双语词串的同步生成上。这使得机器翻译可以使用类似句法分析的方法进行求解。 \parinterval 层次短语模型的核心是把翻译问题归结为两种语言词串的同步生成问题。实际上,词串的生成问题是自然语言处理中的经典问题,早期的研究更多的是关注单语句子的生成,比如,如何使用句法树描述一个句子的生成过程。层次短语模型的创新之处是把传统单语词串的生成推广到双语词串的同步生成上。这使得机器翻译可以使用类似句法分析的方法进行求解。
...@@ -188,7 +188,7 @@ ...@@ -188,7 +188,7 @@
% NEW SUBSUB-SECTION % NEW SUBSUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsubsection{文法定义} \subsubsection{1. 文法定义}
\parinterval 层次短语模型中一个重要的概念是{\small\bfnew{同步上下文无关文法}}\index{同步上下文无关文法}(Synchronous Context-free Grammar\index{Synchronous Context-free Grammar},简称SCFG)。SCFG可以被看作是对源语言和目标语言上下文无关文法的融合,它要求源语言和目标语言的产生式及产生式中的变量具有对应关系。具体定义如下: \parinterval 层次短语模型中一个重要的概念是{\small\bfnew{同步上下文无关文法}}\index{同步上下文无关文法}(Synchronous Context-free Grammar\index{Synchronous Context-free Grammar},简称SCFG)。SCFG可以被看作是对源语言和目标语言上下文无关文法的融合,它要求源语言和目标语言的产生式及产生式中的变量具有对应关系。具体定义如下:
...@@ -204,6 +204,7 @@ ...@@ -204,6 +204,7 @@
\item $I \subseteq N$起始非终结符集合。 \item $I \subseteq N$起始非终结符集合。
\item $R$是规则集合,每条规则$r \in R$有如下形式: \item $R$是规则集合,每条规则$r \in R$有如下形式:
\end{enumerate} \end{enumerate}
\vspace{0.3em}
\begin{displaymath} \begin{displaymath}
\textrm{LHS} \to <\alpha, \beta, \sim> \textrm{LHS} \to <\alpha, \beta, \sim>
\end{displaymath} \end{displaymath}
...@@ -221,20 +222,20 @@ ...@@ -221,20 +222,20 @@
\textrm{NN}\ &\to\ &\langle \ \text{强大},\quad \textrm{strong}\ \rangle \nonumber \textrm{NN}\ &\to\ &\langle \ \text{强大},\quad \textrm{strong}\ \rangle \nonumber
\end{eqnarray} \end{eqnarray}
\parinterval 这里的S、NP、VP等符号可以被看作是具有句法功能的标记,因此这个文法和传统句法分析中的CFG很像,只是CFG是单语文法,而SCFG是双语同步文法。当然,复杂的句法功能标记并不是必须的。比如,也可以使用更简单的文法形式: \parinterval 这里的S、NP、VP等符号可以被看作是具有句法功能的标记,因此这个文法和传统句法分析中的CFG很像,只是CFG是单语文法,而SCFG是双语同步文法。非终结符的下标表示对应关系,比如,源语言的NP$_1$和目标语言的NP$_1$是对应的。因此,在上面这种表示形式中,两种语言间非终结符的对应关系$\sim$是隐含在变量下标中的。当然,复杂的句法功能标记并不是必须的。比如,也可以使用更简单的文法形式:
\begin{eqnarray} \begin{eqnarray}
\textrm{X}\ &\to\ &\langle \ \textrm{X}_1\ \text{希望}\ \textrm{X}_2,\quad \textrm{X}_1\ \textrm{wish}\ \textrm{to}\ \textrm{X}_2\ \rangle \nonumber \\ \textrm{X}\ &\to\ &\langle \ \textrm{X}_1\ \text{希望}\ \textrm{X}_2,\quad \textrm{X}_1\ \textrm{wish}\ \textrm{to}\ \textrm{X}_2\ \rangle \nonumber \\
\textrm{X}\ &\to\ &\langle \ \text{}\ \textrm{X}_1\ \text{感到}\ \textrm{X}_2,\quad \textrm{be}\ \textrm{X}_2\ \textrm{wish}\ \textrm{X}_1\ \rangle \nonumber \\ \textrm{X}\ &\to\ &\langle \ \text{}\ \textrm{X}_1\ \text{感到}\ \textrm{X}_2,\quad \textrm{be}\ \textrm{X}_2\ \textrm{wish}\ \textrm{X}_1\ \rangle \nonumber \\
\textrm{X}\ &\to\ &\langle \ \text{强大},\quad \textrm{strong}\ \rangle \nonumber \textrm{X}\ &\to\ &\langle \ \text{强大},\quad \textrm{strong}\ \rangle \nonumber
\end{eqnarray} \end{eqnarray}
\parinterval 这个文法只有一种非终结符X,因此所有的变量都可以使用任意的产生式进行推导。这就给翻译提供了更大的自由度,也就是说,规则可以被任意使用,进行自由组合。这也符合基于短语的模型中对短语进行灵活拼接的思想。基于此,层次短语系统中也使用这种并不依赖语言学句法标记的文法。在本章的内容中,如果没有特殊说明,本章中把这种没有语言学句法标记的文法称作{\small\bfnew{基于层次短语的文法}}\index{基于层次短语的文法}(Hierarchical Phrase-based Grammar)\index{Hierarchical Phrase-based Grammar},或简称层次短语文法。 \parinterval 这个文法只有一种非终结符X,因此所有的变量都可以使用任意的产生式进行推导。这就给翻译提供了更大的自由度,也就是说,规则可以被任意使用,进行自由组合。这也符合基于短语的模型中对短语进行灵活拼接的思想。基于此,层次短语系统中也使用这种并不依赖语言学句法标记的文法。在本章的内容中,如果没有特殊说明,把这种没有语言学句法标记的文法称作{\small\bfnew{基于层次短语的文法}}\index{基于层次短语的文法}(Hierarchical Phrase-based Grammar)\index{Hierarchical Phrase-based Grammar},或简称层次短语文法。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION % NEW SUBSUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsubsection{推导} \subsubsection{2. 推导}
\parinterval 下面是一个完整的层次短语文法: \parinterval 下面是一个完整的层次短语文法:
\begin{eqnarray} \begin{eqnarray}
...@@ -263,7 +264,7 @@ r_4:\quad \textrm{X}\ &\to\ &\langle \ \text{了},\quad \textrm{have}\ \rangle \ ...@@ -263,7 +264,7 @@ r_4:\quad \textrm{X}\ &\to\ &\langle \ \text{了},\quad \textrm{have}\ \rangle \
& & \ \textrm{The imports}\ {\red{\textrm{have}}}\ \textrm{drastically}\ \textrm{fallen}\ \rangle \nonumber & & \ \textrm{The imports}\ {\red{\textrm{have}}}\ \textrm{drastically}\ \textrm{fallen}\ \rangle \nonumber
\end{eqnarray} \end{eqnarray}
\noindent 其中,每使用一次规则就会同步替换源语言和目标语言符号串中的一个非终结符。通常,可以把上面这个过程称作翻译{\small\bfnew{推导}}\index{推导}(Derivation)\index{Derivation},记为: \noindent 其中,每使用一次规则就会同步替换源语言和目标语言符号串中的一个非终结符,替换结果用红色表示。通常,可以把上面这个过程称作翻译{\small\bfnew{推导}}\index{推导}(Derivation)\index{Derivation},记为:
\begin{eqnarray} \begin{eqnarray}
d = {r_1} \circ {r_2} \circ {r_3} \circ {r_4} d = {r_1} \circ {r_2} \circ {r_3} \circ {r_4}
\label{eq:8-1} \label{eq:8-1}
...@@ -275,7 +276,7 @@ d = {r_1} \circ {r_2} \circ {r_3} \circ {r_4} ...@@ -275,7 +276,7 @@ d = {r_1} \circ {r_2} \circ {r_3} \circ {r_4}
% NEW SUBSUB-SECTION % NEW SUBSUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsubsection{胶水规则} \subsubsection{3. 胶水规则}
\parinterval 由于翻译现象非常复杂,在实际系统中往往需要把两个局部翻译线性拼接到一起。在层次短语模型中,这个问题通过引入{\small\bfnew{胶水规则}}\index{胶水规则}(Glue Rule)\index{Glue Rule}来处理,形式如下: \parinterval 由于翻译现象非常复杂,在实际系统中往往需要把两个局部翻译线性拼接到一起。在层次短语模型中,这个问题通过引入{\small\bfnew{胶水规则}}\index{胶水规则}(Glue Rule)\index{Glue Rule}来处理,形式如下:
\begin{eqnarray} \begin{eqnarray}
...@@ -291,15 +292,15 @@ d = {r_1} \circ {r_2} \circ {r_3} \circ {r_4} ...@@ -291,15 +292,15 @@ d = {r_1} \circ {r_2} \circ {r_3} \circ {r_4}
& \to & \langle\ \textrm{X}_n\ ...\ \textrm{X}_4\ \textrm{X}_2,\ \textrm{X}_n\ ...\ \textrm{X}_4\ \textrm{X}_2\ \rangle \nonumber & \to & \langle\ \textrm{X}_n\ ...\ \textrm{X}_4\ \textrm{X}_2,\ \textrm{X}_n\ ...\ \textrm{X}_4\ \textrm{X}_2\ \rangle \nonumber
\end{eqnarray} \end{eqnarray}
\parinterval 实际上,胶水规则在很大程度上模拟了基于短语的系统中对字符串顺序翻译的操作,而且在实践中发现,这个步骤是十分必要的。特别是对法-英翻译这样的任务,由于语言的结构基本上是顺序翻译的,因此引入顺序拼接的操作符合翻译的整体规律。同时,这种拼接给翻译增加了灵活性,系统会更加健壮。 \parinterval 实际上,胶水规则在很大程度上模拟了基于短语的系统中对字符串顺序翻译的操作,而且在实践中发现,这个步骤是十分必要的。特别是对法英翻译这样的任务,由于语言的结构基本上是顺序翻译的,因此引入顺序拼接的操作符合翻译的整体规律。同时,这种拼接给翻译增加了灵活性,系统会更加健壮。
\parinterval 需要说明的是,使用同步文法进行翻译时由于单词的顺序是内嵌在翻译规则内的,因此这种模型并不依赖额外的调序模型。一旦文法确定下来,系统就可以进行翻译。 \parinterval 需要说明的是,使用同步文法进行翻译时由于单词的顺序是内嵌在翻译规则内的,因此这种模型并不依赖额外的调序模型。一旦文法确定下来,系统就可以进行翻译。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION % NEW SUBSUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsubsection{处理流程} \subsubsection{4. 处理流程}
\parinterval 层次短语系统的流程如图\ref{fig:8-6}所示。其核心是从双语数据中学习同步翻译文法,并进行翻译特征的学习,形成翻译模型(即规则+特征)。同时,要从目标语言数据中学习语言模型。最终,把翻译模型和语言模型一起送入解码器,在特征权重调优后,完成对新输入句子的翻译。 \parinterval 层次短语系统的流程如图\ref{fig:8-6}所示。其核心是从双语数据中学习同步翻译文法,并进行翻译特征的学习,形成翻译模型(即规则+特征)。同时,要从目标语言数据中学习语言模型。最终,把翻译模型和语言模型一起送入解码器,在特征权重调优后,完成对新输入句子的翻译。
...@@ -327,10 +328,10 @@ d = {r_1} \circ {r_2} \circ {r_3} \circ {r_4} ...@@ -327,10 +328,10 @@ d = {r_1} \circ {r_2} \circ {r_3} \circ {r_4}
\begin{definition} 与词对齐相兼容的层次短语规则 \begin{definition} 与词对齐相兼容的层次短语规则
{\small {\small
对于句对$(\vectorn{s},\vectorn{t})$和它们之间的词对齐$\vectorn{a}$,令$N$表示在句对$(\vectorn{s},\vectorn{t})$上与$\vectorn{a}$相兼容的双语短语集合。则: 对于句对$(\vectorn{s},\vectorn{t})$和它们之间的词对齐$\vectorn{a}$,令$\Phi$表示在句对$(\vectorn{s},\vectorn{t})$上与$\vectorn{a}$相兼容的双语短语集合。则:
\begin{enumerate} \begin{enumerate}
\item 如果$(x,y)\in N$,则$\textrm{X} \to \langle x,y,\phi \rangle$是与词对齐相兼容的层次短语规则。 \item 如果$(x,y)\in \Phi$,则$\textrm{X} \to \langle x,y,\phi \rangle$是与词对齐相兼容的层次短语规则。
\item 对于$(x,y)\in N$,存在$m$个双语短语$(x_i,y_j)\in N$,同时存在(1,$...$,$m$)上面的一个排序$\sim = {\pi_1 , ... ,\pi_m}$,且: \item 对于$(x,y)\in \Phi$,存在$m$个双语短语$(x_i,y_j)\in \Phi$,同时存在(1,$...$,$m$)上面的一个排序$\sim = \{\pi_1 , ... ,\pi_m\}$,且:
\end{enumerate} \end{enumerate}
\vspace{-1.5em} \vspace{-1.5em}
\begin{eqnarray} \begin{eqnarray}
...@@ -356,7 +357,7 @@ y&=&\beta_0 y_{\pi_1} \beta_1 y_{\pi_2} ... \beta_{m-1} y_{\pi_m} \beta_m ...@@ -356,7 +357,7 @@ y&=&\beta_0 y_{\pi_1} \beta_1 y_{\pi_2} ... \beta_{m-1} y_{\pi_m} \beta_m
\parinterval\ref{fig:8-7}展示了一个层次短语抽取的示意图。可以看到,在获取一个“ 大”短语的基础上(红色),直接在其内部挖掉另一个“小”短语(绿色),这样就生成了一个层次短语规则。 \parinterval\ref{fig:8-7}展示了一个层次短语抽取的示意图。可以看到,在获取一个“ 大”短语的基础上(红色),直接在其内部挖掉另一个“小”短语(绿色),这样就生成了一个层次短语规则。
\parinterval 这种方式可以抽取出大量的层次短语规则。但是,不加限制的抽取,会带来规则集合的过度膨胀,对解码系统造成很大负担。比如,如果考虑任意长度的短语会使得层次短语规则过大,一方面这些规则很难在测试数据上被匹配,另一方面抽取这样的“长”规则会使得抽取算法变慢,而且规则数量猛增之后难以存储。还有,如果一个层次短语规则中含有过多的变量,也会导致解码算法变得更加复杂,不利于系统实现和调试。针对这些问题,在标准的层次短语系统中会考虑一些限制,包括: \parinterval 这种方式可以抽取出大量的层次短语规则。但是,不加限制的抽取会带来规则集合的过度膨胀,对解码系统造成很大负担。比如,如果考虑任意长度的短语会使得层次短语规则过大,一方面这些规则很难在测试数据上被匹配,另一方面抽取这样的“长”规则会使得抽取算法变慢,而且规则数量猛增之后难以存储。还有,如果一个层次短语规则中含有过多的变量,也会导致解码算法变得更加复杂,不利于系统实现和调试。针对这些问题,在标准的层次短语系统中会考虑一些限制\upcite{chiang2007hierarchical},包括:
\begin{itemize} \begin{itemize}
\vspace{0.5em} \vspace{0.5em}
...@@ -421,7 +422,7 @@ h_i (d,\vectorn{t},\vectorn{s})=\sum_{r \in d}h_i (r) ...@@ -421,7 +422,7 @@ h_i (d,\vectorn{t},\vectorn{s})=\sum_{r \in d}h_i (r)
\vspace{0.5em} \vspace{0.5em}
\end{itemize} \end{itemize}
\parinterval 在定义特征函数之后,特征权重$\{ \lambda_i \}$可以通过最小错误率训练在开发集上进行调优。关于最小错误率训练可以参考{\chapterseven}的相关内容。 \parinterval 在定义特征函数之后,特征权重$\{ \lambda_i \}$可以通过最小错误率训练在开发集上进行调优。关于最小错误率训练方法可以参考{\chapterseven}的相关内容。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SECTION % NEW SUB-SECTION
...@@ -431,11 +432,12 @@ h_i (d,\vectorn{t},\vectorn{s})=\sum_{r \in d}h_i (r) ...@@ -431,11 +432,12 @@ h_i (d,\vectorn{t},\vectorn{s})=\sum_{r \in d}h_i (r)
\parinterval 层次短语模型解码的目标是找到模型得分最高的推导,即: \parinterval 层次短语模型解码的目标是找到模型得分最高的推导,即:
\begin{eqnarray} \begin{eqnarray}
\hat{d} = \arg\max_{d} \textrm{score}(d,\vectorn{s},\vectorn{t}) \hat{d} = \argmax_{d}\ \textrm{score}(d,\vectorn{s},\vectorn{t})
\label{eq:8-7} \label{eq:8-7}
\end{eqnarray} \end{eqnarray}
\parinterval $\hat{d}$的目标语部分即最佳译文$\hat{\vectorn{t}}$。令函数$t(\cdot)$返回翻译推导的目标语词串,于是有: \noindent 这里,$\hat{d}$的目标语部分即最佳译文$\hat{\vectorn{t}}$。令函数$t(\cdot)$返回翻译推导的目标语词串,于是有:
\begin{eqnarray} \begin{eqnarray}
\hat{\vectorn{t}}=t(\hat{d}) \hat{\vectorn{t}}=t(\hat{d})
\label{eq:8-8} \label{eq:8-8}
...@@ -502,7 +504,7 @@ span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{吃} \q ...@@ -502,7 +504,7 @@ span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{吃} \q
\vspace{0.5em} \vspace{0.5em}
\item 层次短语模型的文法不符合乔姆斯基范式; \item 层次短语模型的文法不符合乔姆斯基范式;
\vspace{0.5em} \vspace{0.5em}
\item 机器翻译中需要语言模型。由于当前词的语言模型得分需要前面的词做条件,因此机器翻译的解码过程并不是上下文无关的。 \item 机器翻译中需要语言模型。由于计算当前词的语言模型得分需要前面的词做条件,因此机器翻译的解码过程并不是上下文无关的。
\vspace{0.5em} \vspace{0.5em}
\end{itemize} \end{itemize}
...@@ -524,7 +526,7 @@ span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{吃} \q ...@@ -524,7 +526,7 @@ span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{吃} \q
\begin{itemize} \begin{itemize}
\vspace{0.5em} \vspace{0.5em}
\item 剪枝:在CKY中,每个跨度都可以生成非常多的推导(局部翻译假设)。理论上,这些推导的数量会和跨度大小成指数关系。显然不可能保存如此大量的翻译推导。对于这个问题,常用的办法是只保留top-$k$个推导。也就是每个局部结果只保留最好的$k$。这种方法也被称作{\small\bfnew{束剪枝}}\index{束剪枝}(Beam Pruning)\index{Beam Pruning}。在极端情况下,当$k$=1时,这个方法就变成了贪婪的方法; \item 剪枝:在CKY中,每个跨度都可以生成非常多的推导(局部翻译假设)。理论上,这些推导的数量会和跨度大小成指数关系。显然不可能保存如此大量的翻译推导。对于这个问题,常用的办法是只保留top-$k$个推导。也就是每个局部结果只保留最好的$k$,即{\small\bfnew{束剪枝}}\index{束剪枝}(Beam Pruning)\index{Beam Pruning}。在极端情况下,当$k$=1时,这个方法就变成了贪婪的方法;
\vspace{0.5em} \vspace{0.5em}
\item $n$-best结果的生成:$n$-best推导(译文)的生成是统计机器翻译必要的功能。比如,最小错误率训练中就需要最好的$n$个结果用于特征权重调优。在基于CKY的方法中,整个句子的翻译结果会被保存在最大跨度所对应的结构中。因此一种简单的$n$-best生成方法是从这个结构中取出排名最靠前的$n$个结果。另外,也可以考虑自上而下遍历CKY生成的推导空间,得到更好的$n$-best结果\upcite{huang2005better} \item $n$-best结果的生成:$n$-best推导(译文)的生成是统计机器翻译必要的功能。比如,最小错误率训练中就需要最好的$n$个结果用于特征权重调优。在基于CKY的方法中,整个句子的翻译结果会被保存在最大跨度所对应的结构中。因此一种简单的$n$-best生成方法是从这个结构中取出排名最靠前的$n$个结果。另外,也可以考虑自上而下遍历CKY生成的推导空间,得到更好的$n$-best结果\upcite{huang2005better}
\end{itemize} \end{itemize}
...@@ -552,7 +554,7 @@ span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{吃} \q ...@@ -552,7 +554,7 @@ span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{吃} \q
\textrm{X} & \to & \langle\ \textrm{X}_1\ \text{大幅度}\ \text{下降}\ \text{},\ \textrm{X}_1\ \textrm{has}\ \textrm{drastically}\ \textrm{fallen}\ \rangle \nonumber \textrm{X} & \to & \langle\ \textrm{X}_1\ \text{大幅度}\ \text{下降}\ \text{},\ \textrm{X}_1\ \textrm{has}\ \textrm{drastically}\ \textrm{fallen}\ \rangle \nonumber
\end{eqnarray} \end{eqnarray}
\parinterval 这也就是说,当匹配规则的源语言部分“$\textrm{X}_1$ 大幅度 下降 了”时会有三个译文可以选择。而变量$\textrm{X}_1$部分又有很多不同的局部翻译结果。不同的规则译文和不同的变量译文都可以组合出一个局部翻译结果。图\ref{fig:8-12}展示了这种情况的实例。 \parinterval 这也就是说,当匹配规则的源语言部分“$\textrm{X}_1$\ \ 大幅度\ \ 下降\ \ 了”时会有三个译文可以选择。而变量$\textrm{X}_1$部分又有很多不同的局部翻译结果。不同的规则译文和不同的变量译文都可以组合出一个局部翻译结果。图\ref{fig:8-12}展示了这种情况的实例。
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -578,7 +580,7 @@ span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{吃} \q ...@@ -578,7 +580,7 @@ span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{吃} \q
\parinterval\ref{fig:8-13}展示了立方剪枝的过程(规则只含有一个变量的情况)。可以看到,每个步骤中,算法只会扩展当前最好结果周围的两个点(对应两个维度,横轴对应变量被替换的内容,纵轴对应规则的目标语端)。 \parinterval\ref{fig:8-13}展示了立方剪枝的过程(规则只含有一个变量的情况)。可以看到,每个步骤中,算法只会扩展当前最好结果周围的两个点(对应两个维度,横轴对应变量被替换的内容,纵轴对应规则的目标语端)。
\parinterval 理论上,立方剪枝最多访问$n{m}^2$个点。但是在实践中发现,如果终止条件设计的合理,搜索的代价基本上与$m$或者$n$呈线性关系。因此,立方剪枝可以大大提高解码速度。立方剪枝实际上是一种启发性的搜索方法。它把搜索空间表示为一个三维空间。它假设:如果空间中某个点的模型得分较高,那么它“周围”的点的得分也很可能较高。这也是对模型得分沿着空间中不同维度具有连续性的一种假设。这种方法也大量的使用在句法分析中,并取得了很好的效果。 \parinterval 理论上,立方剪枝最多访问$n{m}^2$个点。但是在实践中发现,如果终止条件设计的合理,搜索的代价基本上与$m$或者$n$呈线性关系。因此,立方剪枝可以大大提高解码速度。立方剪枝实际上是一种启发性的搜索方法。它把搜索空间表示为一个三维空间。它假设:如果空间中某个点的模型得分较高,那么它“周围”的点的得分也很可能较高。这也是对模型得分沿着空间中不同维度具有连续性的一种假设。这种方法也可以使用在句法分析中,并取得了很好的效果。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
...@@ -750,7 +752,7 @@ span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{吃} \q ...@@ -750,7 +752,7 @@ span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{吃} \q
\centering \centering
\input{./Chapter8/Figures/figure-different-representations-of-syntax-tree} \input{./Chapter8/Figures/figure-different-representations-of-syntax-tree}
\caption{树结构的不同表示形式} \caption{树结构的不同表示形式}
\label{fig:8-18} \label{fig:8-18}·
\end{figure} \end{figure}
%------------------------------------------- %-------------------------------------------
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论