Commit f28cd4b0 by 曹润柘

合并分支 'master' 到 'caorunzhe'

wording and bug fixes (secs 1-12)

查看合并请求 !298
parents c135bc79 3640834b
......@@ -80,9 +80,9 @@
\end{pgfonlayer}
% input and output labels
\draw[->,thick,align=center] ([yshift=-0.8em]layer1.south)--([yshift=-0.1em]layer1.south) node [pos=0,anchor=north,inner sep=3pt] (word01) {\footnotesize{输入} \footnotesize{(word)}};
\draw[->,thick,align=center] ([yshift=-0.8em]layer2.south)--([yshift=-0.1em]layer2.south) node [pos=0,anchor=north,inner sep=3pt] (word02) {\footnotesize{输入} \footnotesize{(word)}};
\draw[<-,thick,align=center] ([yshift=0.8em]layer3.north)--([yshift=0.1em]layer3.north) node [pos=0,anchor=south,inner sep=0] (outputnode) {\footnotesize{表示结果} \footnotesize{(representation)}};
\draw[->,thick,align=center] ([yshift=-0.8em]layer1.south)--([yshift=-0.1em]layer1.south) node [pos=0,anchor=north,inner sep=3pt] (word01) {\footnotesize{输入} \footnotesize{(Word)}};
\draw[->,thick,align=center] ([yshift=-0.8em]layer2.south)--([yshift=-0.1em]layer2.south) node [pos=0,anchor=north,inner sep=3pt] (word02) {\footnotesize{输入} \footnotesize{(Word)}};
\draw[<-,thick,align=center] ([yshift=0.8em]layer3.north)--([yshift=0.1em]layer3.north) node [pos=0,anchor=south,inner sep=0] (outputnode) {\footnotesize{表示结果} \footnotesize{(Representation)}};
% layer and neuron labels
%\node[anchor=west] (layerlabel3) at (layer3.east) {\footnotesize{layer}};
......
......@@ -377,18 +377,8 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\vspace{0.5em}
\end{itemize}
\parinterval 如果投掷这个新的骰子,可能会得到图\ref{fig:2-8}这样的结果,
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter2/Figures/figure-full-probability-word-segmentation-1}
\caption{投掷一个很多面骰子的结果}
\label{fig:2-8}
\end{figure}
%-------------------------------------------
\parinterval 如果,把这些数字换成汉语中的词,比如
\parinterval 如果投掷这个新的骰子,可能会得到图\ref{fig:2-8}这样的结果。如果把这些数字换成汉语中的词,比如:
\vspace{0.5em}
\parinterval 88\; = \;
......@@ -397,8 +387,18 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\parinterval 45\; = \;
\parinterval \ldots
\vspace{0.5em}
\parinterval 就可以得到图\ref{fig:2-9}所示的结果。
\parinterval 就可以得到图\ref{fig:2-9}所示的结果。于是,可以假设有一个不均匀的多面骰子,每个面都对应一个单词。在获取一些文本数据后,可以统计每个单词出现的次数,进而利用极大似然估计推算出每个单词在语料库中出现的概率的估计值。图\ref{fig:2-10}给出了一个实例
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter2/Figures/figure-full-probability-word-segmentation-1}
\caption{投掷一个很多面骰子的结果}
\label{fig:2-8}
\end{figure}
%-------------------------------------------
%----------------------------------------------
\begin{figure}[htp]
......@@ -410,8 +410,6 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\end{figure}
%-------------------------------------------
\parinterval 于是,可以假设有一个不均匀的多面骰子,每个面都对应一个单词。在获取一些文本数据后,可以统计每个单词出现的次数,进而利用极大似然估计推算出每个单词在语料库中出现的概率的估计值。图\ref{fig:2-10}给出了一个实例。
%----------------------------------------------
\begin{figure}[htp]
\centering
......@@ -546,7 +544,7 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\label{eq:2-26}
\end{eqnarray}
\parinterval 显然,这个结果是不合理的。因为即使语料中没有 “确实”和“现在”两个词连续出现,这种搭配也是客观存在的。这时简单地用极大似然估计得到概率却是0,导致整个句子出现的概率为0。 更常见的问题是那些根本没有出现在词表中的词,称为{\small\sffamily\bfseries{未登录词}}\index{未登录词}(Out-Of-Vocabulary Word,OOV Word)\index{Out-Of-Vocabulary Word},比如一些生僻词,可能模型训练阶段从来没有看到过,这时模型仍然会给出0概率。图\ref{fig:2-11}展示了一个真实语料库中词语出现频次的分布,可以看到绝大多数词都是低频词。
\parinterval 显然,这个结果是不合理的。因为即使语料中没有 “确实”和“现在”两个词连续出现,这种搭配也是客观存在的。这时简单地用极大似然估计得到概率却是0,导致整个句子出现的概率为0。 更常见的问题是那些根本没有出现在词表中的词,称为{\small\sffamily\bfseries{未登录词}}\index{未登录词}(Out-of-vocabulary Word,OOV Word)\index{Out-of-vocabulary Word},比如一些生僻词,可能模型训练阶段从来没有看到过,这时模型仍然会给出0概率。图\ref{fig:2-11}展示了一个真实语料库中词语出现频次的分布,可以看到绝大多数词都是低频词。
%----------------------------------------------
\begin{figure}[htp]
......@@ -818,7 +816,7 @@ c(\cdot) & \textrm{当计算最高阶模型时} \\
\parinterval 在序列生成任务中,最简单的策略就是对词表中的词汇进行任意组合,通过这种枚举的方式得到全部可能的序列。但是,很多时候并生成序列的长度是无法预先知道的。比如,机器翻译中目标语序列的长度是任意的。那么怎样判断一个序列何时完成了生成过程呢?这里借用现代人类书写中文和英文的过程:句子的生成首先从一片空白开始,然后从左到右逐词生成,除了第一个单词,所有单词的生成都依赖于前面已经生成的单词。为了方便计算机实现,通常定义单词序列从一个特殊的符号<sos>后开始生成。同样地,一个单词序列的结束也用一个特殊的符号<eos>来表示。
\parinterval 对于一个序列$<$sos$>$\ I\ agree\ $<$eos$>$,图\ref{fig:2-13}展示语言模型视角下该序列的生成过程。该过程通过在序列的末尾不断附加词表中的单词来逐渐扩展序列,直到这段序列结束。这种生成单词序列的过程被称作{\small\bfnew{自左向右生成}}\index{自左向右生成}(Left-to-right Generation)\index{Left-to-right Generation}。注意,这种序列生成策略与$n$-gram的思想天然契合,因为$n$-gram语言模型中,每个词的生成概率依赖前面(左侧)若干词,因此$n$-gram语言模型也是一种自左向右的计算模型。
\parinterval 对于一个序列$<$sos$>$\ I\ agree\ $<$eos$>$,图\ref{fig:2-13}展示语言模型视角下该序列的生成过程。该过程通过在序列的末尾不断附加词表中的单词来逐渐扩展序列,直到这段序列结束。这种生成单词序列的过程被称作{\small\bfnew{自左向右生成}}\index{自左向右生成}(Left-to-Right Generation)\index{Left-to-Right Generation}。注意,这种序列生成策略与$n$-gram的思想天然契合,因为$n$-gram语言模型中,每个词的生成概率依赖前面(左侧)若干词,因此$n$-gram语言模型也是一种自左向右的计算模型。
%----------------------------------------------
\begin{figure}[htp]
......
......@@ -26,12 +26,12 @@
\node[rectangle,draw=ublue,thick,inner sep=0.2em,fill=white,drop shadow] [fit = (P) (modellabel)] (model) {};
\end{pgfonlayer}
\draw [->,very thick,ublue] ([xshift=0.2em]corpus.east) -- ([xshift=4.2em]corpus.east) node [pos=0.5, above] {\color{red}{\scriptsize{统计学习}}};
\draw [->,very thick,ublue] ([xshift=0.2em]corpus.east) -- ([xshift=4.2em]corpus.east) node [pos=0.5, above] {\color{black}{\scriptsize{统计学习}}};
\draw [->,very thick,ublue] ([xshift=0.2em]model.east) -- ([xshift=4.2em]model.east) node [pos=0.5, above] {\color{red}{\scriptsize{预测}}};
\draw [->,very thick,ublue] ([xshift=0.2em]model.east) -- ([xshift=4.2em]model.east) node [pos=0.5, above] {\color{black}{\scriptsize{预测}}};
{\scriptsize
\node [anchor=north west] (sentlabel) at ([xshift=6.2em,yshift=-1em]model.north east) {\color{red}{自动分词系统}};
\node [anchor=north west] (sentlabel) at ([xshift=6.2em,yshift=-1em]model.north east) {\color{black}{自动分词系统}};
\node [anchor=north west] (sent) at (sentlabel.south west) {\textbf{对任意句子进行分词}};
}
......
......@@ -25,7 +25,7 @@
}
\end{scope}
\node [anchor=west,draw,thick,inner sep=3pt,ublue] (mtengine) at ([xshift=1.0in]input.east) {{\scriptsize 机器翻译系统}};
\node [anchor=west,draw,thick,inner sep=3pt,ublue] (mtengine) at ([xshift=1.0in]input.east) {{\scriptsize 核心引擎}};
\begin{scope}[scale=0.8,xshift=3.0in,yshift=-0.87in,level distance=20pt,sibling distance=-3pt,grow'=up]
{\scriptsize
......
......@@ -53,9 +53,9 @@
\node[rectangle,draw=ublue,thick,inner sep=0.2em,fill=white,drop shadow] [fit = (P) (modellabel)] (model) {};
\end{pgfonlayer}
\draw [->,very thick,ublue] ([xshift=0.2em]corpus.east) -- ([xshift=4.2em]corpus.east) node [pos=0.5, above] {\color{red}{\scriptsize{统计学习}}};
\draw [->,very thick,ublue] ([xshift=0.2em]corpus.east) -- ([xshift=4.2em]corpus.east) node [pos=0.5, above] {\color{black}{\scriptsize{统计学习}}};
\draw [->,very thick,ublue] ([xshift=0.2em]model.east) -- ([xshift=4.2em]model.east) node [pos=0.5, above] {\color{red}{\scriptsize{预测}}};
\draw [->,very thick,ublue] ([xshift=0.2em]model.east) -- ([xshift=4.2em]model.east) node [pos=0.5, above] {\color{black}{\scriptsize{预测}}};
{\scriptsize
\node [anchor=north west] (sentlabel) at ([xshift=6.2em,yshift=-1em]model.north east) {{\color{ublue} {\scriptsize \textbf{统计分析模型}}}};
......
......@@ -40,16 +40,16 @@
\end{pgfonlayer}
{
\draw [->,very thick,ublue] ([xshift=0.2em]corpus.east) -- ([xshift=4.2em]corpus.east) node [pos=0.5, above] {\color{red}{\scriptsize{统计学习}}};
\draw [->,very thick,ublue] ([xshift=0.2em]corpus.east) -- ([xshift=4.2em]corpus.east) node [pos=0.5, above] {\color{black}{\scriptsize{统计学习}}};
}
{
\draw [->,very thick,ublue] ([xshift=0.2em]model.east) -- ([xshift=4.2em]model.east) node [pos=0.5, above] {\color{red}{\scriptsize{推断}}};
\draw [->,very thick,ublue] ([xshift=0.2em]model.east) -- ([xshift=4.2em]model.east) node [pos=0.5, above] {\color{black}{\scriptsize{推断}}};
}
{\scriptsize
{
\node [anchor=north west] (sentlabel) at ([xshift=6.8em,yshift=2em]model.north east) {\color{red}{新的句子}};
\node [anchor=north west] (sentlabel) at ([xshift=6.8em,yshift=2em]model.north east) {\color{black}{新的句子}};
\node [anchor=north west] (sent) at (sentlabel.south west) {\textbf{确实现在数据很多}};
}
{
......
......@@ -35,7 +35,7 @@
\begin{figure}[htp]
\centering
\subfigure[机器翻译系统被看作一个黑盒] {\input{./Chapter3/Figures/figure-mt-system-as-a-black-box} }
\subfigure[机器翻译系统 = 前/后处理 + 翻译引擎] {\input{./Chapter3/Figures/figure-mt=language-analysis+translation-engine}}
\subfigure[机器翻译系统 = 前/后处理 + 核心引擎] {\input{./Chapter3/Figures/figure-mt=language-analysis+translation-engine}}
\caption{机器翻译系统的结构}
\label{fig:3.1-1}
\end{figure}
......@@ -62,7 +62,7 @@
\parinterval 类似地,机器翻译输出的结果也可以包含同样的信息。甚至系统输出英语译文之后,还有一个额外的步骤来把部分英语单词的大小写恢复出来,比如,句首单词的首字母要大写。
\parinterval 一般来说,在送入机器翻译系统前需要对文字序列进行处理和加工,这个过程被称为{\small\sffamily\bfseries{预处理}}\index{预处理}(Preprocessing)\index{Preprocessing}。类似地,在机器翻译模型输出译文后进行的处理被称作{\small\sffamily\bfseries{后处理}}\index{后处理}(Postprocessing)\index{Postprocessing}。这两个过程对机器翻译性能影响很大,比如,对于神经机器翻译系统来说,不同的分词策略可能会造成翻译性能的天差地别。
\parinterval 一般来说,在送入机器翻译系统前需要对文字序列进行处理和加工,这个过程被称为{\small\sffamily\bfseries{预处理}}\index{预处理}(Pre-processing)\index{Pre-processing}。类似地,在机器翻译模型输出译文后进行的处理被称作{\small\sffamily\bfseries{后处理}}\index{后处理}(Post-processing)\index{Post-processing}。这两个过程对机器翻译性能影响很大,比如,对于神经机器翻译系统来说,不同的分词策略可能会造成翻译性能的天差地别。
\parinterval 值得注意的是,有些观点认为,对于机器翻译来说,不论是分词还是句法分析,并不要求符合人的认知和语言学约束。换句话说,机器翻译所使用的“单词”和“结构”本身并不是为了符合人类的解释,它们更直接目的是为了进行翻译。从系统开发的角度,有时候即使使用一些与人类的语言习惯有差别的处理,仍然会带来性能的提升,比如在神经机器翻译中,在传统分词的基础上进一步使用{\small\sffamily\bfseries{双字节编码}}\index{双字节编码}(Byte Pair Encoding,BPE)\index{Byte Pair Encoding}子词切分\upcite{DBLP:conf/acl/SennrichHB16a}会使得机器翻译性能大幅提高。当然,自然语言处理中语言学信息的使用一直是学界关注的焦点。甚至关于语言学结构对机器翻译是否有作用这个问题也有一些不同的观点。但是不能否认的是,无论是语言学的知识,还是计算机自己学习到的知识,对机器翻译都是有价值的。在后续章节会看到,这两种类型的知识对机器翻译帮助很大。
......@@ -228,7 +228,7 @@ $计算这种切分的概率值。
\section{命名实体识别}
\parinterval 在人类使用语言的过程中,单词往往不是独立出现的。很多时候,多个单词会组合成一个更大的单元来表达特定的意思。其中,最典型的代表是{\small\sffamily\bfseries{命名实体}}\index{命名实体}(Named Entity)\index{Named Entity}。通常,命名实体是指名词性的专用短语,例如公司名称、品牌名称、产品名称等专有名词和行业术语。准确地识别出这些命名实体,是提高机器翻译质量的关键。比如,在翻译技术文献时,往往需要对术语进行识别并进行准确翻译,因此引入{\small\sffamily\bfseries{命名实体识别}}\index{命名实体识别}(Named Entity Recognition)\index{Named Entity Recognition}可以帮助系统对特定术语进行更加细致的处理。
\parinterval 在人类使用语言的过程中,单词往往不是独立出现的。很多时候,多个单词会组合成一个更大的单元来表达特定的意思。其中,最典型的代表是{\small\sffamily\bfseries{命名实体}}\index{命名实体}(Named Entity)\index{Named Entity}。通常,命名实体是指名词性的专用短语,例如公司名称、品牌名称、产品名称等专有名词和行业术语。准确地识别出这些命名实体,是提高机器翻译质量的关键。比如,在翻译技术文献时,往往需要对术语进行识别并进行准确翻译,因此引入{\small\sffamily\bfseries{命名实体识别}}\index{命名实体识别}(Named Entity Recognition)\index{Named Entity Recognition} 可以帮助系统对特定术语进行更加细致的处理。
\parinterval 从句法分析的角度来说,命名实体识别是一种浅层句法分析任务。它在分词的基础上,进一步对句子浅层结构进行识别,包括词性标注、组块识别在内的很多任务都可以被看作是浅层句法分析的内容。本节会以命名实体识别为例,对基于序列标注的浅层句法分析方法进行介绍。
......@@ -625,7 +625,7 @@ Z(\seq{x})=\sum_{\seq{y}}\exp(\sum_{i=1}^m\sum_{j=1}^k\lambda_{j}F_{j}(y_{i-1},y
\parinterval 句法树是对句子的一种抽象,这种树形结构表达了一种对句子结构的归纳过程,比如,从树的叶子开始,把每一个树节点看作一次抽象,最终形成一个根节点。那这个过程如何用计算机来实现呢?这就需要使用到形式文法。
\parinterval 形式文法是分析自然语言的一种重要工具。根据乔姆斯基的定义\upcite{chomsky1957syntactic},形式文法分为四种类型:无限制文法(0型文法)、上下文有关文法(1型文法)、上下文无关文法(2型文法)和正规文法(3型文法)。不同类型的文法有不同的应用,比如,正规文法可以用来描述有限状态自动机,因此也会被使用在语言模型等系统中。对于短语结构分析问题,常用的是{\small\sffamily\bfseries{上下文无关文法}}\index{上下文无关文法}(Context-Free Grammar)\index{Context-Free Grammar}。上下文无关文法的具体形式如下:
\parinterval 形式文法是分析自然语言的一种重要工具。根据乔姆斯基的定义\upcite{chomsky1957syntactic},形式文法分为四种类型:无限制文法(0型文法)、上下文有关文法(1型文法)、上下文无关文法(2型文法)和正规文法(3型文法)。不同类型的文法有不同的应用,比如,正规文法可以用来描述有限状态自动机,因此也会被使用在语言模型等系统中。对于短语结构分析问题,常用的是{\small\sffamily\bfseries{上下文无关文法}}\index{上下文无关文法}(Context-free Grammar)\index{Context-free Grammar}。上下文无关文法的具体形式如下:
%-------------------------------------------
\vspace{0.5em}
......@@ -777,7 +777,7 @@ s_0 \overset{r_1}{\Rightarrow} s_1 \overset{r_2}{\Rightarrow} s_2 \overset{r_3}{
\subsection{规则和推导的概率}
\parinterval 对句法树进行概率化,首先要对使用的规则进行概率化。为了达到这个目的,可以使用{\small\sffamily\bfseries{概率上下文无关文法}}\index{概率上下文无关文法}(Probabilistic Context-Free Grammar)\index{Probabilistic Context-Free Grammar},它是上下文无关文法的一种扩展。
\parinterval 对句法树进行概率化,首先要对使用的规则进行概率化。为了达到这个目的,可以使用{\small\sffamily\bfseries{概率上下文无关文法}}\index{概率上下文无关文法}(Probabilistic Context-free Grammar)\index{Probabilistic Context-free Grammar},它是上下文无关文法的一种扩展。
%-------------------------------------------
\vspace{0.5em}
......
......@@ -49,7 +49,7 @@
\node [anchor=north west] (hemethod2) at ([yshift=-0.0em]hemethod1.south west) {一致性\ \ ...};
% confidence estimation
\node [anchor=east,align=left] (conf) at ([xshift=-6em,yshift=0.6em]hebox.west) {\small\bfnew{用于估计同}\\\small\bfnew{一个系统输}\\\small\bfnew{出的可信度}};
\node [anchor=east,align=left] (conf) at ([xshift=-6em,yshift=0.6em]hebox.west) {\small\bfnew{用于估计同一个}\\\small\bfnew{系统不同输出的}\\\small\bfnew{可信度}};
\node [anchor=north,single arrow,minimum height=4.0em,fill=blue!30,rotate=-90] (arrow1) at ([yshift=-2.4em]qebox.south) {};
% comparing different systems
......
......@@ -397,7 +397,7 @@ p_0+p_1 & = & 1 \label{eq:6-21}
\parinterval 与IBM模型1一样,IBM模型2-5和隐马尔可夫模型的解码可以直接使用{\chapterfive}所描述的方法。基本思路与{\chaptertwo}所描述的自左向右搜索方法一致,即:对译文自左向右生成,每次扩展一个源语言单词的翻译,即把源语言单词的译文放到已经生成的译文的右侧。每次扩展可以选择不同的源语言单词或者同一个源语言单词的不同翻译候选,这样就可以得到多个不同的扩展译文。在这个过程中,同时计算翻译模型和语言模型的得分,对每个得到译文候选打分。最终,保留一个或者多个译文。这个过程重复执行直至所有源语言单词被翻译完。
\parinterval 类似的,IBM模型2-5和隐马尔可夫模型也都可以使用期望最大化(EM)方法进行模型训练。相关数学推导可参考附录\ref{appendix-B}的内容。通常,可以使用这些模型获得双语句子间的词对齐结果,比如使用GIZA++工具。这时,往往会使用多个模型,把简单的模型训练后的参数作为初始值送给后面更加复杂的模型。比如,先用IBM模型1训练,之后把参数送给IBM模型2,再训练,之后把参数送给隐马尔可夫模型等。值得注意的是,并不是所有的模型使用EM算法都能找到全局最优解。特别是IBM模型3-5的训练中使用一些剪枝和近似的方法,优化的真实目标函数会更加复杂。不过,IBM模型1是一个{\small\bfnew{凸函数}}\index{凸函数}(Convex Function)\index{Convex function},因此理论上使用EM方法能够找到全局最优解。更实际的好处是,IBM 模型1训练的最终结果与参数的初始化过程无关。这也是为什么在使用IBM 系列模型时,往往会使用IBM模型1作为起始模型的原因。
\parinterval 类似的,IBM模型2-5和隐马尔可夫模型也都可以使用期望最大化(EM)方法进行模型训练。相关数学推导可参考附录\ref{appendix-B}的内容。通常,可以使用这些模型获得双语句子间的词对齐结果,比如使用GIZA++工具。这时,往往会使用多个模型,把简单的模型训练后的参数作为初始值送给后面更加复杂的模型。比如,先用IBM模型1训练,之后把参数送给IBM模型2,再训练,之后把参数送给隐马尔可夫模型等。值得注意的是,并不是所有的模型使用EM算法都能找到全局最优解。特别是IBM模型3-5的训练中使用一些剪枝和近似的方法,优化的真实目标函数会更加复杂。不过,IBM模型1是一个{\small\bfnew{凸函数}}\index{凸函数}(Convex Function)\index{Convex Function},因此理论上使用EM方法能够找到全局最优解。更实际的好处是,IBM 模型1训练的最终结果与参数的初始化过程无关。这也是为什么在使用IBM 系列模型时,往往会使用IBM模型1作为起始模型的原因。
%----------------------------------------------------------------------------------------
% NEW SECTION
......
......@@ -3,9 +3,9 @@
\begin{center}
\begin{tikzpicture}
\begin{scope}
\node [anchor=east] (shead) at (0,0) {源语:};
\node [anchor=east] (shead) at (0,0) {源语言句子:};
\node [anchor=west] (swords) at (shead.east) {东北大学\ \ \ \ \ \ 东软\ \ \ \ 合作\ \ \ \ 众多\ \ 高校\ \ 之一};
\node [anchor=north east] (thead) at ([yshift=-0.8em]shead.south east) {短语系统:};
\node [anchor=north east] (thead) at ([yshift=-0.8em]shead.south east) {系统输出:};
\node [anchor=west] (twords) at (thead.east) {NEU is collaborative relations with Neusoft};
\node [anchor=north west] (twords2) at ([yshift=-0.2em]twords.south west) {is one of the many universities};
\node [anchor=north east] (rhead) at ([yshift=-2.2em]thead.south east) {参考译文:};
......
......@@ -25,7 +25,7 @@
\node[anchor=west] (synhifstpart6) at (synhifstpart5.east) {.};
\node[anchor=north west] (input) at ([yshift=-6.5em]synhifst.south west) {\sffamily\bfseries{源语句法树:}};
\node[anchor=north west] (input) at ([yshift=-6.5em]synhifst.south west) {\sffamily\bfseries{源语句法树:}};
\begin{scope}[scale = 0.9, grow'=up, sibling distance=5pt, level distance=30pt, xshift=3.49in, yshift=-3.1in]
......
......@@ -469,7 +469,7 @@ span\textrm{[2,4]}&=&\textrm{“吃} \quad \textrm{鱼”} \nonumber \\
span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{} \quad \textrm{鱼”} \nonumber
\end{eqnarray}
\parinterval CKY方法是按跨度由小到大的次序执行的,这也对应了一种{\small\bfnew{自下而上的分析}}\index{自下而上的分析}(Top-down Parsing)\index{Top-down Parsing}过程。对于每个跨度,检查:
\parinterval CKY方法是按跨度由小到大的次序执行的,这也对应了一种{\small\bfnew{自下而上的分析}}\index{自下而上的分析}(Top-Down Parsing)\index{Top-Down Parsing}过程。对于每个跨度,检查:
\begin{itemize}
\vspace{0.5em}
......@@ -841,7 +841,7 @@ span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{吃} \q
\subsubsection{2. 基于树结构的翻译推导}
\parinterval 规则中的变量预示着一种替换操作,即变量可以被其他树结构替换。实际上,上面的树到树翻译规则就是一种{\small\bfnew{同步树替换文法}}\index{同步树替换文法}(Synchronous Tree-Substitution Grammar)\index{Synchronous Tree-Substitution Grammar}规则。不论是源语言端还是目标语言端,都可以通过这种替换操作不断生成更大的树结构,也就是通过树片段的组合得到更大的树片段。图\ref{fig:8-20}就展示了树替换操作的一个实例。
\parinterval 规则中的变量预示着一种替换操作,即变量可以被其他树结构替换。实际上,上面的树到树翻译规则就是一种{\small\bfnew{同步树替换文法}}\index{同步树替换文法}(Synchronous Tree-substitution Grammar)\index{Synchronous Tree-substitution Grammar}规则。不论是源语言端还是目标语言端,都可以通过这种替换操作不断生成更大的树结构,也就是通过树片段的组合得到更大的树片段。图\ref{fig:8-20}就展示了树替换操作的一个实例。
%----------------------------------------------
\begin{figure}[htp]
......@@ -1501,7 +1501,7 @@ d_1 = {d'} \circ {r_5}
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{基于树的解码}
\subsubsection{1. 基于树的解码}
\parinterval 基于树和基于串的解码都可以使用前面的超图结构进行推导的表示。基于树的解码方法相对简单。直接使用表格结构组织解码空间即可。这里采用自底向上的策略,具体步骤如下:
\begin{itemize}
......@@ -1540,7 +1540,7 @@ d_1 = {d'} \circ {r_5}
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{基于串的解码}
\subsubsection{2. 基于串的解码}
\parinterval 基于串的解码过程和句法分析几乎一样。对于输入的源语言句子,基于串的解码需要找到这个句子上的最优推导。唯一不同的地方在于,机器翻译需要考虑译文的生成(语言模型的引入会使问题稍微复杂一些),但是源语言部分的处理和句法分析是一样的。因为不要求用户输入句法树,所以这种方法同时适用于树到串、串到树、树到树等多种模型。本质上,基于串的解码可以探索更多潜在的树结构,并增大搜索空间(相比基于树的解码),因此该方法更有可能找到高质量翻译结果。
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论