Commit 19545a0c by 曹润柘

合并分支 'caorunzhe' 到 'master'

Caorunzhe

查看合并请求 !183
parents 1197c874 efa27b49
......@@ -13,7 +13,7 @@
\node [ugreen] (input) at (0,0) {猫喜欢吃鱼};
\node [draw,thick,anchor=west,ublue] (preprocessing) at ([xshift=1em]input.east) {分词系统};
\node [ugreen,anchor=west] (mtinput) at ([xshift=1em]preprocessing.east) {猫/喜欢/吃/鱼};
\node [draw,thick,anchor=west,ublue] (smt) at ([xshift=1em]mtinput.east) {MT系统};
\node [draw,thick,anchor=west,ublue] (smt) at ([xshift=1em]mtinput.east) {机器翻译系统};
\node [anchor=west] (mtoutput) at ([xshift=1em]smt.east) {...};
\draw [->,thick,ublue] ([xshift=0.1em]input.east) -- ([xshift=-0.2em]preprocessing.west);
\draw [->,thick,ublue] ([xshift=0.2em]preprocessing.east) -- ([xshift=-0.1em]mtinput.west);
......
......@@ -5,10 +5,10 @@
\node[anchor=west,hide](y2)at([xshift=2em]y1.east){$y_2$};
\node[anchor=west,hide](y3)at([xshift=2em]y2.east){$y_3$};
\node[anchor=west,line width=1pt,inner sep=2pt,minimum size=2em](dots)at([xshift=2em]y3.east){$\cdots$};
\node[anchor=west,hide](yn-1)at([xshift=2em]dots.east){$y_{n-1}$};
\node[anchor=west,hide](yn)at([xshift=2em]yn-1.east){$y_n$};
\node[anchor=west,hide](yn-1)at([xshift=2em]dots.east){$y_{m-1}$};
\node[anchor=west,hide](yn)at([xshift=2em]yn-1.east){$y_m$};
\node[anchor=north,draw,line width=1pt,inner sep=2pt,fill=red!30,minimum height=2em,minimum width=12em](see)at ([yshift=-3em,xshift=2em]y3.south){$\mathbf{X}=(x_1,x_2,\ldots,x_{n-1},x_n)$};
\node[anchor=north,draw,line width=1pt,inner sep=2pt,fill=red!30,minimum height=2em,minimum width=12em](see)at ([yshift=-3em,xshift=2em]y3.south){$\mathbf{X}=(x_1,x_2,\ldots,x_{m-1},x_m)$};
\node[anchor=south,font=\footnotesize] at ([yshift=1em,xshift=2em]y3.north){待预测的隐藏状态序列};
\node[anchor=north,font=\footnotesize] at ([yshift=-1em]see.south){可见状态序列};
......
......@@ -56,18 +56,18 @@
\node[rectangle,draw=ublue, inner sep=0.2em] [fit = (treebanklabel) (t1n1) (t2w1) (t2wn)] (treebank) {};
\end{pgfonlayer}
\node [anchor=north west] (math1) at ([xshift=2em]treebank.north east) {P(VP $\to$ VV NN)};
\node [anchor=north west] (math1part2) at ([xshift=-1em,yshift=0.2em]math1.south west) {$=\frac{\textrm{``VP''和``VV NN''同时出现的次数=1}}{\textrm{``VP''出现的次数}=4}$};
\node [anchor=north west] (math1) at ([xshift=2em]treebank.north east) {$\funp{P}$(VP $\to$ VV NN)};
\node [anchor=north west] (math1part2) at ([xshift=-1em,yshift=0.2em]math1.south west) {$=\frac{\textrm{“VP”和“VV NN”同时出现的次数=1}}{\textrm{“VP”出现的次数}=4}$};
\node [anchor=north west] (math1part3) at ([yshift=0.2em]math1part2.south west){$=\frac{1}{4}$};
\node [anchor=north west] (math2) at ([yshift=-6em]math1.north west) {P(NP $\to$ NN)};
\node [anchor=north west] (math2part2) at ([xshift=-1em,yshift=0.2em]math2.south west) {$=\frac{\textrm{``NP''和``NN''同时出现的次数=2}}{\textrm{``NP''出现的次数}=3}$};
\node [anchor=north west] (math2) at ([yshift=-6em]math1.north west) {$\funp{P}$(NP $\to$ NN)};
\node [anchor=north west] (math2part2) at ([xshift=-1em,yshift=0.2em]math2.south west) {$=\frac{\textrm{“NP”和“NN”同时出现的次数=2}}{\textrm{“NP”出现的次数}=3}$};
\node [anchor=north west] (math2part3) at ([yshift=0.2em]math2part2.south west){$=\frac{2}{3}$};
\node [anchor=north west] (math3) at ([yshift=-6em]math2.north west) {P(IP $\to$ NP NP)};
\node [anchor=north west] (math3part2) at ([xshift=-1em,yshift=0.2em]math3.south west) {$=\frac{\textrm{``IP''和``NP NP''同时出现的次数=0}}{\textrm{``IP''出现的次数}=3}$};
\node [anchor=north west] (math3) at ([yshift=-6em]math2.north west) {$\funp{P}$(IP $\to$ NP NP)};
\node [anchor=north west] (math3part2) at ([xshift=-1em,yshift=0.2em]math3.south west) {$=\frac{\textrm{“IP”和“NP NP”同时出现的次数=0}}{\textrm{“IP”出现的次数}=3}$};
\node [anchor=north west] (math3part3) at ([yshift=0.2em]math3part2.south west){$=\frac{0}{3}$};
\begin{pgfonlayer}{background}
......
......@@ -19,7 +19,7 @@
\end{pgfonlayer}
}
\node [anchor=west,ugreen] (P) at ([xshift=5.2em,yshift=-0.8em]corpus.east){\large{\funp{P}($\cdot$)}};
\node [anchor=west,ugreen] (P) at ([xshift=5.2em,yshift=-0.8em]corpus.east){\large{$\funp{P}(\cdot)$}};
\node [anchor=south] (modellabel) at (P.north) {{\color{ublue} {\scriptsize \textbf{统计模型}}}};
\begin{pgfonlayer}{background}
......@@ -41,9 +41,9 @@
{\footnotesize
{
\node [anchor=west] (label1) at (0,6em) {实际上,通过学习我们得到了一个分词模型\funp{P}($\cdot$),给定任意的分词结果};
\node [anchor=north west] (label1part2) at ([yshift=0.5em]label1.south west) {$W=w_1 w_2...w_n$,都能通过\funp{P}($W$)=$\funp{P}(w_1) \cdot \funp{P}(w_2) \cdot ... \cdot \funp{P}(w_n)$ 计算这种分词的\hspace{0.13em} };
\node [anchor=north west] (label1part3) at ([yshift=0.5em]label1part2.south west) {概率值};
\node [anchor=west] (label1) at (0,6em) {实际上,通过学习我们得到了一个分词模型$\funp{P}(\cdot)$,给定任意的分词结果};
\node [anchor=north west] (label1part2) at ([yshift=0.5em]label1.south west) {$W=w_1 w_2...w_n$,都能通过$\funp{P}(W)=\funp{P}(w_1) \cdot \funp{P}(w_2) \cdot ... \cdot \funp{P}(w_n)$ 计算这种分\hspace{0.13em} };
\node [anchor=north west] (label1part3) at ([yshift=0.5em]label1part2.south west) {词的概率值};
}
\begin{pgfonlayer}{background}
......@@ -96,13 +96,13 @@
\node [anchor=north west,minimum height=1.6em] (data33) at ([yshift=0.3em]data23.south west) {};
{
\node [anchor=north west] (data41) at (data31.south west) {确实/现在/数据/很多};
\node [anchor=north west] (data41) at (data31.south west) {确实/现在/数据/很/};
}
{
\node [anchor=north west] (data42) at (data32.south west) {$\funp{P}(\textrm{确实}) \cdot \funp{P}(\textrm{现在}) \cdot \funp{P}(\textrm{数据}) \cdot $};
}
{
\node [anchor=north west] (data43) at ([yshift=-0.2em,xshift=-2em]data33.south west) {\color{red}{\textbf{输出}}};
\node [anchor=north west] (data43) at ([yshift=-0.4em,xshift=-1.4em]data33.south west) {\color{red}{\textbf{输出}}};
\draw [->,red,thick] (data43.west)--([xshift=-1em]data43.west);
}
{
......
......@@ -35,7 +35,7 @@
}
{
\node[rectangle,fill=ublue,inner sep=2pt] [fit = (mtinputlabel) (mtoutputlabel) (inputmarking) (outputmarking)] {{\color{white} \textbf{\Large{MT 系统}}}};
\node[rectangle,fill=ublue,inner sep=2pt] [fit = (mtinputlabel) (mtoutputlabel) (inputmarking) (outputmarking)] {{\color{white} \textbf{\Large{机器翻译系统}}}};
}
......
......@@ -25,7 +25,7 @@
}
\end{scope}
\node [anchor=west,draw,thick,inner sep=3pt,ublue] (mtengine) at ([xshift=1.05in]input.east) {{\scriptsize MT系统}};
\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
......@@ -49,8 +49,8 @@
\draw[->,thick] ([xshift=-6pt]output.west) -- ([xshift=2pt]output.west);
{
\draw[->,thick] ([xshift=-12pt]mtengine.west) -- ([xshift=-2pt]mtengine.west);
\draw[->,thick] ([xshift=2pt]mtengine.east) -- ([xshift=12pt]mtengine.east);
\draw[->,thick] ([xshift=-10pt]mtengine.west) -- ([xshift=-2pt]mtengine.west);
\draw[->,thick] ([xshift=2pt]mtengine.east) -- ([xshift=10pt]mtengine.east);
}
{
......
......@@ -72,9 +72,9 @@
\\
语言学家: & 不对 && 不对 \\
我们: & 似乎对了 & 比较肯定 & 不太可能 \\
分析器: & $\textrm{P}=0.2$ & $\textrm{P}=0.6$ & $\textrm{P}=0.1$
语言学家 & 不对 && 不对 \\
我们 & 似乎对了 & 比较肯定 & 不太可能 \\
分析器 & $\textrm{P}=0.2$ & $\textrm{P}=0.6$ & $\textrm{P}=0.1$
\end{tabular}
%---------------------------------------------------------------------
......
......@@ -76,11 +76,11 @@
\node [] (d2) at (0em,-10em) {$d_2$};
\node [] (d3) at (8.5em,-10em) {$d_2$};
\node [anchor=east] (d1p) at ([xshift=0.4em]d1.west) {$\textrm{P}($};
\node [anchor=east] (d1p) at ([xshift=0.4em]d1.west) {$\funp{P}($};
\node [anchor=west] (d1p2) at ([xshift=-0.4em]d1.east) {$)=0.0123$};
\node [anchor=east] (d2p) at ([xshift=0.4em]d2.west) {$\textrm{P}($};
\node [anchor=east] (d2p) at ([xshift=0.4em]d2.west) {$\funp{P}($};
\node [anchor=west] (d2p2) at ([xshift=-0.4em]d2.east) {$)=0.4031$};
\node [anchor=east] (d3p) at ([xshift=0.4em]d3.west) {$\textrm{P}($};
\node [anchor=east] (d3p) at ([xshift=0.4em]d3.west) {$\funp{P}($};
\node [anchor=west] (d3p2) at ([xshift=-0.4em]d3.east) {$)=0.0056$};
\end{tikzpicture}
......
......@@ -46,7 +46,7 @@
\end{pgfonlayer}
}
\node [anchor=west,ugreen] (P) at ([xshift=5.95em,yshift=-0.8em]corpus.east){\large{P($\cdot$)}};
\node [anchor=west,ugreen] (P) at ([xshift=5.95em,yshift=-0.8em]corpus.east){\large{$P(\cdot)$}};
\node [anchor=south] (modellabel) at (P.north) {{\color{ublue} {\scriptsize \textbf{统计分析模型}}}};
\begin{pgfonlayer}{background}
......
......@@ -52,7 +52,7 @@
\draw[thick] (o.north west) -- (o.south east);
\node[anchor=south west] at ([yshift=-1em,xshift=-1.4em]o.45){\tiny{可见}};
\node[anchor=north east] at ([yshift=1em,xshift=1em]o.-135){\tiny{}};
\node[anchor=north east] at ([yshift=1em,xshift=1em]o.-135){\tiny{}};
\begin{pgfonlayer}{background}
\node [rectangle,inner sep=0.5em,rounded corners=2pt,fill=red!10] [fit = (o)(n32)(rc)(cb) ] (box1) {};
......
......@@ -29,7 +29,7 @@
}
{
\node [anchor=west,ugreen] (P) at ([xshift=5.2em,yshift=-0.8em]corpus.east){\large{\funp{P}($\cdot$)}};
\node [anchor=west,ugreen] (P) at ([xshift=5.2em,yshift=-0.8em]corpus.east){{$\funp{P}(\cdot)$}};
\node [anchor=south] (modellabel) at (P.north) {{\color{ublue} {\scriptsize \textbf{统计模型}}}};
}
......@@ -59,16 +59,16 @@
}
{
\node [anchor=north west] (seg4) at ([xshift=-1.0em,yshift=0.4em]seg3.south west) {...};
\node [anchor=east,ugreen] (p1seg1) at ([xshift=0.5em]seg1.west) {P(};
\node [anchor=east,ugreen] (p1seg1) at ([xshift=0.5em]seg1.west) {$\funp{P}($};
\node [anchor=west,ugreen] (p2seg1) at ([xshift=-0.5em]seg1.east) {)=0.1};
\node [anchor=east,ugreen] (p1seg2) at ([xshift=0.5em]seg2.west) {P(};
\node [anchor=east,ugreen] (p1seg2) at ([xshift=0.5em]seg2.west) {$\funp{P}($};
\node [anchor=west,ugreen] (p2seg2) at ([xshift=-0.5em]seg2.east) {)=0.6};
\node [anchor=east,ugreen] (p1seg3) at ([xshift=0.5em]seg3.west) {P(};
\node [anchor=east,ugreen] (p1seg3) at ([xshift=0.5em]seg3.west) {$\funp{P}($};
\node [anchor=west,ugreen] (p2seg3) at ([xshift=-0.5em]seg3.east) {)=0.2};
}
{
\node [anchor=east,draw,dashed,red,thick,minimum width=13em,minimum height=1.4em] (final) at (p2seg2.east) {};
\node [anchor=east,draw,dashed,red,thick,minimum width=13.2em,minimum height=1.4em] (final) at (p2seg2.east) {};
\node [anchor=west,red] (finallabel) at ([xshift=3.1em]sentlabel.east) {输出概率最大的结果};
%\node [anchor=north east,red] (finallabel2) at ([yshift=0.5em]finallabel.south east) {的结果};
\draw [->,thick,red] ([xshift=0.0em,yshift=-0.5em]final.north east) ..controls +(east:0.2) and +(south:1.0).. ([xshift=2.0em]finallabel.south);
......
\relax
\providecommand\zref@newlabel[2]{}
\providecommand\hyper@newdestlabel[2]{}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {chapter}{\numberline {1}词法分析和语法分析基础}{11}{chapter.1}\protected@file@percent }
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\defcounter {refsection}{0}\relax }\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {1.1}问题概述}{11}{section.1.1}\protected@file@percent }
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.1}{\ignorespaces 机器翻译系统的结构\relax }}{12}{figure.caption.3}\protected@file@percent }
\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}}
\newlabel{fig:3.1-1}{{1.1}{12}{机器翻译系统的结构\relax }{figure.caption.3}{}}
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {机器翻译系统被看作一个黑盒}}}{12}{figure.caption.3}\protected@file@percent }
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {机器翻译系统 = 前/后处理 + 翻译引擎}}}{12}{figure.caption.3}\protected@file@percent }
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.2}{\ignorespaces 汉语句子“猫喜欢吃鱼”的分析结果(分词和句法分析)\relax }}{12}{figure.caption.4}\protected@file@percent }
\newlabel{fig:3.1-2}{{1.2}{12}{汉语句子“猫喜欢吃鱼”的分析结果(分词和句法分析)\relax }{figure.caption.4}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {1.2}中文分词}{13}{section.1.2}\protected@file@percent }
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.3}{\ignorespaces 一个简单的预处理流程\relax }}{13}{figure.caption.5}\protected@file@percent }
\newlabel{fig:3.2-1}{{1.3}{13}{一个简单的预处理流程\relax }{figure.caption.5}{}}
\zref@newlabel{mdf@pagelabel-1}{\default{1.2}\page{14}\abspage{14}\mdf@pagevalue{14}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {1.2.1}基于词典的分词方法}{14}{subsection.1.2.1}\protected@file@percent }
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.4}{\ignorespaces 基于词典进行分词的实例\relax }}{15}{figure.caption.6}\protected@file@percent }
\newlabel{fig:3.2-2}{{1.4}{15}{基于词典进行分词的实例\relax }{figure.caption.6}{}}
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.5}{\ignorespaces 交叉型分词歧义\relax }}{15}{figure.caption.7}\protected@file@percent }
\newlabel{fig:3.2-3}{{1.5}{15}{交叉型分词歧义\relax }{figure.caption.7}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {1.2.2}基于统计的分词方法}{16}{subsection.1.2.2}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{1. 统计模型的学习与推断}{16}{section*.8}\protected@file@percent }
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.6}{\ignorespaces 基于统计的自动分词流程\relax }}{16}{figure.caption.9}\protected@file@percent }
\newlabel{fig:3.2-4}{{1.6}{16}{基于统计的自动分词流程\relax }{figure.caption.9}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{2. 全概率分词方法}{16}{section*.10}\protected@file@percent }
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.7}{\ignorespaces 基于1-gram语言模型的中文分词实例\relax }}{17}{figure.caption.11}\protected@file@percent }
\newlabel{fig:3.2-5}{{1.7}{17}{基于1-gram语言模型的中文分词实例\relax }{figure.caption.11}{}}
\newlabel{eq:3.2-1}{{1.1}{17}{2. 全概率分词方法}{equation.1.2.1}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {1.3}命名实体识别}{18}{section.1.3}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.1}序列标注任务}{18}{subsection.1.3.1}\protected@file@percent }
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.8}{\ignorespaces BIO和BIOES格式对比\relax }}{19}{figure.caption.12}\protected@file@percent }
\newlabel{fig:3.3-1}{{1.8}{19}{BIO和BIOES格式对比\relax }{figure.caption.12}{}}
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {BIO格式标注命名实体}}}{19}{figure.caption.12}\protected@file@percent }
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {BIOES格式标注命名实体}}}{19}{figure.caption.12}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.2}基于特征的统计学习}{19}{subsection.1.3.2}\protected@file@percent }
\newlabel{sec3:feature}{{1.3.2}{19}{基于特征的统计学习}{subsection.1.3.2}{}}
\@writefile{lot}{\defcounter {refsection}{0}\relax }\@writefile{lot}{\contentsline {table}{\numberline {1.1}{\ignorespaces 命名实体识别中常用的特征\relax }}{20}{table.caption.13}\protected@file@percent }
\newlabel{tab:3.3-1}{{1.1}{20}{命名实体识别中常用的特征\relax }{table.caption.13}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.3}基于概率图模型的方法}{21}{subsection.1.3.3}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{1. 隐马尔可夫模型}{21}{section*.14}\protected@file@percent }
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.9}{\ignorespaces “抛硬币”游戏中的转移概率和发射概率\relax }}{22}{figure.caption.15}\protected@file@percent }
\newlabel{fig:3.3-2}{{1.9}{22}{“抛硬币”游戏中的转移概率和发射概率\relax }{figure.caption.15}{}}
\newlabel{eq:joint-prob-xy}{{1.2}{22}{1. 隐马尔可夫模型}{equation.1.3.2}{}}
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.10}{\ignorespaces 抛硬币的隐马尔可夫模型实例\relax }}{23}{figure.caption.16}\protected@file@percent }
\newlabel{fig:3.3-3}{{1.10}{23}{抛硬币的隐马尔可夫模型实例\relax }{figure.caption.16}{}}
\newlabel{eq:3.3-1}{{1.3}{23}{1. 隐马尔可夫模型}{equation.1.3.3}{}}
\newlabel{eq:3.3-2}{{1.4}{23}{1. 隐马尔可夫模型}{equation.1.3.4}{}}
\newlabel{eq:3.3-3}{{1.5}{24}{1. 隐马尔可夫模型}{equation.1.3.5}{}}
\newlabel{eq:markov-sequence-argmax}{{1.6}{24}{1. 隐马尔可夫模型}{equation.1.3.6}{}}
\newlabel{eq:3.3-4}{{1.6}{24}{1. 隐马尔可夫模型}{equation.1.3.6}{}}
\newlabel{eq:3.3-5}{{1.7}{24}{1. 隐马尔可夫模型}{equation.1.3.7}{}}
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.11}{\ignorespaces 基于隐马尔可夫模型的命名实体识别(解码过程)\relax }}{24}{figure.caption.17}\protected@file@percent }
\newlabel{fig:3.3-4}{{1.11}{24}{基于隐马尔可夫模型的命名实体识别(解码过程)\relax }{figure.caption.17}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{2. 条件随机场}{24}{section*.18}\protected@file@percent }
\newlabel{eq:3.3-6}{{1.8}{24}{2. 条件随机场}{equation.1.3.8}{}}
\newlabel{eq:3.3-7}{{1.9}{24}{2. 条件随机场}{equation.1.3.8}{}}
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.12}{\ignorespaces 隐马尔可夫实例\relax }}{25}{figure.caption.19}\protected@file@percent }
\newlabel{fig:3.3-5}{{1.12}{25}{隐马尔可夫实例\relax }{figure.caption.19}{}}
\newlabel{eq:3.3-8}{{1.10}{25}{2. 条件随机场}{equation.1.3.10}{}}
\newlabel{eq:3.3-9}{{1.11}{26}{2. 条件随机场}{equation.1.3.11}{}}
\newlabel{eq:3.3-10}{{1.12}{26}{2. 条件随机场}{equation.1.3.12}{}}
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.13}{\ignorespaces 条件随机场模型处理序列问题\relax }}{26}{figure.caption.20}\protected@file@percent }
\newlabel{fig:3.3-6}{{1.13}{26}{条件随机场模型处理序列问题\relax }{figure.caption.20}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.4}基于分类器的方法}{27}{subsection.1.3.4}\protected@file@percent }
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.14}{\ignorespaces HMM、CRF、分类算法三种方法对比\relax }}{27}{figure.caption.21}\protected@file@percent }
\newlabel{fig:3.3-7}{{1.14}{27}{HMM、CRF、分类算法三种方法对比\relax }{figure.caption.21}{}}
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {HMM处理序列标注}}}{27}{figure.caption.21}\protected@file@percent }
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {CRF处理序列标注}}}{27}{figure.caption.21}\protected@file@percent }
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {分类模型处理序列标注}}}{27}{figure.caption.21}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{1. 分类任务与分类器}{27}{section*.22}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{2. 经典的分类模型}{28}{section*.23}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {1.4}句法分析(短语结构分析)}{29}{section.1.4}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {1.4.1}句法树}{29}{subsection.1.4.1}\protected@file@percent }
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.15}{\ignorespaces 短语结构树(左)和依存树(右)\relax }}{30}{figure.caption.24}\protected@file@percent }
\newlabel{fig:3.4-1}{{1.15}{30}{短语结构树(左)和依存树(右)\relax }{figure.caption.24}{}}
\zref@newlabel{mdf@pagelabel-2}{\default{1.4.1}\page{30}\abspage{30}\mdf@pagevalue{30}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {1.4.2}上下文无关文法}{31}{subsection.1.4.2}\protected@file@percent }
\zref@newlabel{mdf@pagelabel-3}{\default{1.4.2}\page{31}\abspage{31}\mdf@pagevalue{31}}
\newlabel{eq:3.4-1}{{1.13}{31}{上下文无关文法}{equation.1.4.13}{}}
\newlabel{eq:3.4-2}{{1.13}{31}{上下文无关文法}{equation.1.4.13}{}}
\newlabel{eq:3.4-3}{{1.13}{31}{上下文无关文法}{equation.1.4.13}{}}
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.16}{\ignorespaces 一个示例文法的规则集\relax }}{32}{figure.caption.25}\protected@file@percent }
\newlabel{fig:3.4-2}{{1.16}{32}{一个示例文法的规则集\relax }{figure.caption.25}{}}
\zref@newlabel{mdf@pagelabel-4}{\default{1.4.2}\page{32}\abspage{32}\mdf@pagevalue{32}}
\zref@newlabel{mdf@pagelabel-5}{\default{1.4.2}\page{32}\abspage{32}\mdf@pagevalue{32}}
\zref@newlabel{mdf@pagelabel-6}{\default{1.4.2}\page{33}\abspage{33}\mdf@pagevalue{33}}
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.17}{\ignorespaces 上下文无关文法推导实例\relax }}{33}{figure.caption.26}\protected@file@percent }
\newlabel{fig:3.4-3}{{1.17}{33}{上下文无关文法推导实例\relax }{figure.caption.26}{}}
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.18}{\ignorespaces 同一棵句法树对应的不同规则推导\relax }}{34}{figure.caption.27}\protected@file@percent }
\newlabel{fig:3.4-4}{{1.18}{34}{同一棵句法树对应的不同规则推导\relax }{figure.caption.27}{}}
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.19}{\ignorespaces 如何选择最佳的句法分析结果 - 专家、普通人和句法分析器的视角\relax }}{34}{figure.caption.28}\protected@file@percent }
\newlabel{fig:3.4-5}{{1.19}{34}{如何选择最佳的句法分析结果 - 专家、普通人和句法分析器的视角\relax }{figure.caption.28}{}}
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.20}{\ignorespaces 不同推导(句法树)对应的概率值\relax }}{35}{figure.caption.29}\protected@file@percent }
\newlabel{fig:3.4-6}{{1.20}{35}{不同推导(句法树)对应的概率值\relax }{figure.caption.29}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {1.4.3}规则和推导的概率}{35}{subsection.1.4.3}\protected@file@percent }
\zref@newlabel{mdf@pagelabel-7}{\default{1.4.3}\page{35}\abspage{35}\mdf@pagevalue{35}}
\newlabel{eq:3.4-4}{{1.13}{35}{规则和推导的概率}{equation.1.4.13}{}}
\newlabel{eq:3.4-5}{{1.14}{36}{规则和推导的概率}{equation.1.4.14}{}}
\newlabel{eq:3.4-6}{{1.15}{36}{规则和推导的概率}{equation.1.4.15}{}}
\newlabel{eq:3.4-7}{{1.15}{36}{规则和推导的概率}{equation.1.4.15}{}}
\newlabel{eq:3.4-8}{{1.16}{36}{规则和推导的概率}{equation.1.4.16}{}}
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.21}{\ignorespaces 上下文无关文法规则概率估计\relax }}{37}{figure.caption.30}\protected@file@percent }
\newlabel{fig:3.4-7}{{1.21}{37}{上下文无关文法规则概率估计\relax }{figure.caption.30}{}}
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1.22}{\ignorespaces 统计句法分析的流程\relax }}{37}{figure.caption.31}\protected@file@percent }
\newlabel{fig:3.4-8}{{1.22}{37}{统计句法分析的流程\relax }{figure.caption.31}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {1.5}小结及深入阅读}{37}{section.1.5}\protected@file@percent }
\newlabel{sec3:summary}{{1.5}{37}{小结及深入阅读}{section.1.5}{}}
\@setckpt{Chapter3/chapter3}{
\setcounter{page}{39}
\setcounter{equation}{17}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{9}
\setcounter{mpfootnote}{0}
\setcounter{part}{0}
\setcounter{chapter}{1}
\setcounter{section}{5}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{22}
\setcounter{table}{1}
\setcounter{tabx@nest}{0}
\setcounter{listtotal}{0}
\setcounter{listcount}{0}
\setcounter{liststart}{0}
\setcounter{liststop}{0}
\setcounter{citecount}{0}
\setcounter{citetotal}{0}
\setcounter{multicitecount}{0}
\setcounter{multicitetotal}{0}
\setcounter{instcount}{45}
\setcounter{maxnames}{3}
\setcounter{minnames}{1}
\setcounter{maxitems}{3}
\setcounter{minitems}{1}
\setcounter{citecounter}{0}
\setcounter{maxcitecounter}{0}
\setcounter{savedcitecounter}{0}
\setcounter{uniquelist}{0}
\setcounter{uniquename}{0}
\setcounter{refsection}{0}
\setcounter{refsegment}{0}
\setcounter{maxextratitle}{0}
\setcounter{maxextratitleyear}{0}
\setcounter{maxextraname}{2}
\setcounter{maxextradate}{0}
\setcounter{maxextraalpha}{0}
\setcounter{abbrvpenalty}{50}
\setcounter{highnamepenalty}{50}
\setcounter{lownamepenalty}{25}
\setcounter{maxparens}{3}
\setcounter{parenlevel}{0}
\setcounter{mincomprange}{10}
\setcounter{maxcomprange}{100000}
\setcounter{mincompwidth}{1}
\setcounter{afterword}{0}
\setcounter{savedafterword}{0}
\setcounter{annotator}{0}
\setcounter{savedannotator}{0}
\setcounter{author}{0}
\setcounter{savedauthor}{0}
\setcounter{bookauthor}{0}
\setcounter{savedbookauthor}{0}
\setcounter{commentator}{0}
\setcounter{savedcommentator}{0}
\setcounter{editor}{0}
\setcounter{savededitor}{0}
\setcounter{editora}{0}
\setcounter{savededitora}{0}
\setcounter{editorb}{0}
\setcounter{savededitorb}{0}
\setcounter{editorc}{0}
\setcounter{savededitorc}{0}
\setcounter{foreword}{0}
\setcounter{savedforeword}{0}
\setcounter{holder}{0}
\setcounter{savedholder}{0}
\setcounter{introduction}{0}
\setcounter{savedintroduction}{0}
\setcounter{namea}{0}
\setcounter{savednamea}{0}
\setcounter{nameb}{0}
\setcounter{savednameb}{0}
\setcounter{namec}{0}
\setcounter{savednamec}{0}
\setcounter{translator}{0}
\setcounter{savedtranslator}{0}
\setcounter{shortauthor}{0}
\setcounter{savedshortauthor}{0}
\setcounter{shorteditor}{0}
\setcounter{savedshorteditor}{0}
\setcounter{labelname}{0}
\setcounter{savedlabelname}{0}
\setcounter{institution}{0}
\setcounter{savedinstitution}{0}
\setcounter{lista}{0}
\setcounter{savedlista}{0}
\setcounter{listb}{0}
\setcounter{savedlistb}{0}
\setcounter{listc}{0}
\setcounter{savedlistc}{0}
\setcounter{listd}{0}
\setcounter{savedlistd}{0}
\setcounter{liste}{0}
\setcounter{savedliste}{0}
\setcounter{listf}{0}
\setcounter{savedlistf}{0}
\setcounter{location}{0}
\setcounter{savedlocation}{0}
\setcounter{organization}{0}
\setcounter{savedorganization}{0}
\setcounter{origlocation}{0}
\setcounter{savedoriglocation}{0}
\setcounter{origpublisher}{0}
\setcounter{savedorigpublisher}{0}
\setcounter{publisher}{0}
\setcounter{savedpublisher}{0}
\setcounter{language}{0}
\setcounter{savedlanguage}{0}
\setcounter{origlanguage}{0}
\setcounter{savedoriglanguage}{0}
\setcounter{pageref}{0}
\setcounter{savedpageref}{0}
\setcounter{textcitecount}{0}
\setcounter{textcitetotal}{0}
\setcounter{textcitemaxnames}{0}
\setcounter{biburlbigbreakpenalty}{100}
\setcounter{biburlbreakpenalty}{200}
\setcounter{biburlnumpenalty}{0}
\setcounter{biburlucpenalty}{0}
\setcounter{biburllcpenalty}{0}
\setcounter{smartand}{1}
\setcounter{bbx:relatedcount}{0}
\setcounter{bbx:relatedtotal}{0}
\setcounter{parentequation}{0}
\setcounter{notation}{0}
\setcounter{dummy}{0}
\setcounter{problem}{0}
\setcounter{exerciseT}{0}
\setcounter{exampleT}{0}
\setcounter{vocabulary}{0}
\setcounter{definitionT}{0}
\setcounter{mdf@globalstyle@cnt}{0}
\setcounter{mdfcountframes}{0}
\setcounter{mdf@env@i}{0}
\setcounter{mdf@env@ii}{0}
\setcounter{mdf@zref@counter}{7}
\setcounter{Item}{0}
\setcounter{Hfootnote}{9}
\setcounter{Hy@AnnotLevel}{0}
\setcounter{bookmark@seq@number}{0}
\setcounter{caption@flags}{0}
\setcounter{continuedfloat}{0}
\setcounter{cp@cnt}{0}
\setcounter{cp@tempcnt}{0}
\setcounter{subfigure}{0}
\setcounter{lofdepth}{1}
\setcounter{subtable}{0}
\setcounter{lotdepth}{1}
\setcounter{@pps}{0}
\setcounter{@ppsavesec}{0}
\setcounter{@ppsaveapp}{0}
\setcounter{tcbbreakpart}{0}
\setcounter{tcblayer}{0}
\setcounter{tcolorbox@number}{0}
\setcounter{section@level}{1}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -166,7 +166,7 @@ IBM模型由Peter F. Brown等人于上世纪九十年代初提出\cite{DBLP:jour
\begin{itemize}
\vspace{0.5em}
\item {\small\sffamily\bfseries{训练}}:从双语平行数据中学习翻译模型,记为$\funp{P}(\vectorn{t}|\vectorn{s})$,其中$\vectorn{s}$表示源语言句子,$\vectorn{t}$表示目标语句子。$\funp{P}(\vectorn{t}|\vectorn{s})$表示把$\vectorn{s}$翻译为$\vectorn{t}$的概率。简言之,这一步需要从大量的双语平行数据中学习到$\funp{P}(\vectorn{t}|\vectorn{s})$的准确表达。
\item {\small\sffamily\bfseries{训练}}:从双语平行数据中学习翻译模型,记为$\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$,其中$\vectorn{\emph{s}}$表示源语言句子,$\vectorn{\emph{t}}$表示目标语句子。$\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$表示把$\vectorn{\emph{s}}$翻译为$\vectorn{\emph{t}}$的概率。简言之,这一步需要从大量的双语平行数据中学习到$\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$的准确表达。
\vspace{0.5em}
\item {\small\sffamily\bfseries{解码}}:当面对一个新的句子时,需要使用学习到的模型进行预测。预测可以被视为一个搜索和计算的过程,也就是,尽可能搜索更多的翻译结果,然后用训练好的模型对每个翻译结果进行打分,最后选择得分最高的翻译结果作为输出。
\vspace{0.5em}
......@@ -229,43 +229,43 @@ IBM模型由Peter F. Brown等人于上世纪九十年代初提出\cite{DBLP:jour
\parinterval 假设有一定数量的双语对照的平行数据,是否可以从中自动获得两种语言单词之间的翻译概率呢?回忆一下{\chaptertwo}中的掷骰子游戏,其中使用了相对频次估计方法来自动获得骰子不同面出现概率的估计值。其中,重复投掷骰子很多次,然后统计``1''到``6''各面出现的次数,再除以投掷的总次数,最后得到它们出现的概率的极大似然估计。这里,可以使用类似的方式计算单词翻译概率。但是,现在有的是句子一级对齐的数据,并不知道两种语言之间单词的对应关系。也就是,要从句子级对齐的平行数据中学习单词之间对齐的概率。这里,需要使用稍微``复杂''一些的模型来描述这个问题。
$X$$Y$分别表示源语言和目标语言的词汇表。对于任意源语言单词$x \in X$,所有的目标语单词$y \in Y$都可能是它的译文。给定一个互译的句对$(\vectorn{s},\vectorn{t})$,可以把$\funp{P}(x \leftrightarrow y; \vectorn{s}, \vectorn{t})$定义为:在观测到$(\vectorn{s},\vectorn{t})$的前提下$x$$y$互译的概率。其中$x$是属于句子$\vectorn{s}$中的词,而$y$是属于句子$\vectorn{t}$ 中的词。$\funp{P}(x \leftrightarrow y; \vectorn{s},\vectorn{t})$的计算公式描述如下:
$X$$Y$分别表示源语言和目标语言的词汇表。对于任意源语言单词$x \in X$,所有的目标语单词$y \in Y$都可能是它的译文。给定一个互译的句对$(\vectorn{\emph{s}},\vectorn{\emph{t}})$,可以把$\funp{P}(x \leftrightarrow y; \vectorn{\emph{s}}, \vectorn{\emph{t}})$定义为:在观测到$(\vectorn{\emph{s}},\vectorn{\emph{t}})$的前提下$x$$y$互译的概率。其中$x$是属于句子$\vectorn{\emph{s}}$中的词,而$y$是属于句子$\vectorn{\emph{t}}$ 中的词。$\funp{P}(x \leftrightarrow y; \vectorn{\emph{s}},\vectorn{\emph{t}})$的计算公式描述如下:
\vspace{-0.5em}
\begin{eqnarray}
\funp{P}(x \leftrightarrow y; \vectorn{s},\vectorn{t}) & \equiv & \funp{P}(x,y;\vectorn{s},\vectorn{t}) \nonumber \\
& = & \frac{c(x,y;\vectorn{s},\vectorn{t})}{\sum_{x',y'} c(x',y';\vectorn{s},\vectorn{t})}
\funp{P}(x \leftrightarrow y; \vectorn{\emph{s}},\vectorn{\emph{t}}) & \equiv & \funp{P}(x,y;\vectorn{\emph{s}},\vectorn{\emph{t}}) \nonumber \\
& = & \frac{c(x,y;\vectorn{\emph{s}},\vectorn{\emph{t}})}{\sum_{x',y'} c(x',y';\vectorn{\emph{s}},\vectorn{\emph{t}})}
\label{eq:5-1}
\end{eqnarray}
\noindent 其中,$\equiv$表示定义式。分子$c(x,y;\vectorn{s},\vectorn{t})$表示$x$$y$在句对$(\vectorn{s},\vectorn{t})$中共现的总次数,分母 $\sum_{x',y'} c(x',y';$ $\vectorn{s},\vectorn{t})$表示任意的源语言单词$x'$和任意的目标语言单词$y'$$(\vectorn{s},\vectorn{t})$共同出现的总次数。
\noindent 其中,$\equiv$表示定义式。分子$c(x,y;\vectorn{\emph{s}},\vectorn{\emph{t}})$表示$x$$y$在句对$(\vectorn{\emph{s}},\vectorn{\emph{t}})$中共现的总次数,分母 $\sum_{x',y'} c(x',y';$ $\vectorn{\emph{s}},\vectorn{\emph{t}})$表示任意的源语言单词$x'$和任意的目标语言单词$y'$$(\vectorn{\emph{s}},\vectorn{\emph{t}})$共同出现的总次数。
\parinterval 看一个具体的例子,如例\ref{eg:5-1}所示,有一个汉英互译的句对$(\vectorn{s},\vectorn{t})$
\parinterval 看一个具体的例子,如例\ref{eg:5-1}所示,有一个汉英互译的句对$(\vectorn{\emph{s}},\vectorn{\emph{t}})$
\begin{example}
一个汉英互译的句对
$\vectorn{s}$ = 机器\quad \underline{翻译}\;\;\;\; 计算机\;\; 生成\; \underline{翻译}\;\; 过程
$\vectorn{\emph{s}}$ = 机器\quad \underline{翻译}\;\;\;\; 计算机\;\; 生成\; \underline{翻译}\;\; 过程
$\vectorn{t}$ = machine\; \underline{translation}\; is\; a\; process\; of\; generating\; a\; \underline{translation}\; by\; computer
$\vectorn{\emph{t}}$ = machine\; \underline{translation}\; is\; a\; process\; of\; generating\; a\; \underline{translation}\; by\; computer
\label{eg:5-1}
\end{example}
\parinterval 假设,$x=\textrm{``翻译''}$$y=\textrm{``translation''}$,现在要计算$x$$y$共现的总次数。``翻译''和``translation''分别在$\vectorn{s}$$\vectorn{t}$中出现了2次,因此$c(\textrm{``翻译''},\textrm{``translation''};\vectorn{s},\vectorn{t})$ 等于4。而对于$\sum_{x',y'} c(x',y';\vectorn{s},$ $\vectorn{t})$,因为$x'$$y'$分别表示的是$\vectorn{s}$$\vectorn{t}$中的任意词,所以$\sum_{x',y'} c(x',y';\vectorn{s},\vectorn{t})$表示所有单词对的数量\ \dash \ $\vectorn{s}$的词数乘以$\vectorn{t}$的词数。最后,``翻译''和``translation''的单词翻译概率为:
\parinterval 假设,$x=\textrm{``翻译''}$$y=\textrm{``translation''}$,现在要计算$x$$y$共现的总次数。``翻译''和``translation''分别在$\vectorn{\emph{s}}$$\vectorn{\emph{t}}$中出现了2次,因此$c(\textrm{``翻译''},\textrm{``translation''};\vectorn{\emph{s}},\vectorn{\emph{t}})$ 等于4。而对于$\sum_{x',y'} c(x',y';\vectorn{\emph{s}},$ $\vectorn{\emph{t}})$,因为$x'$$y'$分别表示的是$\vectorn{\emph{s}}$$\vectorn{\emph{t}}$中的任意词,所以$\sum_{x',y'} c(x',y';\vectorn{\emph{s}},\vectorn{\emph{t}})$表示所有单词对的数量\ \dash \ $\vectorn{\emph{s}}$的词数乘以$\vectorn{\emph{t}}$的词数。最后,``翻译''和``translation''的单词翻译概率为:
\begin{eqnarray}
\funp{P}(\text{翻译},\text{translation}; \vectorn{s},\vectorn{t}) & = & \frac{c(\textrm{翻译},\textrm{translation};\vectorn{s},\vectorn{t})}{\sum_{x',y'} c(x',y';\vectorn{s},\vectorn{t})} \nonumber \\
& = & \frac{4}{|\vectorn{s}|\times |\vectorn{t}|} \nonumber \\
\funp{P}(\text{翻译},\text{translation}; \vectorn{\emph{s}},\vectorn{\emph{t}}) & = & \frac{c(\textrm{翻译},\textrm{translation};\vectorn{\emph{s}},\vectorn{\emph{t}})}{\sum_{x',y'} c(x',y';\vectorn{\emph{s}},\vectorn{\emph{t}})} \nonumber \\
& = & \frac{4}{|\vectorn{\emph{s}}|\times |\vectorn{\emph{t}}|} \nonumber \\
& = & \frac{4}{121}
\label{eq:5-2}
\end{eqnarray}
\noindent 这里运算$|\cdot|$表示句子长度。类似的,可以得到``机器''和``translation''、``机器''和``look''的单词翻译概率:
\begin{eqnarray}
\funp{P}(\text{机器},\text{translation}; \vectorn{s},\vectorn{t}) & = & \frac{2}{121} \\
\funp{P}(\text{机器},\text{look}; \vectorn{s},\vectorn{t}) & = & \frac{0}{121}
\funp{P}(\text{机器},\text{translation}; \vectorn{\emph{s}},\vectorn{\emph{t}}) & = & \frac{2}{121} \\
\funp{P}(\text{机器},\text{look}; \vectorn{\emph{s}},\vectorn{\emph{t}}) & = & \frac{0}{121}
\label{eq:5-3}
\end{eqnarray}
\noindent 注意,由于``look''没有出现在数据中,因此$\funp{P}(\text{机器},\text{look}; \vectorn{s},\vectorn{t})=0$。这时,可以使用{\chaptertwo}介绍的平滑算法赋予它一个非零的值,以保证在后续的步骤中整个翻译模型不会出现零概率的情况。
\noindent 注意,由于``look''没有出现在数据中,因此$\funp{P}(\text{机器},\text{look}; \vectorn{\emph{s}},\vectorn{\emph{t}})=0$。这时,可以使用{\chaptertwo}介绍的平滑算法赋予它一个非零的值,以保证在后续的步骤中整个翻译模型不会出现零概率的情况。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -273,9 +273,9 @@ $\vectorn{t}$ = machine\; \underline{translation}\; is\; a\; process\; of\; gene
\subsubsection{如何从大量的双语平行数据中进行学习?}
\parinterval 如果有更多的句子,上面的方法同样适用。假设,有$N$个互译句对$\{(\vectorn{s}^{[1]},\vectorn{t}^{[1]})$,...,\\$(\vectorn{s}^{[N]},\vectorn{t}^{[N]})\}$。仍然可以使用基于相对频次的方法估计翻译概率$\funp{P}(x,y)$,具体方法如下:
\parinterval 如果有更多的句子,上面的方法同样适用。假设,有$N$个互译句对$\{(\vectorn{\emph{s}}^{[1]},\vectorn{\emph{t}}^{[1]})$,...,\\$(\vectorn{\emph{s}}^{[N]},\vectorn{\emph{t}}^{[N]})\}$。仍然可以使用基于相对频次的方法估计翻译概率$\funp{P}(x,y)$,具体方法如下:
\begin{eqnarray}
\funp{P}(x,y) = \frac{{\sum_{i=1}^{N} c(x,y;\vectorn{s}^{[i]},\vectorn{t}^{[i]})}}{\sum_{i=1}^{N}{{\sum_{x',y'} c(x',y';\vectorn{s}^{[i]},\vectorn{t}^{[i]})}}}
\funp{P}(x,y) = \frac{{\sum_{i=1}^{N} c(x,y;\vectorn{\emph{s}}^{[i]},\vectorn{\emph{t}}^{[i]})}}{\sum_{i=1}^{N}{{\sum_{x',y'} c(x',y';\vectorn{\emph{s}}^{[i]},\vectorn{\emph{t}}^{[i]})}}}
\label{eq:5-4}
\end{eqnarray}
......@@ -286,21 +286,21 @@ $\vectorn{t}$ = machine\; \underline{translation}\; is\; a\; process\; of\; gene
\begin{example}
两个汉英互译的句对
$\vectorn{s}^{[1]}$ = 机器\quad \underline{翻译}\;\;\;\; 计算机\;\; 生成\; \underline{翻译}\;\; 过程
$\vectorn{\emph{s}}^{[1]}$ = 机器\quad \underline{翻译}\;\;\;\; 计算机\;\; 生成\; \underline{翻译}\;\; 过程
$\vectorn{t}^{[1]}$ = machine\; \underline{translation}\; is\; a\; process\; of\; generating\; a\; \underline{translation}\; by\; computer
$\vectorn{\emph{t}}^{[1]}$ = machine\; \underline{translation}\; is\; a\; process\; of\; generating\; a\; \underline{translation}\; by\; computer
$\vectorn{s}^{[2]}$ = 那\quad 人工\quad \underline{翻译}\quad\quad ?
$\vectorn{\emph{s}}^{[2]}$ = 那\quad 人工\quad \underline{翻译}\quad\quad ?
$\vectorn{t}^{[2]}$ = So\; ,\; what\; is\; human\; \underline{translation}\; ?
$\vectorn{\emph{t}}^{[2]}$ = So\; ,\; what\; is\; human\; \underline{translation}\; ?
\label{eg:5-2}
\end{example}
\noindent 其中,$\vectorn{s}^{[1]}$$\vectorn{s}^{[2]}$分别表示第一个句对和第二个句对的源语言句子,$\vectorn{t}^{[1]}$$\vectorn{t}^{[2]}$表示对应的目标语言句子。于是,``翻译''和``translation'' 的翻译概率为
\noindent 其中,$\vectorn{\emph{s}}^{[1]}$$\vectorn{\emph{s}}^{[2]}$分别表示第一个句对和第二个句对的源语言句子,$\vectorn{\emph{t}}^{[1]}$$\vectorn{\emph{t}}^{[2]}$表示对应的目标语言句子。于是,``翻译''和``translation'' 的翻译概率为
{\small
\begin{eqnarray}
{\funp{P}(\textrm{翻译},\textrm{translation})} & = & {\frac{c(\textrm{翻译},\textrm{translation};\vectorn{s}^{[1]},\vectorn{t}^{[1]})+c(\textrm{翻译},\textrm{translation};\vectorn{s}^{[2]},\vectorn{t}^{[2]})}{\sum_{x',y'} c(x',y';\vectorn{s}^{[1]},\vectorn{t}^{[1]}) + \sum_{x',y'} c(x',y';\vectorn{s}^{[2]},\vectorn{t}^{[2]})}} \nonumber \\
& = & \frac{4 + 1}{|\vectorn{s}^{[1]}| \times |\vectorn{t}^{[1]}| + |\vectorn{s}^{[2]}| \times |\vectorn{t}^{[2]}|} \nonumber \\
{\funp{P}(\textrm{翻译},\textrm{translation})} & = & {\frac{c(\textrm{翻译},\textrm{translation};\vectorn{\emph{s}}^{[1]},\vectorn{\emph{t}}^{[1]})+c(\textrm{翻译},\textrm{translation};\vectorn{\emph{s}}^{[2]},\vectorn{\emph{t}}^{[2]})}{\sum_{x',y'} c(x',y';\vectorn{\emph{s}}^{[1]},\vectorn{\emph{t}}^{[1]}) + \sum_{x',y'} c(x',y';\vectorn{\emph{s}}^{[2]},\vectorn{\emph{t}}^{[2]})}} \nonumber \\
& = & \frac{4 + 1}{|\vectorn{\emph{s}}^{[1]}| \times |\vectorn{\emph{t}}^{[1]}| + |\vectorn{\emph{s}}^{[2]}| \times |\vectorn{\emph{t}}^{[2]}|} \nonumber \\
& = & \frac{4 + 1}{11 \times 11 + 5 \times 7} \nonumber \\
& = & \frac{5}{156}
\label{eq:5-5}
......@@ -315,7 +315,7 @@ $\vectorn{t}^{[2]}$ = So\; ,\; what\; is\; human\; \underline{translation}\; ?
\subsection{句子级翻译模型}
\label{sec:sentence-level-translation}
\parinterval 下面继续回答如何获取句子级翻译概率的问题,即:对于源语言句子$\vectorn{s}$和目标源语言句子$\vectorn{t}$,计算$\funp{P}(\vectorn{t}|\vectorn{s})$。这也是整个句子级翻译模型的核心,一方面需要从数据中学习这个模型的参数,另一方面,对于新输入的句子,需要使用这个模型得到最佳的译文。下面介绍句子级翻译的建模方法。
\parinterval 下面继续回答如何获取句子级翻译概率的问题,即:对于源语言句子$\vectorn{\emph{s}}$和目标源语言句子$\vectorn{\emph{t}}$,计算$\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$。这也是整个句子级翻译模型的核心,一方面需要从数据中学习这个模型的参数,另一方面,对于新输入的句子,需要使用这个模型得到最佳的译文。下面介绍句子级翻译的建模方法。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -323,32 +323,32 @@ $\vectorn{t}^{[2]}$ = So\; ,\; what\; is\; human\; \underline{translation}\; ?
\subsubsection{基础模型}
\parinterval 计算句子级翻译概率并不简单。因为自然语言非常灵活,任何数据无法覆盖足够多的句子,因此,无法像公式\ref{eq:5-4}一样直接用简单计数的方式对句子的翻译概率进行估计。这里,采用一个退而求其次的方法:找到一个函数$g(\vectorn{s},\vectorn{t})\ge 0$来模拟翻译概率对译文可能性进行估计。可以定义一个新的函数$g(\vectorn{s},\vectorn{t})$,令其满足:给定$\vectorn{s}$,翻译结果$\vectorn{t}$出现的可能性越大,$g(\vectorn{s},\vectorn{t})$的值越大;$\vectorn{t}$出现的可能性越小,$g(\vectorn{s},\vectorn{t})$的值越小。换句话说,$g(\vectorn{s},\vectorn{t})$的单调性和翻译概率$\funp{P}(\vectorn{t}|\vectorn{s})$呈正相关。如果存在这样的函数$g(\vectorn{s},\vectorn{t}
)$,可以利用$g(\vectorn{s},\vectorn{t})$近似表示$\funp{P}(\vectorn{t}|\vectorn{s})$,如下:
\parinterval 计算句子级翻译概率并不简单。因为自然语言非常灵活,任何数据无法覆盖足够多的句子,因此,无法像公式\ref{eq:5-4}一样直接用简单计数的方式对句子的翻译概率进行估计。这里,采用一个退而求其次的方法:找到一个函数$g(\vectorn{\emph{s}},\vectorn{\emph{t}})\ge 0$来模拟翻译概率对译文可能性进行估计。可以定义一个新的函数$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$,令其满足:给定$\vectorn{\emph{s}}$,翻译结果$\vectorn{\emph{t}}$出现的可能性越大,$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$的值越大;$\vectorn{\emph{t}}$出现的可能性越小,$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$的值越小。换句话说,$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$的单调性和翻译概率$\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$呈正相关。如果存在这样的函数$g(\vectorn{\emph{s}},\vectorn{\emph{t}}
)$,可以利用$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$近似表示$\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$,如下:
\begin{eqnarray}
\funp{P}(\vectorn{t}|\vectorn{s}) \equiv \frac{g(\vectorn{s},\vectorn{t})}{\sum_{\vectorn{t}'}g(\vectorn{s},\vectorn{t}')}
\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}}) \equiv \frac{g(\vectorn{\emph{s}},\vectorn{\emph{t}})}{\sum_{\vectorn{\emph{t}}'}g(\vectorn{\emph{s}},\vectorn{\emph{t}}')}
\label{eq:5-6}
\end{eqnarray}
\parinterval 公式\ref{eq:5-6}相当于在函数$g(\cdot)$上做了归一化,这样等式右端的结果具有一些概率的属性,比如,$0 \le \frac{g(\vectorn{s},\vectorn{t})}{\sum_{\vectorn{t'}}g(\vectorn{s},\vectorn{t'})} \le 1$。具体来说,对于源语言句子$\vectorn{s}$,枚举其所有的翻译结果,并把所对应的函数$g(\cdot)$相加作为分母,而分子是某个翻译结果$\vectorn{t}$所对应的$g(\cdot)$的值。
\parinterval 公式\ref{eq:5-6}相当于在函数$g(\cdot)$上做了归一化,这样等式右端的结果具有一些概率的属性,比如,$0 \le \frac{g(\vectorn{\emph{s}},\vectorn{\emph{t}})}{\sum_{\vectorn{t'}}g(\vectorn{\emph{s}},\vectorn{t'})} \le 1$。具体来说,对于源语言句子$\vectorn{\emph{s}}$,枚举其所有的翻译结果,并把所对应的函数$g(\cdot)$相加作为分母,而分子是某个翻译结果$\vectorn{\emph{t}}$所对应的$g(\cdot)$的值。
\parinterval 上述过程初步建立了句子级翻译模型,并没有直接求$\funp{P}(\vectorn{t}|\vectorn{s})$,而是把问题转化为对$g(\cdot)$的设计和计算上。但是,面临着两个新的问题:
\parinterval 上述过程初步建立了句子级翻译模型,并没有直接求$\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$,而是把问题转化为对$g(\cdot)$的设计和计算上。但是,面临着两个新的问题:
\begin{itemize}
\vspace{0.5em}
\item 如何定义函数$g(\vectorn{s},\vectorn{t})$?即,在知道单词翻译概率的前提下,如何计算$g(\vectorn{s},\vectorn{t})$
\item 如何定义函数$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$?即,在知道单词翻译概率的前提下,如何计算$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$
\vspace{0.5em}
\item 公式\ref{eq:5-6}中分母$\sum_{\vectorn{t'}}g(\vectorn{s},{\vectorn{t}'})$需要累加所有翻译结果的$g(\vectorn{s},{\vectorn{t}'})$,但枚举所有${\vectorn{t}'}$是不现实的。
\item 公式\ref{eq:5-6}中分母$\sum_{\vectorn{t'}}g(\vectorn{\emph{s}},{\vectorn{\emph{t}}'})$需要累加所有翻译结果的$g(\vectorn{\emph{s}},{\vectorn{\emph{t}}'})$,但枚举所有${\vectorn{\emph{t}}'}$是不现实的。
\vspace{0.5em}
\end{itemize}
\parinterval 当然,这里最核心的问题还是函数$g(\vectorn{s},\vectorn{t})$的定义。而第二个问题其实不需要解决,因为机器翻译只关注于可能性最大的翻译结果,即$g(\vectorn{s},\vectorn{t})$的计算结果最大时对应的译文。这个问题会在后面进行讨论。
\parinterval 当然,这里最核心的问题还是函数$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$的定义。而第二个问题其实不需要解决,因为机器翻译只关注于可能性最大的翻译结果,即$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$的计算结果最大时对应的译文。这个问题会在后面进行讨论。
\parinterval 回到设计$g(\vectorn{s},\vectorn{t})$的问题上。这里,采用``大题小作''的方法,这个技巧在{\chaptertwo}已经进行了充分的介绍。具体来说,直接建模句子之间的对应比较困难,但可以利用单词之间的对应来描述句子之间的对应关系。这就用到了上一小节所介绍的单词翻译概率。
\parinterval 回到设计$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$的问题上。这里,采用``大题小作''的方法,这个技巧在{\chaptertwo}已经进行了充分的介绍。具体来说,直接建模句子之间的对应比较困难,但可以利用单词之间的对应来描述句子之间的对应关系。这就用到了上一小节所介绍的单词翻译概率。
\parinterval 首先引入一个非常重要的概念\ \dash \ {\small\sffamily\bfseries{词对齐}}\index{词对齐}(Word Alignment)\index{Word Alignment},它是统计机器翻译中最核心的概念之一。词对齐描述了平行句对中单词之间的对应关系,它体现了一种观点:本质上句子之间的对应是由单词之间的对应表示的。当然,这个观点在神经机器翻译或者其他模型中可能会有不同的理解,但是翻译句子的过程中考虑词级的对应关系是符合人类对语言的认知的。
\parinterval\ref{fig:5-7} 展示了一个句对$\vectorn{s}$$\vectorn{t}$,单词的右下标数字表示了该词在句中的位置,而虚线表示的是句子$\vectorn{s}$$\vectorn{t}$中的词对齐关系。比如,``满意''的右下标数字5表示在句子$\vectorn{s}$中处于第5个位置,``satisfied''的右下标数字3表示在句子$\vectorn{t}$中处于第3个位置,``满意''和``satisfied''之间的虚线表示两个单词之间是对齐的。为方便描述,用二元组$(j,i)$ 来描述词对齐,它表示源语言句子的第$j$个单词对应目标语言句子的第$i$个单词,即单词$s_j$$t_i$对应。通常,也会把$(j,i)$称作一条{\small\sffamily\bfseries{词对齐连接}}\index{词对齐连接}(Word Alignment Link\index{Word Alignment Link})。图\ref{fig:5-7} 中共有5 条虚线,表示有5组单词之间的词对齐连接。可以把这些词对齐连接构成的集合作为词对齐的一种表示,记为$A$,即$A={\{(1,1),(2,4),(3,5),(4,2)(5,3)}\}$
\parinterval\ref{fig:5-7} 展示了一个句对$\vectorn{\emph{s}}$$\vectorn{\emph{t}}$,单词的右下标数字表示了该词在句中的位置,而虚线表示的是句子$\vectorn{\emph{s}}$$\vectorn{\emph{t}}$中的词对齐关系。比如,``满意''的右下标数字5表示在句子$\vectorn{\emph{s}}$中处于第5个位置,``satisfied''的右下标数字3表示在句子$\vectorn{\emph{t}}$中处于第3个位置,``满意''和``satisfied''之间的虚线表示两个单词之间是对齐的。为方便描述,用二元组$(j,i)$ 来描述词对齐,它表示源语言句子的第$j$个单词对应目标语言句子的第$i$个单词,即单词$s_j$$t_i$对应。通常,也会把$(j,i)$称作一条{\small\sffamily\bfseries{词对齐连接}}\index{词对齐连接}(Word Alignment Link\index{Word Alignment Link})。图\ref{fig:5-7} 中共有5 条虚线,表示有5组单词之间的词对齐连接。可以把这些词对齐连接构成的集合作为词对齐的一种表示,记为$A$,即$A={\{(1,1),(2,4),(3,5),(4,2)(5,3)}\}$
%----------------------------------------------
\begin{figure}[htp]
......@@ -360,20 +360,20 @@ $\vectorn{t}^{[2]}$ = So\; ,\; what\; is\; human\; \underline{translation}\; ?
%----------------------------------------------
\vspace{-0.5em}
\parinterval 对于句对$(\vectorn{s},\vectorn{t})$,假设可以得到最优词对齐$\widehat{A}$,于是可以使用单词翻译概率计算$g(\vectorn{s},\vectorn{t})$,如下
\parinterval 对于句对$(\vectorn{\emph{s}},\vectorn{\emph{t}})$,假设可以得到最优词对齐$\widehat{A}$,于是可以使用单词翻译概率计算$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$,如下
\begin{eqnarray}
g(\vectorn{s},\vectorn{t}) = \prod_{(j,i)\in \widehat{A}}\funp{P}(s_j,t_i)
g(\vectorn{\emph{s}},\vectorn{\emph{t}}) = \prod_{(j,i)\in \widehat{A}}\funp{P}(s_j,t_i)
\label{eq:5-7}
\end{eqnarray}
\noindent 其中$g(\vectorn{s},\vectorn{t})$被定义为句子$\vectorn{s}$中的单词和句子$\vectorn{t}$中的单词的翻译概率的乘积,并且这两个单词之间必须有词对齐连接。$\funp{P}(s_j,t_i)$表示具有词对齐连接的源语言单词$s_j$和目标语言单词$t_i$的单词翻译概率。以图\ref{fig:5-7}中的句对为例,其中``我''与``I''、``对''与``with''、``你'' 与``you''等相互对应,可以把它们的翻译概率相乘得到$g(\vectorn{s},\vectorn{t})$的计算结果,如下:
\noindent 其中$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$被定义为句子$\vectorn{\emph{s}}$中的单词和句子$\vectorn{\emph{t}}$中的单词的翻译概率的乘积,并且这两个单词之间必须有词对齐连接。$\funp{P}(s_j,t_i)$表示具有词对齐连接的源语言单词$s_j$和目标语言单词$t_i$的单词翻译概率。以图\ref{fig:5-7}中的句对为例,其中``我''与``I''、``对''与``with''、``你'' 与``you''等相互对应,可以把它们的翻译概率相乘得到$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$的计算结果,如下:
\begin{eqnarray}
{g(\vectorn{s},\vectorn{t})}&= & \funp{P}(\textrm{我,I}) \times \funp{P}(\textrm{对,with}) \times \funp{P}(\textrm{你,you}) \times \nonumber \\
{g(\vectorn{\emph{s}},\vectorn{\emph{t}})}&= & \funp{P}(\textrm{我,I}) \times \funp{P}(\textrm{对,with}) \times \funp{P}(\textrm{你,you}) \times \nonumber \\
& & \funp{P}(\textrm{感到, am}) \times \funp{P}(\textrm{满意,satisfied})
\label{eq:5-8}
\end{eqnarray}
\parinterval 显然,如果每个词对齐连接所对应的翻译概率变大,那么整个句子翻译的得分也会提高。也就是说,词对齐越准确,翻译模型的打分越高,$\vectorn{s}$$\vectorn{t}$之间存在翻译关系的可能性越大。
\parinterval 显然,如果每个词对齐连接所对应的翻译概率变大,那么整个句子翻译的得分也会提高。也就是说,词对齐越准确,翻译模型的打分越高,$\vectorn{\emph{s}}$$\vectorn{\emph{t}}$之间存在翻译关系的可能性越大。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -381,7 +381,7 @@ g(\vectorn{s},\vectorn{t}) = \prod_{(j,i)\in \widehat{A}}\funp{P}(s_j,t_i)
\subsubsection{生成流畅的译文}
\parinterval 公式\ref{eq:5-7}定义的$g(\vectorn{s},\vectorn{t})$存在的问题是没有考虑词序信息。这里用一个简单的例子说明这个问题。如图\ref{fig:5-8}所示,源语言句子``我 对 你 感到 满意''有两个翻译结果,第一个翻译结果是``I am satisfied with you'',第二个是``I with you am satisfied''。虽然这两个译文包含的目标语单词是一样的,但词序存在很大差异。比如,它们都选择了``satisfied''作为源语单词``满意''的译文,但是在第一个翻译结果中``satisfied''处于第3个位置,而第二个结果中处于最后的位置。显然第一个翻译结果更符合英语的表达习惯,翻译的质量更高。遗憾的是,对于有明显差异的两个译文,公式\ref{eq:5-7}计算得到的函数$g(\cdot)$的值却是一样的。
\parinterval 公式\ref{eq:5-7}定义的$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$存在的问题是没有考虑词序信息。这里用一个简单的例子说明这个问题。如图\ref{fig:5-8}所示,源语言句子``我 对 你 感到 满意''有两个翻译结果,第一个翻译结果是``I am satisfied with you'',第二个是``I with you am satisfied''。虽然这两个译文包含的目标语单词是一样的,但词序存在很大差异。比如,它们都选择了``satisfied''作为源语单词``满意''的译文,但是在第一个翻译结果中``satisfied''处于第3个位置,而第二个结果中处于最后的位置。显然第一个翻译结果更符合英语的表达习惯,翻译的质量更高。遗憾的是,对于有明显差异的两个译文,公式\ref{eq:5-7}计算得到的函数$g(\cdot)$的值却是一样的。
%----------------------------------------------
\begin{figure}[htp]
......@@ -392,24 +392,24 @@ g(\vectorn{s},\vectorn{t}) = \prod_{(j,i)\in \widehat{A}}\funp{P}(s_j,t_i)
\end{figure}
%----------------------------------------------
\parinterval 如何在$g(\vectorn{s},\vectorn{t})$引入词序信息呢?理想情况下,函数$g(\vectorn{s},\vectorn{t})$对符合自然语言表达习惯的翻译结果给出更高的分数,对于不符合的或不通顺的句子给出更低的分数。这里很自然想到使用语言模型,因为语言模型可以度量一个句子出现的可能性。流畅的句子语言模型得分越高,反之越低。
\parinterval 如何在$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$引入词序信息呢?理想情况下,函数$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$对符合自然语言表达习惯的翻译结果给出更高的分数,对于不符合的或不通顺的句子给出更低的分数。这里很自然想到使用语言模型,因为语言模型可以度量一个句子出现的可能性。流畅的句子语言模型得分越高,反之越低。
\parinterval 这里可以使用{\chaptertwo}介绍的$n$-gram语言模型,它也是统计机器翻译中确保流畅翻译结果的重要手段之一。$n$-gram语言模型用概率化方法描述了句子的生成过程。以2-gram语言模型为例,可以使用如下公式计算一个词串的概率:
\begin{eqnarray}
\funp{P}_{\textrm{lm}}(\vectorn{t}) & = & \funp{P}_{\textrm{lm}}(t_1...t_l) \nonumber \\
\funp{P}_{\textrm{lm}}(\vectorn{\emph{t}}) & = & \funp{P}_{\textrm{lm}}(t_1...t_l) \nonumber \\
& = & \funp{P}(t_1)\times \funp{P}(t_2|t_1)\times \funp{P}(t_3|t_2)\times ... \times \funp{P}(t_l|t_{l-1})
\label{eq:5-9}
\end{eqnarray}
\noindent 其中,$\vectorn{t}=t_1...t_l$表示由$l$个单词组成的句子,$\funp{P}_{\textrm{lm}}(\vectorn{t})$表示语言模型给句子$\vectorn{t}$的打分。具体而言,$\funp{P}_{\textrm{lm}}(\vectorn{t})$被定义为$\funp{P}(t_i|t_{i-1})(i=1,2,...,l)$的连乘\footnote{为了确保数学表达的准确性,这书中定义$\funp{P}(t_1|t_0) \equiv \funp{P}(t_1)$},其中$\funp{P}(t_i|t_{i-1})(i=1,2,...,l)$表示前面一个单词为$t_{i-1}$时,当前单词为$t_i$的概率。语言模型的训练方法可以参看{\chaptertwo}相关内容。
\noindent 其中,$\vectorn{\emph{t}}=t_1...t_l$表示由$l$个单词组成的句子,$\funp{P}_{\textrm{lm}}(\vectorn{\emph{t}})$表示语言模型给句子$\vectorn{\emph{t}}$的打分。具体而言,$\funp{P}_{\textrm{lm}}(\vectorn{\emph{t}})$被定义为$\funp{P}(t_i|t_{i-1})(i=1,2,...,l)$的连乘\footnote{为了确保数学表达的准确性,这书中定义$\funp{P}(t_1|t_0) \equiv \funp{P}(t_1)$},其中$\funp{P}(t_i|t_{i-1})(i=1,2,...,l)$表示前面一个单词为$t_{i-1}$时,当前单词为$t_i$的概率。语言模型的训练方法可以参看{\chaptertwo}相关内容。
\parinterval 回到建模问题上来。既然语言模型可以帮助系统度量每个译文的流畅度,那么可以使用它对翻译进行打分。一种简单的方法是把语言模型$\funp{P}_{\textrm{lm}}{(\vectorn{t})}$ 和公式\ref{eq:5-7}中的$g(\vectorn{s},\vectorn{t})$相乘,这样就得到了一个新的$g(\vectorn{s},\vectorn{t})$,它同时考虑了翻译准确性($\prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}$)和流畅度($\funp{P}_{\textrm{lm}}(\vectorn{t})$):
\parinterval 回到建模问题上来。既然语言模型可以帮助系统度量每个译文的流畅度,那么可以使用它对翻译进行打分。一种简单的方法是把语言模型$\funp{P}_{\textrm{lm}}{(\vectorn{\emph{t}})}$ 和公式\ref{eq:5-7}中的$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$相乘,这样就得到了一个新的$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$,它同时考虑了翻译准确性($\prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}$)和流畅度($\funp{P}_{\textrm{lm}}(\vectorn{\emph{t}})$):
\begin{eqnarray}
g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)} \times \funp{P}_{\textrm{lm}}(\vectorn{t})
g(\vectorn{\emph{s}},\vectorn{\emph{t}}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)} \times \funp{P}_{\textrm{lm}}(\vectorn{\emph{t}})
\label{eq:5-10}
\end{eqnarray}
\parinterval 如图\ref{fig:5-9}所示,语言模型$\funp{P}_{\textrm{lm}}(\vectorn{t})$分别给$\vectorn{t}^{'}$$\vectorn{t}^{''}$赋予0.0107和0.0009的概率,这表明句子$\vectorn{t}^{'}$更符合英文的表达,这与期望是相吻合的。它们再分别乘以$\prod_{j,i \in \widehat{A}}{\funp{P}(s_j},t_i)$的值,就得到公式\ref{eq:5-10}定义的函数$g(\cdot)$的值。显然句子$\vectorn{t}^{'}$的分数更高。至此,完成了对函数$g(\vectorn{s},\vectorn{t})$的一个简单定义,把它带入公式\ref{eq:5-6}就得到了同时考虑准确性和流畅性的句子级统计翻译模型。
\parinterval 如图\ref{fig:5-9}所示,语言模型$\funp{P}_{\textrm{lm}}(\vectorn{\emph{t}})$分别给$\vectorn{\emph{t}}^{'}$$\vectorn{\emph{t}}^{''}$赋予0.0107和0.0009的概率,这表明句子$\vectorn{\emph{t}}^{'}$更符合英文的表达,这与期望是相吻合的。它们再分别乘以$\prod_{j,i \in \widehat{A}}{\funp{P}(s_j},t_i)$的值,就得到公式\ref{eq:5-10}定义的函数$g(\cdot)$的值。显然句子$\vectorn{\emph{t}}^{'}$的分数更高。至此,完成了对函数$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$的一个简单定义,把它带入公式\ref{eq:5-6}就得到了同时考虑准确性和流畅性的句子级统计翻译模型。
%----------------------------------------------
\begin{figure}[htp]
......@@ -428,25 +428,25 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\subsection{解码}
\label{sec:simple-decoding}
\parinterval {\small\sffamily\bfseries{解码}}\index{解码}(Decoding)\index{Decoding}是指在得到翻译模型后,对于新输入的句子生成最佳译文的过程。具体来说,当给定任意的源语言句子$\vectorn{s}$,解码系统要找到翻译概率最大的目标语译文$\hat{\vectorn{t}}$。这个过程可以被形式化描述为:
\parinterval {\small\sffamily\bfseries{解码}}\index{解码}(Decoding)\index{Decoding}是指在得到翻译模型后,对于新输入的句子生成最佳译文的过程。具体来说,当给定任意的源语言句子$\vectorn{\emph{s}}$,解码系统要找到翻译概率最大的目标语译文$\hat{\vectorn{\emph{t}}}$。这个过程可以被形式化描述为:
\begin{eqnarray}
\widehat{\vectorn{t}}=\argmax_{\vectorn{t}} \funp{P}(\vectorn{t}|\vectorn{s})
\widehat{\vectorn{\emph{t}}}=\argmax_{\vectorn{\emph{t}}} \funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})
\label{eq:5-11}
\end{eqnarray}
\noindent 其中$\argmax_{\vectorn{t}} \funp{P}(\vectorn{t}|\vectorn{s})$表示找到使$\funp{P}(\vectorn{t}|\vectorn{s})$达到最大时的译文$\vectorn{t}$。结合上一小节中关于$\funp{P}(\vectorn{t}|\vectorn{s})$的定义,把公式\ref{eq:5-6}带入公式\ref{eq:5-11}得到:
\noindent 其中$\argmax_{\vectorn{\emph{t}}} \funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$表示找到使$\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$达到最大时的译文$\vectorn{\emph{t}}$。结合上一小节中关于$\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$的定义,把公式\ref{eq:5-6}带入公式\ref{eq:5-11}得到:
\begin{eqnarray}
\widehat{\vectorn{t}}=\argmax_{\vectorn{t}}\frac{g(\vectorn{s},\vectorn{t})}{\sum_{\vectorn{t}^{'}g(\vectorn{s},\vectorn{t}^{'})}}
\widehat{\vectorn{\emph{t}}}=\argmax_{\vectorn{\emph{t}}}\frac{g(\vectorn{\emph{s}},\vectorn{\emph{t}})}{\sum_{\vectorn{\emph{t}}^{'}g(\vectorn{\emph{s}},\vectorn{\emph{t}}^{'})}}
\label{eq:5-12}
\end{eqnarray}
\parinterval 在公式\ref{eq:5-12}中,可以发现${\sum_{\vectorn{t}^{'}g(\vectorn{s},\vectorn{t}^{'})}}$是一个关于$\vectorn{s}$的函数,当给定源语句$\vectorn{s}$时,它是一个常数,而且$g(\cdot) \ge 0$,因此${\sum_{\vectorn{t}^{'}g(\vectorn{s},\vectorn{t}^{'})}}$不影响对$\widehat{\vectorn{t}}$的求解,也不需要计算。基于此,公式\ref{eq:5-12}可以被化简为:
\parinterval 在公式\ref{eq:5-12}中,可以发现${\sum_{\vectorn{\emph{t}}^{'}g(\vectorn{\emph{s}},\vectorn{\emph{t}}^{'})}}$是一个关于$\vectorn{\emph{s}}$的函数,当给定源语句$\vectorn{\emph{s}}$时,它是一个常数,而且$g(\cdot) \ge 0$,因此${\sum_{\vectorn{\emph{t}}^{'}g(\vectorn{\emph{s}},\vectorn{\emph{t}}^{'})}}$不影响对$\widehat{\vectorn{\emph{t}}}$的求解,也不需要计算。基于此,公式\ref{eq:5-12}可以被化简为:
\begin{eqnarray}
\widehat{\vectorn{t}}=\argmax_{\vectorn{t}}g(\vectorn{s},\vectorn{t})
\widehat{\vectorn{\emph{t}}}=\argmax_{\vectorn{\emph{t}}}g(\vectorn{\emph{s}},\vectorn{\emph{t}})
\label{eq:5-13}
\end{eqnarray}
\parinterval 公式\ref{eq:5-13}定义了解码的目标,剩下的问题是实现$\argmax$,以快速准确的找到最佳译文$\widehat{\vectorn{t}}$。但是,简单遍历所有可能的译文并计算$g(\vectorn{s},\vectorn{t})$ 的值是不可行的,因为所有潜在译文构成的搜索空间是十分巨大的。为了理解机器翻译的搜索空间的规模,假设源语言句子$\vectorn{s}$$m$个词,每个词有$n$个可能的翻译候选。如果从左到右一步步翻译每个源语言单词,那么简单的顺序翻译会有$n^m$种组合。如果进一步考虑目标语单词的任意调序,每一种对翻译候选进行选择的结果又会对应$m!$种不同的排序。因此,源语句子$\vectorn{s}$至少有$n^m \cdot m!$ 个不同的译文。
\parinterval 公式\ref{eq:5-13}定义了解码的目标,剩下的问题是实现$\argmax$,以快速准确的找到最佳译文$\widehat{\vectorn{\emph{t}}}$。但是,简单遍历所有可能的译文并计算$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$ 的值是不可行的,因为所有潜在译文构成的搜索空间是十分巨大的。为了理解机器翻译的搜索空间的规模,假设源语言句子$\vectorn{\emph{s}}$$m$个词,每个词有$n$个可能的翻译候选。如果从左到右一步步翻译每个源语言单词,那么简单的顺序翻译会有$n^m$种组合。如果进一步考虑目标语单词的任意调序,每一种对翻译候选进行选择的结果又会对应$m!$种不同的排序。因此,源语句子$\vectorn{\emph{s}}$至少有$n^m \cdot m!$ 个不同的译文。
\parinterval $n^{m}\cdot m!$是什么样的概念呢?如表\ref{tab:5-2}所示,当$m$$n$分别为2和10时,译文只有200个,不算多。但是当$m$$n$分别为20和10时,即源语言句子的长度20,每个词有10个候选译文,系统会面对$2.4329 \times 10^{38}$个不同的译文,这几乎是不可计算的。
......@@ -517,7 +517,7 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\parinterval\ref{sec:simple-mt-example}节中,我们实现了一个简单的基于词的统计机器翻译模型,内容涉及建模、训练和解码。但是,还有很多问题还没有进行深入讨论,比如,如何处理空翻译?如何对调序问题进行建模?如何用更严密的数学模型描述翻译过程?如何对更加复杂的统计模型进行训练?等等。针对以上问题,本节将系统的介绍IBM统计机器翻译模型。作为经典的机器翻译模型,对IBM模型的学习将将有助于对自然语言处理问题的建立系统化建模思想,特别是对问题的数学描述方法将会成为理解本书后续内容的基础工具。
\parinterval 首先,重新思考一下人类进行翻译的过程。对于给定的源语句$\vectorn{s}$,人不会像计算机一样尝试很多的可能,而是快速准确的翻译出一个或者少数几个正确的译文。在人看来,除了正确的译文外,其他的翻译都是不正确的,或者说除了少数的译文人甚至都不会考虑太多其他的可能性。但是,在统计机器翻译的世界里,没有译文是不可能的。换句话说,对于源语言句子$\vectorn{s}$,所有目标语词串$\vectorn{t}$都是可能的译文,只是可能性大小不同。这个思想可以通过统计模型实现:每对$(\vectorn{s},\vectorn{t})$都有一个概率值$\funp{P}(\vectorn{t}|\vectorn{s})$来描述$\vectorn{s}$翻译为$\vectorn{t}$ 的好与坏(图\ref{fig:5-12})。
\parinterval 首先,重新思考一下人类进行翻译的过程。对于给定的源语句$\vectorn{\emph{s}}$,人不会像计算机一样尝试很多的可能,而是快速准确的翻译出一个或者少数几个正确的译文。在人看来,除了正确的译文外,其他的翻译都是不正确的,或者说除了少数的译文人甚至都不会考虑太多其他的可能性。但是,在统计机器翻译的世界里,没有译文是不可能的。换句话说,对于源语言句子$\vectorn{\emph{s}}$,所有目标语词串$\vectorn{\emph{t}}$都是可能的译文,只是可能性大小不同。这个思想可以通过统计模型实现:每对$(\vectorn{\emph{s}},\vectorn{\emph{t}})$都有一个概率值$\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$来描述$\vectorn{\emph{s}}$翻译为$\vectorn{\emph{t}}$ 的好与坏(图\ref{fig:5-12})。
%----------------------------------------------
\begin{figure}[htp]
......@@ -531,7 +531,7 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\vspace{-0.5em}
\parinterval IBM模型也是建立在如上统计模型之上。具体来说,IBM模型的基础是{\small\sffamily\bfseries{噪声信道模型}}\index{噪声信道模型}(Noise Channel Model)\index{Noise Channel Model},它是由Shannon在上世纪40年代末提出来的\cite{shannon1949communication},并于上世纪80年代应用在语言识别领域,后来又被Brown等人用于统计机器翻译中\cite{brown1990statistical,DBLP:journals/coling/BrownPPM94}
\parinterval 在噪声信道模型中,源语言句子$\vectorn{s}$(信宿)被看作是由目标语言句子$\vectorn{t}$(信源)经过一个有噪声的信道得到的。如果知道了$\vectorn{s}$和信道的性质,可以通过$\funp{P}(\vectorn{t}|\vectorn{s})$得到信源的信息,这个过程如图\ref{fig:5-13}所示。
\parinterval 在噪声信道模型中,源语言句子$\vectorn{\emph{s}}$(信宿)被看作是由目标语言句子$\vectorn{\emph{t}}$(信源)经过一个有噪声的信道得到的。如果知道了$\vectorn{\emph{s}}$和信道的性质,可以通过$\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$得到信源的信息,这个过程如图\ref{fig:5-13}所示。
%----------------------------------------------
\begin{figure}[htp]
......@@ -542,43 +542,43 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\end{figure}
%----------------------------------------------
\parinterval 举个例子,对于汉译英的翻译任务,汉语句子$\vectorn{s}$可以被看作是英语句子$\vectorn{t}$加入噪声通过信道后得到的结果。换句话说,英语句子经过噪声-信道传输时发生了变化,在信道的输出端呈现为汉语句子。于是需要根据观察到的汉语特征,通过概率$\funp{P}(\vectorn{t}|\vectorn{s})$猜测最为可能的英语句子。这个找到最可能的目标语句(信源)的过程也被称为
{\small\sffamily\bfseries{解码}}(Decoding)。直到今天,解码这个概念也被广泛的使用在机器翻译及相关任务中。这个过程也可以表述为:给定输入$\vectorn{s}$,找到最可能的输出$\vectorn{t}$,使得$\funp{P}(\vectorn{t}|\vectorn{s})$达到最大:
\parinterval 举个例子,对于汉译英的翻译任务,汉语句子$\vectorn{\emph{s}}$可以被看作是英语句子$\vectorn{\emph{t}}$加入噪声通过信道后得到的结果。换句话说,英语句子经过噪声-信道传输时发生了变化,在信道的输出端呈现为汉语句子。于是需要根据观察到的汉语特征,通过概率$\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$猜测最为可能的英语句子。这个找到最可能的目标语句(信源)的过程也被称为
{\small\sffamily\bfseries{解码}}(Decoding)。直到今天,解码这个概念也被广泛的使用在机器翻译及相关任务中。这个过程也可以表述为:给定输入$\vectorn{\emph{s}}$,找到最可能的输出$\vectorn{\emph{t}}$,使得$\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$达到最大:
\begin{eqnarray}
\widehat{\vectorn{t}}=\argmax_{\vectorn{t}}\funp{P}(\vectorn{t}|\vectorn{s})
\widehat{\vectorn{\emph{t}}}=\argmax_{\vectorn{\emph{t}}}\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})
\label{eq:5-14}
\end{eqnarray}
\parinterval 公式\ref{eq:5-14}的核心内容之一是定义$\funp{P}(\vectorn{t}|\vectorn{s})$。在IBM模型中,可以使用贝叶斯准则对$\funp{P}(\vectorn{t}|\vectorn{s})$进行如下变换:
\parinterval 公式\ref{eq:5-14}的核心内容之一是定义$\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$。在IBM模型中,可以使用贝叶斯准则对$\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$进行如下变换:
\begin{eqnarray}
\funp{P}(\vectorn{t}|\vectorn{s}) & = &\frac{\funp{P}(\vectorn{s},\vectorn{t})}{\funp{P}(\vectorn{s})} \nonumber \\
& = & \frac{\funp{P}(\vectorn{s}|\vectorn{t})\funp{P}(\vectorn{t})}{\funp{P}(\vectorn{s})}
\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}}) & = &\frac{\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{t}})}{\funp{P}(\vectorn{\emph{s}})} \nonumber \\
& = & \frac{\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})\funp{P}(\vectorn{\emph{t}})}{\funp{P}(\vectorn{\emph{s}})}
\label{eq:5-15}
\end{eqnarray}
\parinterval 公式\ref{eq:5-15}$\vectorn{s}$$\vectorn{t}$的翻译概率转化为$\frac{\funp{P}(\vectorn{s}|\vectorn{t})\textrm{P(t)}}{\funp{P}(\vectorn{s})}$,它包括三个部分:
\parinterval 公式\ref{eq:5-15}$\vectorn{\emph{s}}$$\vectorn{\emph{t}}$的翻译概率转化为$\frac{\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})\textrm{P(t)}}{\funp{P}(\vectorn{\emph{s}})}$,它包括三个部分:
\begin{itemize}
\vspace{0.5em}
\item 第一部分是由译文$\vectorn{t}$到源语言句子$\vectorn{s}$的翻译概率$\funp{P}(\vectorn{s}|\vectorn{t})$,也被称为翻译模型。它表示给定目标语句$\vectorn{t}$生成源语句$\vectorn{s}$的概率。需要注意是翻译的方向已经从$\funp{P}(\vectorn{t}|\vectorn{s})$转向了$\funp{P}(\vectorn{s}|\vectorn{t})$,但无须刻意的区分,可以简单地理解为翻译模型刻画了$\vectorn{s}$$\vectorn{t}$的翻译对应程度;
\item 第一部分是由译文$\vectorn{\emph{t}}$到源语言句子$\vectorn{\emph{s}}$的翻译概率$\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$,也被称为翻译模型。它表示给定目标语句$\vectorn{\emph{t}}$生成源语句$\vectorn{\emph{s}}$的概率。需要注意是翻译的方向已经从$\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$转向了$\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$,但无须刻意的区分,可以简单地理解为翻译模型刻画了$\vectorn{\emph{s}}$$\vectorn{\emph{t}}$的翻译对应程度;
\vspace{0.5em}
\item 第二部分是$\funp{P}(\vectorn{t})$,也被称为语言模型。它表示的是目标语言句子$\vectorn{t}$出现的可能性;
\item 第二部分是$\funp{P}(\vectorn{\emph{t}})$,也被称为语言模型。它表示的是目标语言句子$\vectorn{\emph{t}}$出现的可能性;
\vspace{0.5em}
\item 第三部分是$\funp{P}(\vectorn{s})$,表示源语言句子$\vectorn{s}$出现的可能性。因为$\vectorn{s}$是输入的不变量,而且$\funp{P}(\vectorn{s}) > 0$,所以省略分母部分$\funp{P}(\vectorn{s})$ 不会影响$\frac{\funp{P}(\vectorn{s}|\vectorn{t})\funp{P}(\vectorn{t})}{\funp{P}(\vectorn{s})}$最大值的求解。
\item 第三部分是$\funp{P}(\vectorn{\emph{s}})$,表示源语言句子$\vectorn{\emph{s}}$出现的可能性。因为$\vectorn{\emph{s}}$是输入的不变量,而且$\funp{P}(\vectorn{\emph{s}}) > 0$,所以省略分母部分$\funp{P}(\vectorn{\emph{s}})$ 不会影响$\frac{\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})\funp{P}(\vectorn{\emph{t}})}{\funp{P}(\vectorn{\emph{s}})}$最大值的求解。
\vspace{0.5em}
\end{itemize}
于是,机器翻译的目标可以被重新定义为:给定源语言句子$\vectorn{s}$,寻找这样的目标语言译文$\vectorn{t}$,它使得翻译模型$\funp{P}(\vectorn{s}|\vectorn{t})$和语言模型$\funp{P}(\vectorn{t})$乘积最大:
于是,机器翻译的目标可以被重新定义为:给定源语言句子$\vectorn{\emph{s}}$,寻找这样的目标语言译文$\vectorn{\emph{t}}$,它使得翻译模型$\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$和语言模型$\funp{P}(\vectorn{\emph{t}})$乘积最大:
\begin{eqnarray}
\widehat{\vectorn{t}} & = & \argmax_{\vectorn{t}} \funp{P}(\vectorn{t}|\vectorn{s}) \nonumber \\
& = & \argmax_{\vectorn{t}} \frac{\funp{P}(\vectorn{s}|\vectorn{t})\funp{P}(\vectorn{t})}{\funp{P}(\vectorn{s})} \nonumber \\
& = & \argmax_{\vectorn{t}} \funp{P}(\vectorn{s}|\vectorn{t})\funp{P}(\vectorn{t})
\widehat{\vectorn{\emph{t}}} & = & \argmax_{\vectorn{\emph{t}}} \funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}}) \nonumber \\
& = & \argmax_{\vectorn{\emph{t}}} \frac{\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})\funp{P}(\vectorn{\emph{t}})}{\funp{P}(\vectorn{\emph{s}})} \nonumber \\
& = & \argmax_{\vectorn{\emph{t}}} \funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})\funp{P}(\vectorn{\emph{t}})
\label{eq:5-16}
\end{eqnarray}
\parinterval 公式\ref{eq:5-16}展示了IBM模型最基础的建模方式,它把模型分解为两项:(反向)翻译模型$\funp{P}(\vectorn{s}|\vectorn{t})$和语言模型$\funp{P}(\vectorn{t})$。一个很自然的问题是:直接用$\funp{P}(\vectorn{t}|\vectorn{s})$定义翻译问题不就可以了吗,为什么要用$\funp{P}(\vectorn{s}|\vectorn{t})$$\funp{P}(\vectorn{t})$的联合模型?从理论上来说,正向翻译模型$\funp{P}(\vectorn{t}|\vectorn{s})$和反向翻译模型$\funp{P}(\vectorn{s}|\vectorn{t})$的数学建模可以是一样的,因为我们只需要在建模的过程中把两个语言调换即可。使用$\funp{P}(\vectorn{s}|\vectorn{t})$$\funp{P}(\vectorn{t})$的联合模型的意义在于引入了语言模型,它可以很好的对译文的流畅度进行评价,确保结果是通顺的目标语言句子。
\parinterval 公式\ref{eq:5-16}展示了IBM模型最基础的建模方式,它把模型分解为两项:(反向)翻译模型$\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$和语言模型$\funp{P}(\vectorn{\emph{t}})$。一个很自然的问题是:直接用$\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$定义翻译问题不就可以了吗,为什么要用$\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$$\funp{P}(\vectorn{\emph{t}})$的联合模型?从理论上来说,正向翻译模型$\funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$和反向翻译模型$\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$的数学建模可以是一样的,因为我们只需要在建模的过程中把两个语言调换即可。使用$\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$$\funp{P}(\vectorn{\emph{t}})$的联合模型的意义在于引入了语言模型,它可以很好的对译文的流畅度进行评价,确保结果是通顺的目标语言句子。
\parinterval 可以回忆一下\ref{sec:sentence-level-translation}节中讨论的问题,如果只使用翻译模型可能会造成一个局面:译文的单词都和源语言单词对应的很好,但是由于语序的问题,读起来却不像人说的话。从这个角度说,引入语言模型是十分必要的。这个问题在Brown等人的论文中也有讨论\cite{DBLP:journals/coling/BrownPPM94},他们提到单纯使用$\funp{P}(\vectorn{s}|\vectorn{t})$会把概率分配给一些翻译对应比较好但是不合法的目标语句子,而且这部分概率可能会很大,影响模型的决策。这也正体现了IBM模型的创新之处,作者用数学技巧把$\funp{P}(\vectorn{t})$引入进来,保证了系统的输出是通顺的译文。语言模型也被广泛使用在语音识别等领域以保证结果的流畅性,甚至应用的历史比机器翻译要长得多,这里的方法也有借鉴相关工作的味道。
\parinterval 可以回忆一下\ref{sec:sentence-level-translation}节中讨论的问题,如果只使用翻译模型可能会造成一个局面:译文的单词都和源语言单词对应的很好,但是由于语序的问题,读起来却不像人说的话。从这个角度说,引入语言模型是十分必要的。这个问题在Brown等人的论文中也有讨论\cite{DBLP:journals/coling/BrownPPM94},他们提到单纯使用$\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$会把概率分配给一些翻译对应比较好但是不合法的目标语句子,而且这部分概率可能会很大,影响模型的决策。这也正体现了IBM模型的创新之处,作者用数学技巧把$\funp{P}(\vectorn{\emph{t}})$引入进来,保证了系统的输出是通顺的译文。语言模型也被广泛使用在语音识别等领域以保证结果的流畅性,甚至应用的历史比机器翻译要长得多,这里的方法也有借鉴相关工作的味道。
实际上,在机器翻译中引入语言模型是一个很深刻的概念。在IBM模型之后相当长的时间里,语言模型一直是机器翻译各个部件中最重要的部分。对译文连贯性的建模也是所有系统中需要包含的内容(即使隐形体现)。
......@@ -592,15 +592,15 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\begin{itemize}
\vspace{0.5em}
\item {\small\sffamily\bfseries{建模}}(Modeling):如何建立$\funp{P}(\vectorn{s}|\vectorn{t})$$\funp{P}(\vectorn{t})$的数学模型。换句话说,需要用可计算的方式对翻译问题和语言建模问题进行描述,这也是最核心的问题。
\item {\small\sffamily\bfseries{建模}}(Modeling):如何建立$\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$$\funp{P}(\vectorn{\emph{t}})$的数学模型。换句话说,需要用可计算的方式对翻译问题和语言建模问题进行描述,这也是最核心的问题。
\vspace{0.5em}
\item {\small\sffamily\bfseries{训练}}(Training):如何获得$\funp{P}(\vectorn{s}|\vectorn{t})$$\funp{P}(\vectorn{t})$所需的参数。即从数据中得到模型的最优参数。
\item {\small\sffamily\bfseries{训练}}(Training):如何获得$\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$$\funp{P}(\vectorn{\emph{t}})$所需的参数。即从数据中得到模型的最优参数。
\vspace{0.5em}
\item {\small\sffamily\bfseries{解码}}(Decoding):如何完成搜索最优解的过程。即完成$\argmax$
\vspace{0.5em}
\end{itemize}
\parinterval 为了理解以上的问题,可以先回忆一下\ref{sec:sentence-level-translation}小节中的公式\ref{eq:5-10},即$g(\vectorn{s},\vectorn{t})$函数的定义,它用于评估一个译文的好与坏。如图\ref{fig:5-14}所示,$g(\vectorn{s},\vectorn{t})$函数与公式\ref{eq:5-16}的建模方式非常一致,即$g(\vectorn{s},\vectorn{t})$函数中红色部分描述译文$\vectorn{t}$的可能性大小,对应翻译模型$\funp{P}(\vectorn{s}|\vectorn{t})$;蓝色部分描述译文的平滑或流畅程度,对应语言模型$\funp{P}(\vectorn{t})$。尽管这种对应并不十分严格的,但也可以看出在处理机器翻译问题上,很多想法的本质是一样的。
\parinterval 为了理解以上的问题,可以先回忆一下\ref{sec:sentence-level-translation}小节中的公式\ref{eq:5-10},即$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$函数的定义,它用于评估一个译文的好与坏。如图\ref{fig:5-14}所示,$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$函数与公式\ref{eq:5-16}的建模方式非常一致,即$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$函数中红色部分描述译文$\vectorn{\emph{t}}$的可能性大小,对应翻译模型$\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$;蓝色部分描述译文的平滑或流畅程度,对应语言模型$\funp{P}(\vectorn{\emph{t}})$。尽管这种对应并不十分严格的,但也可以看出在处理机器翻译问题上,很多想法的本质是一样的。
%----------------------------------------------
\begin{figure}[htp]
......@@ -611,7 +611,7 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\end{figure}
%----------------------------------------------
\parinterval$g(\vectorn{s},\vectorn{t})$函数的建模很粗糙,因此下面将介绍的IBM模型对问题有着更严谨的定义与建模。对于语言模型$\funp{P}(\vectorn{t})$和解码过程在前面的内容中都有介绍,所以本章的后半部分会重点介绍如何定义翻译模型$\funp{P}(\vectorn{s}|\vectorn{t})$以及如何训练模型参数。
\parinterval$g(\vectorn{\emph{s}},\vectorn{\emph{t}})$函数的建模很粗糙,因此下面将介绍的IBM模型对问题有着更严谨的定义与建模。对于语言模型$\funp{P}(\vectorn{\emph{t}})$和解码过程在前面的内容中都有介绍,所以本章的后半部分会重点介绍如何定义翻译模型$\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$以及如何训练模型参数。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -619,7 +619,7 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\subsection{词对齐}
\parinterval IBM模型的一个基本的假设是词对齐假设。{\small\sffamily\bfseries{词对齐}}\index{词对齐}(Word Alignment)\index{Word Alignment}描述了源语言句子和目标语句子之间单词级别的对应。具体来说,给定源语句子$\vectorn{s}=s_1...s_m$和目标语译文$\vectorn{t}=t_1...t_l$,IBM模型假设词对齐具有如下两个性质。
\parinterval IBM模型的一个基本的假设是词对齐假设。{\small\sffamily\bfseries{词对齐}}\index{词对齐}(Word Alignment)\index{Word Alignment}描述了源语言句子和目标语句子之间单词级别的对应。具体来说,给定源语句子$\vectorn{\emph{s}}=s_1...s_m$和目标语译文$\vectorn{\emph{t}}=t_1...t_l$,IBM模型假设词对齐具有如下两个性质。
\begin{itemize}
\vspace{0.5em}
......@@ -648,7 +648,7 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
%----------------------------------------------
\end{itemize}
\parinterval 通常,把词对齐记为$\vectorn{a}$,它由$a_1$$a_m$$m$个词对齐连接组成,即$\vectorn{a}=a_1...a_m$$a_j$表示第$j$个源语单词$s_j$对应的目标语单词的位置。在图\ref{fig:5-16}的例子中,词对齐关系可以记为$a_1=0, a_2=3, a_3=1$,即第1个源语单词``在''对应到目标语译文的第0个位置,第2个源语单词``桌子''对应到目标语译文的第3个位置,第3个源语单词``上''对应到目标语译文的第1个位置。
\parinterval 通常,把词对齐记为$\vectorn{\emph{a}}$,它由$a_1$$a_m$$m$个词对齐连接组成,即$\vectorn{\emph{a}}=a_1...a_m$$a_j$表示第$j$个源语单词$s_j$对应的目标语单词的位置。在图\ref{fig:5-16}的例子中,词对齐关系可以记为$a_1=0, a_2=3, a_3=1$,即第1个源语单词``在''对应到目标语译文的第0个位置,第2个源语单词``桌子''对应到目标语译文的第3个位置,第3个源语单词``上''对应到目标语译文的第1个位置。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -656,16 +656,16 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\subsection{基于词对齐的翻译模型}
\parinterval 直接准确估计$\funp{P}(\vectorn{s}|\vectorn{t})$很难,训练数据只能覆盖整个样本空间非常小的一部分,绝大多数句子在训练数据中一次也没出现过。为了解决这个问题,IBM模型假设:句子之间的对应可以由单词之间的对应进行表示。于是,翻译句子的概率可以被转化为词对齐生成的概率:
\parinterval 直接准确估计$\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$很难,训练数据只能覆盖整个样本空间非常小的一部分,绝大多数句子在训练数据中一次也没出现过。为了解决这个问题,IBM模型假设:句子之间的对应可以由单词之间的对应进行表示。于是,翻译句子的概率可以被转化为词对齐生成的概率:
\begin{eqnarray}
\funp{P}(\vectorn{s}|\vectorn{t})= \sum_{\vectorn{a}}\funp{P}(\vectorn{s},\vectorn{a}|\vectorn{t})
\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})= \sum_{\vectorn{\emph{a}}}\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}|\vectorn{\emph{t}})
\label{eq:5-17}
\end{eqnarray}
\parinterval 公式\ref{eq:5-17}使用了简单的全概率公式把$\funp{P}(\vectorn{s}|\vectorn{t})$进行展开。通过访问$\vectorn{s}$$\vectorn{t}$之间所有可能的词对齐$\vectorn{a}$,并把对应的对齐概率进行求和,得到了$\vectorn{t}$$\vectorn{s}$的翻译概率。这里,可以把词对齐看作翻译的隐含变量,这样从$\vectorn{t}$$\vectorn{s}$的生成就变为从$\vectorn{t}$同时生成$\vectorn{s}$和隐含变量$\vectorn{a}$的问题。引入隐含变量是生成式模型常用的手段,通过使用隐含变量,可以把较为困难的端到端学习问题转化为分步学习问题。
\parinterval 公式\ref{eq:5-17}使用了简单的全概率公式把$\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$进行展开。通过访问$\vectorn{\emph{s}}$$\vectorn{\emph{t}}$之间所有可能的词对齐$\vectorn{\emph{a}}$,并把对应的对齐概率进行求和,得到了$\vectorn{\emph{t}}$$\vectorn{\emph{s}}$的翻译概率。这里,可以把词对齐看作翻译的隐含变量,这样从$\vectorn{\emph{t}}$$\vectorn{\emph{s}}$的生成就变为从$\vectorn{\emph{t}}$同时生成$\vectorn{\emph{s}}$和隐含变量$\vectorn{\emph{a}}$的问题。引入隐含变量是生成式模型常用的手段,通过使用隐含变量,可以把较为困难的端到端学习问题转化为分步学习问题。
\parinterval 举个例子说明公式\ref{eq:5-17}的实际意义。如图\ref{fig:5-17}所示,可以把从``谢谢\ 你''到``thank you''的翻译分解为9种可能的词对齐。因为源语言句子$\vectorn{s}$有2个词,目标语言句子$\vectorn{t}$加上空标记$t_0$共3个词,因此每个源语言单词有3个可能对齐的位置,整个句子共有$3\times3=9$种可能的词对齐。
\parinterval 举个例子说明公式\ref{eq:5-17}的实际意义。如图\ref{fig:5-17}所示,可以把从``谢谢\ 你''到``thank you''的翻译分解为9种可能的词对齐。因为源语言句子$\vectorn{\emph{s}}$有2个词,目标语言句子$\vectorn{\emph{t}}$加上空标记$t_0$共3个词,因此每个源语言单词有3个可能对齐的位置,整个句子共有$3\times3=9$种可能的词对齐。
%----------------------------------------------
\begin{figure}[htp]
......@@ -676,26 +676,26 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\end{figure}
%----------------------------------------------
\parinterval 接下来的问题是如何定义$\funp{P}(\vectorn{s},\vectorn{a}|\vectorn{t})$\ \dash \ 即定义词对齐的生成概率。但是,隐含变量$\vectorn{a}$仍然很复杂,因此直接定义$\funp{P}(\vectorn{s},\vectorn{a}|\vectorn{t})$也很困难,在IBM模型中,为了化简问题,$\funp{P}(\vectorn{s},\vectorn{a}|\vectorn{t})$被进一步分解。使用链式法则,可以得到:
\parinterval 接下来的问题是如何定义$\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}|\vectorn{\emph{t}})$\ \dash \ 即定义词对齐的生成概率。但是,隐含变量$\vectorn{\emph{a}}$仍然很复杂,因此直接定义$\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}|\vectorn{\emph{t}})$也很困难,在IBM模型中,为了化简问题,$\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}|\vectorn{\emph{t}})$被进一步分解。使用链式法则,可以得到:
\begin{eqnarray}
\funp{P}(\vectorn{s},\vectorn{a}|\vectorn{t})=\funp{P}(m|\vectorn{t})\prod_{j=1}^{m}{\funp{P}(a_j|a_1^{j-1},s_1^{j-1},m,\vectorn{t})\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\vectorn{t})}
\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}|\vectorn{\emph{t}})=\funp{P}(m|\vectorn{\emph{t}})\prod_{j=1}^{m}{\funp{P}(a_j|a_1^{j-1},s_1^{j-1},m,\vectorn{\emph{t}})\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\vectorn{\emph{t}})}
\label{eq:5-18}
\end{eqnarray}
\noindent 其中$s_j$$a_j$分别表示第$j$个源语言单词及第$j$个源语言单词对齐到的目标位置,$s_1^{j-1}$表示前$j-1$个源语言单词(即$s_1^{j-1}=s_1...s_{j-1}$),$a_1^{j-1}$表示前$j-1$个源语言的词对齐(即$a_1^{j-1}=a_1...a_{j-1}$),$m$表示源语句子的长度。公式\ref{eq:5-18}$\funp{P}(\vectorn{s},\vectorn{a}|\vectorn{t})$分解为四个部分,具体含义如下:
\noindent 其中$s_j$$a_j$分别表示第$j$个源语言单词及第$j$个源语言单词对齐到的目标位置,$s_1^{j-1}$表示前$j-1$个源语言单词(即$s_1^{j-1}=s_1...s_{j-1}$),$a_1^{j-1}$表示前$j-1$个源语言的词对齐(即$a_1^{j-1}=a_1...a_{j-1}$),$m$表示源语句子的长度。公式\ref{eq:5-18}$\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}|\vectorn{\emph{t}})$分解为四个部分,具体含义如下:
\begin{itemize}
\vspace{0.5em}
\item 根据译文$\vectorn{t}$选择源文$\vectorn{s}$的长度$m$,用$\funp{P}(m|\vectorn{t})$表示;
\item 根据译文$\vectorn{\emph{t}}$选择源文$\vectorn{\emph{s}}$的长度$m$,用$\funp{P}(m|\vectorn{\emph{t}})$表示;
\vspace{0.5em}
\item 当确定源语言句子的长度$m$后,循环每个位置$j$逐次生成每个源语言单词$s_j$,也就是$\prod_{j=1}^m \cdot$计算的内容;
\vspace{0.5em}
\item 对于每个位置$j$,根据译文$\vectorn{t}$、源文长度$m$、已经生成的源语言单词$s_1^{j-1}$和对齐$a_1^{j-1}$,生成第$j$个位置的对齐结果$a_j$,用$\funp{P}(a_j|a_1^{j-1},s_1^{j-1},m,\vectorn{t})$表示;
\item 对于每个位置$j$,根据译文$\vectorn{\emph{t}}$、源文长度$m$、已经生成的源语言单词$s_1^{j-1}$和对齐$a_1^{j-1}$,生成第$j$个位置的对齐结果$a_j$,用$\funp{P}(a_j|a_1^{j-1},s_1^{j-1},m,\vectorn{\emph{t}})$表示;
\vspace{0.5em}
\item 对于每个位置$j$,根据译文$\vectorn{t}$、源文长度$m$、已经生成的源语言单词$s_1^{j-1}$和对齐$a_1^j$,生成第$j$个位置的源语言单词$s_j$,用$\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\vectorn{t})$表示。
\item 对于每个位置$j$,根据译文$\vectorn{\emph{t}}$、源文长度$m$、已经生成的源语言单词$s_1^{j-1}$和对齐$a_1^j$,生成第$j$个位置的源语言单词$s_j$,用$\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\vectorn{\emph{t}})$表示。
\vspace{0.5em}
\end{itemize}
\parinterval 换句话说,当求$\funp{P}(\vectorn{s},\vectorn{a}|\vectorn{t})$时,首先根据译文$\vectorn{t}$确定源语言句子$\vectorn{s}$的长度$m$;当知道源语言句子有多少个单词后,循环$m$次,依次生成第1个到第$m$个源语言单词;当生成第$j$个源语言单词时,要先确定它是由哪个目标语译文单词生成的,即确定生成的源语言单词对应的译文单词的位置;当知道了目标语译文单词的位置,就能确定第$j$个位置的源语言单词。
\parinterval 换句话说,当求$\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}|\vectorn{\emph{t}})$时,首先根据译文$\vectorn{\emph{t}}$确定源语言句子$\vectorn{\emph{s}}$的长度$m$;当知道源语言句子有多少个单词后,循环$m$次,依次生成第1个到第$m$个源语言单词;当生成第$j$个源语言单词时,要先确定它是由哪个目标语译文单词生成的,即确定生成的源语言单词对应的译文单词的位置;当知道了目标语译文单词的位置,就能确定第$j$个位置的源语言单词。
\parinterval 需要注意的是公式\ref{eq:5-18}定义的模型并没有做任何化简和假设,也就是说公式的左右两端是严格相等的。在后面的内容中会看到,这种将一个整体进行拆分的方法可以有助于分步骤化简并处理问题。
......@@ -705,11 +705,11 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\subsection{基于词对齐的翻译实例}
\parinterval 用前面图\ref{fig:5-16}中例子来对公式\ref{eq:5-18}进行说明。例子中,源语言句子``在\ \ 桌子\ \ 上''目标语译文``on the table''之间的词对齐为$\vectorn{a}=\{\textrm{1-0, 2-3, 3-1}\}$。公式\ref{eq:5-18}的计算过程如下:
\parinterval 用前面图\ref{fig:5-16}中例子来对公式\ref{eq:5-18}进行说明。例子中,源语言句子``在\ \ 桌子\ \ 上''目标语译文``on the table''之间的词对齐为$\vectorn{\emph{a}}=\{\textrm{1-0, 2-3, 3-1}\}$。公式\ref{eq:5-18}的计算过程如下:
\begin{itemize}
\vspace{0.5em}
\item 首先根据译文确定源文$\vectorn{s}$的单词数量($m=3$),即$\funp{P}(m=3|\textrm{``}t_0\;\textrm{on\;the\;table''})$
\item 首先根据译文确定源文$\vectorn{\emph{s}}$的单词数量($m=3$),即$\funp{P}(m=3|\textrm{``}t_0\;\textrm{on\;the\;table''})$
\vspace{0.5em}
\item 再确定源语言单词$s_1$由谁生成的且生成的是什么。可以看到$s_1$由第0个目标语单词生成的,也就是$t_0$,表示为$\funp{P}(a_1\;= 0\;\; |\phi,\phi,3,\textrm{``}t_0\;\textrm{on\;the\;table''})$,其中$\phi$表示空。当知道了$s_1$是由$t_0$生成的,就可以通过$t_0$生成源语言第一个单词``在'',即$\funp{P}(s_1\;= \textrm{`` 在''}\;|\{1-0\},\phi,3,\textrm{``$t_0$\;on\;the\;table''}) $
\vspace{0.5em}
......@@ -717,9 +717,9 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\vspace{0.5em}
\end{itemize}
\parinterval 最后得到基于词对齐$\vectorn{a}$的翻译概率为:
\parinterval 最后得到基于词对齐$\vectorn{\emph{a}}$的翻译概率为:
\begin{eqnarray}
\funp{P}(\vectorn{s},\vectorn{a}|\vectorn{t})\; &= & \funp{P}(m|\vectorn{t}) \prod\limits_{j=1}^{m} \funp{P}(a_j|a_{1}^{j-1},s_{1}^{j-1},m,\vectorn{t}) \funp{P}(s_j|a_{1}^{j},s_{1}^{j-1},m,\vectorn{t}) \nonumber \\
\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}|\vectorn{\emph{t}})\; &= & \funp{P}(m|\vectorn{\emph{t}}) \prod\limits_{j=1}^{m} \funp{P}(a_j|a_{1}^{j-1},s_{1}^{j-1},m,\vectorn{\emph{t}}) \funp{P}(s_j|a_{1}^{j},s_{1}^{j-1},m,\vectorn{\emph{t}}) \nonumber \\
&=&\funp{P}(m=3 \mid \textrm{$t_0$ on the table}){\times} \nonumber \\
&&{\funp{P}(a_1=0 \mid \phi,\phi,3,\textrm{$t_0$ on the table}){\times} } \nonumber \\
&&{\funp{P}(f_1=\textrm{} \mid \textrm{\{1-0\}},\phi,3,\textrm{$t_0$ on the table}){\times} } \nonumber \\
......@@ -740,9 +740,9 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\begin{itemize}
\vspace{0.3em}
\item 首先,公式\ref{eq:5-17}的右端($ \sum_{\vectorn{a}}\funp{P}(\vectorn{s},\vectorn{a}|\vectorn{t})$)要求对所有的词对齐概率进行求和,但是词对齐的数量随着句子长度是呈指数增长,如何遍历所有的对齐$\vectorn{a}$
\item 首先,公式\ref{eq:5-17}的右端($ \sum_{\vectorn{\emph{a}}}\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}|\vectorn{\emph{t}})$)要求对所有的词对齐概率进行求和,但是词对齐的数量随着句子长度是呈指数增长,如何遍历所有的对齐$\vectorn{\emph{a}}$
\vspace{0.3em}
\item 其次,公式\ref{eq:5-18}虽然对词对齐的问题进行了描述,但是模型中的很多参数仍然很复杂,如何计算$\funp{P}(m|\vectorn{t})$$\funp{P}(a_j|a_1^{j-1},s_1^{j-1},m,\vectorn{t})$$\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\vectorn{t})$
\item 其次,公式\ref{eq:5-18}虽然对词对齐的问题进行了描述,但是模型中的很多参数仍然很复杂,如何计算$\funp{P}(m|\vectorn{\emph{t}})$$\funp{P}(a_j|a_1^{j-1},s_1^{j-1},m,\vectorn{\emph{t}})$$\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\vectorn{\emph{t}})$
\vspace{0.3em}
\end{itemize}
......@@ -756,32 +756,32 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\parinterval IBM模型1对公式\ref{eq:5-18}中的三项进行了简化。具体方法如下:
\begin{itemize}
\item 假设$\funp{P}(m|\vectorn{t})$为常数$\varepsilon$,即源语言句子长度的生成概率服从均匀分布,如下:
\item 假设$\funp{P}(m|\vectorn{\emph{t}})$为常数$\varepsilon$,即源语言句子长度的生成概率服从均匀分布,如下:
\begin{eqnarray}
\funp{P}(m|\vectorn{t})\; \equiv \; \varepsilon
\funp{P}(m|\vectorn{\emph{t}})\; \equiv \; \varepsilon
\label{eq:5-20}
\end{eqnarray}
\item 对齐概率$\funp{P}(a_j|a_1^{j-1},s_1^{j-1},m,\vectorn{t})$仅依赖于译文长度$l$,即每个词对齐连接的生成概率也服从均匀分布。换句话说,对于任何源语言位置$j$对齐到目标语言任何位置都是等概率的。比如译文为``on the table'',再加上$t_0$共4个位置,相应的,任意源语单词对齐到这4个位置的概率是一样的。具体描述如下:
\item 对齐概率$\funp{P}(a_j|a_1^{j-1},s_1^{j-1},m,\vectorn{\emph{t}})$仅依赖于译文长度$l$,即每个词对齐连接的生成概率也服从均匀分布。换句话说,对于任何源语言位置$j$对齐到目标语言任何位置都是等概率的。比如译文为``on the table'',再加上$t_0$共4个位置,相应的,任意源语单词对齐到这4个位置的概率是一样的。具体描述如下:
\begin{eqnarray}
\funp{P}(a_j|a_1^{j-1},s_1^{j-1},m,\vectorn{t}) \equiv \frac{1}{l+1}
\funp{P}(a_j|a_1^{j-1},s_1^{j-1},m,\vectorn{\emph{t}}) \equiv \frac{1}{l+1}
\label{eq:5-21}
\end{eqnarray}
\item 源语单词$s_j$的生成概率$\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\vectorn{t})$仅依赖与其对齐的译文单词$t_{a_j}$,即词汇翻译概率$f(s_j|t_{a_j})$。此时词汇翻译概率满足$\sum_{s_j}{f(s_j|t_{a_j})}=1$。比如在图\ref{fig:5-18}表示的例子中,源语单词``上''出现的概率只和与它对齐的单词``on''有关系,与其他单词没有关系。
\item 源语单词$s_j$的生成概率$\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\vectorn{\emph{t}})$仅依赖与其对齐的译文单词$t_{a_j}$,即词汇翻译概率$f(s_j|t_{a_j})$。此时词汇翻译概率满足$\sum_{s_j}{f(s_j|t_{a_j})}=1$。比如在图\ref{fig:5-18}表示的例子中,源语单词``上''出现的概率只和与它对齐的单词``on''有关系,与其他单词没有关系。
\begin{eqnarray}
\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\vectorn{t}) \equiv f(s_j|t_{a_j})
\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\vectorn{\emph{t}}) \equiv f(s_j|t_{a_j})
\label{eq:5-22}
\end{eqnarray}
用一个简单的例子对公式\ref{eq:5-22}进行说明。比如,在图\ref{fig:5-18}中,``桌子''对齐到``table'',可被描述为$f(s_2 |t_{a_2})=f(\textrm{``桌子''}|\textrm{``table''})$,表示给定``table''翻译为``桌子''的概率。通常,$f(s_2 |t_{a_2})$被认为是一种概率词典,它反应了两种语言词汇一级的对应关系。
\end{itemize}
\parinterval 将上述三个假设和公式\ref{eq:5-18}代入公式\ref{eq:5-17}中,得到$\funp{P}(\vectorn{s}|\vectorn{t})$的表达式:
\parinterval 将上述三个假设和公式\ref{eq:5-18}代入公式\ref{eq:5-17}中,得到$\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$的表达式:
\begin{eqnarray}
\funp{P}(\vectorn{s}|\vectorn{t}) & = & \sum_{\vectorn{a}}{\funp{P}(\vectorn{s},\vectorn{a}|\vectorn{t})} \nonumber \\
& = & \sum_{\vectorn{a}}{\funp{P}(m|\vectorn{t})}\prod_{j=1}^{m}{\funp{P}(a_j|a_1^{j-1},s_1^{j-1},m,\vectorn{t})\funp{P}(s_j |a_1^j,s_1^{j-1},m,\vectorn{t})} \nonumber \\
& = & \sum_{\vectorn{a}}{\varepsilon}\prod_{j=1}^{m}{\frac{1}{l+1}f(s_j|t_{a_j})} \nonumber \\
& = & \sum_{\vectorn{a}}{\frac{\varepsilon}{(l+1)^m}}\prod_{j=1}^{m}f(s_j|t_{a_j})
\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}}) & = & \sum_{\vectorn{\emph{a}}}{\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}|\vectorn{\emph{t}})} \nonumber \\
& = & \sum_{\vectorn{\emph{a}}}{\funp{P}(m|\vectorn{\emph{t}})}\prod_{j=1}^{m}{\funp{P}(a_j|a_1^{j-1},s_1^{j-1},m,\vectorn{\emph{t}})\funp{P}(s_j |a_1^j,s_1^{j-1},m,\vectorn{\emph{t}})} \nonumber \\
& = & \sum_{\vectorn{\emph{a}}}{\varepsilon}\prod_{j=1}^{m}{\frac{1}{l+1}f(s_j|t_{a_j})} \nonumber \\
& = & \sum_{\vectorn{\emph{a}}}{\frac{\varepsilon}{(l+1)^m}}\prod_{j=1}^{m}f(s_j|t_{a_j})
\label{eq:5-23}
\end{eqnarray}
......@@ -794,13 +794,13 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\end{figure}
%----------------------------------------------
\parinterval 在公式\ref{eq:5-23}中,需要遍历所有的词对齐,即$ \sum_{\vectorn{a}}{\cdot}$。但这种表示不够直观,因此可以把这个过程重新表示为如下形式:
\parinterval 在公式\ref{eq:5-23}中,需要遍历所有的词对齐,即$ \sum_{\vectorn{\emph{a}}}{\cdot}$。但这种表示不够直观,因此可以把这个过程重新表示为如下形式:
\begin{eqnarray}
\funp{P}(\vectorn{s}|\vectorn{t})={\sum_{a_1=0}^{l}\cdots}{\sum_{a_m=0}^{l}\frac{\varepsilon}{(l+1)^m}}{\prod_{j=1}^{m}f(s_j|t_{a_j})}
\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})={\sum_{a_1=0}^{l}\cdots}{\sum_{a_m=0}^{l}\frac{\varepsilon}{(l+1)^m}}{\prod_{j=1}^{m}f(s_j|t_{a_j})}
\label{eq:5-24}
\end{eqnarray}
\parinterval 公式\ref{eq:5-24}分为两个主要部分。第一部分:遍历所有的对齐$\vectorn{a}$。其中$\vectorn{a}$$\{a_1,...,a_m\}$\\ 组成,每个$a_j\in \{a_1,...,a_m\}$从译文的开始位置$(0)$循环到截止位置$(l)$。如图\ref{fig:5-19}表示的例子,描述的是源语单词$s_3$从译文的开始$t_0$遍历到结尾$t_3$,即$a_3$的取值范围。第二部分: 对于每个$\vectorn{a}$累加对齐概率$\funp{P}(\vectorn{s},a| \vectorn{t})=\frac{\varepsilon}{(l+1)^m}{\prod_{j=1}^{m}f(s_j|t_{a_j})}$
\parinterval 公式\ref{eq:5-24}分为两个主要部分。第一部分:遍历所有的对齐$\vectorn{\emph{a}}$。其中$\vectorn{\emph{a}}$$\{a_1,...,a_m\}$\\ 组成,每个$a_j\in \{a_1,...,a_m\}$从译文的开始位置$(0)$循环到截止位置$(l)$。如图\ref{fig:5-19}表示的例子,描述的是源语单词$s_3$从译文的开始$t_0$遍历到结尾$t_3$,即$a_3$的取值范围。第二部分: 对于每个$\vectorn{\emph{a}}$累加对齐概率$\funp{P}(\vectorn{\emph{s}},a| \vectorn{\emph{t}})=\frac{\varepsilon}{(l+1)^m}{\prod_{j=1}^{m}f(s_j|t_{a_j})}$
%----------------------------------------------
\begin{figure}[htp]
......@@ -811,7 +811,7 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\end{figure}
%----------------------------------------------
\parinterval 这样就得到了IBM模型1中句子翻译概率的计算式。可以看出IBM模型1的假设把翻译模型化简成了非常简单的形式。对于给定的$\vectorn{s}$$\vectorn{a}$$\vectorn{t}$,只要知道$\varepsilon$$f(s_j |t_{a_j })$ 就可以计算出$\funp{P}(\vectorn{s}| \vectorn{t})$
\parinterval 这样就得到了IBM模型1中句子翻译概率的计算式。可以看出IBM模型1的假设把翻译模型化简成了非常简单的形式。对于给定的$\vectorn{\emph{s}}$$\vectorn{\emph{a}}$$\vectorn{\emph{t}}$,只要知道$\varepsilon$$f(s_j |t_{a_j })$ 就可以计算出$\funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}})$
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -821,7 +821,7 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\parinterval 如果模型参数给定,可以使用IBM模型1对新的句子进行翻译。比如,可以使用\ref{sec:simple-decoding}节描述的解码方法搜索最优译文。在搜索过程中,只需要通过公式\ref{eq:5-24}计算每个译文候选的IBM模型翻译概率。但是,公式\ref{eq:5-24}的高计算复杂度导致这些模型很难直接使用。以IBM模型1为例,这里把公式\ref{eq:5-24}重写为:
\begin{eqnarray}
\funp{P}(\vectorn{s}| \vectorn{t}) = \frac{\varepsilon}{(l+1)^{m}} \underbrace{\sum\limits_{a_1=0}^{l} ... \sum\limits_{a_m=0}^{l}}_{(l+1)^m\textrm{次循环}} \underbrace{\prod\limits_{j=1}^{m} f(s_j|t_{a_j})}_{m\textrm{次循环}}
\funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}}) = \frac{\varepsilon}{(l+1)^{m}} \underbrace{\sum\limits_{a_1=0}^{l} ... \sum\limits_{a_m=0}^{l}}_{(l+1)^m\textrm{次循环}} \underbrace{\prod\limits_{j=1}^{m} f(s_j|t_{a_j})}_{m\textrm{次循环}}
\label{eq:5-27}
\end{eqnarray}
......@@ -844,7 +844,7 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\parinterval 接着,利用公式\ref{eq:5-28}的方式,可以把公式\ref{eq:5-24}重写表示为:
\begin{eqnarray}
\textrm{IBM模型1:\ \ \ \ } \funp{P}(\vectorn{s}| \vectorn{t}) & = & \frac{\varepsilon}{(l+1)^{m}} \prod\limits_{j=1}^{m} \sum\limits_{i=0}^{l} f(s_j|t_i) \label{eq:5-64}
\textrm{IBM模型1:\ \ \ \ } \funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}}) & = & \frac{\varepsilon}{(l+1)^{m}} \prod\limits_{j=1}^{m} \sum\limits_{i=0}^{l} f(s_j|t_i) \label{eq:5-64}
\label{eq:5-29}
\end{eqnarray}
......@@ -875,17 +875,17 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\end{figure}
%----------------------------------------------
\parinterval 在IBM模型中,优化的目标函数被定义为$\funp{P}(\vectorn{s}| \vectorn{t})$。也就是,对于给定的句对$(\vectorn{s},\vectorn{t})$,最大化翻译概率$\funp{P}(\vectorn{s}| \vectorn{t})$。 这里用符号$\funp{P}_{\theta}(\vectorn{s}|\vectorn{t})$表示模型由参数$\theta$决定,模型训练可以被描述为对目标函数$\funp{P}_{\theta}(\vectorn{s}|\vectorn{t})$的优化过程:
\parinterval 在IBM模型中,优化的目标函数被定义为$\funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}})$。也就是,对于给定的句对$(\vectorn{\emph{s}},\vectorn{\emph{t}})$,最大化翻译概率$\funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}})$。 这里用符号$\funp{P}_{\theta}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$表示模型由参数$\theta$决定,模型训练可以被描述为对目标函数$\funp{P}_{\theta}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$的优化过程:
\begin{eqnarray}
\widehat{\theta}=\argmax_{\theta}\funp{P}_{\theta}(\vectorn{s}|\vectorn{t})
\widehat{\theta}=\argmax_{\theta}\funp{P}_{\theta}(\vectorn{\emph{s}}|\vectorn{\emph{t}})
\label{eq:5-30}
\end{eqnarray}
\noindent 其中,$\argmax_{\theta}$表示求最优参数的过程(或优化过程)。
\parinterval 公式\ref{eq:5-30}实际上也是一种基于极大似然的模型训练方法。这里,可以把$\funp{P}_{\theta}(\vectorn{s}|\vectorn{t})$看作是模型对数据描述的一个似然函数,记做$L(\vectorn{s},\vectorn{t};\theta)$。也就是,优化目标是对似然函数的优化:$\{\widehat{\theta}\}=\{\argmax_{\theta \in \Theta}L(\vectorn{s},\vectorn{t};\theta)\}$,其中\{$\widehat{\theta}$\} 表示可能有多个结果,$\Theta$表示参数空间。
\parinterval 公式\ref{eq:5-30}实际上也是一种基于极大似然的模型训练方法。这里,可以把$\funp{P}_{\theta}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$看作是模型对数据描述的一个似然函数,记做$L(\vectorn{\emph{s}},\vectorn{\emph{t}};\theta)$。也就是,优化目标是对似然函数的优化:$\{\widehat{\theta}\}=\{\argmax_{\theta \in \Theta}L(\vectorn{\emph{s}},\vectorn{\emph{t}};\theta)\}$,其中\{$\widehat{\theta}$\} 表示可能有多个结果,$\Theta$表示参数空间。
\parinterval 回到IBM模型的优化问题上。以IBM模型1为例,优化的目标是最大化翻译概率$\funp{P}(\vectorn{s}| \vectorn{t})$。使用公式\ref{eq:5-64} ,可以把这个目标表述为:
\parinterval 回到IBM模型的优化问题上。以IBM模型1为例,优化的目标是最大化翻译概率$\funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}})$。使用公式\ref{eq:5-64} ,可以把这个目标表述为:
\begin{eqnarray}
& & \textrm{max}\Big(\frac{\varepsilon}{(l+1)^m}\prod_{j=1}^{m}\sum_{i=0}^{l}{f({s_j|t_i})}\Big) \nonumber \\
& \textrm{s.t.} & \textrm{任意单词} t_{y}:\;\sum_{s_x}{f(s_x|t_y)}=1 \nonumber
......@@ -901,7 +901,7 @@ g(\vectorn{s},\vectorn{t}) \equiv \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)}
\parinterval 可以看到,IBM模型的参数训练问题本质上是带约束的目标函数优化问题。由于目标函数是可微分函数,解决这类问题的一种常用手法是把带约束的优化问题转化为不带约束的优化问题。这里用到了{\small\sffamily\bfseries{拉格朗日乘数法}}\index{拉格朗日乘数法}(The Lagrange Multiplier Method)\index{The Lagrange Multiplier Method},它的基本思想是把含有$n$个变量和$m$个约束条件的优化问题转化为含有$n+m$个变量的无约束优化问题。
\parinterval 这里的目标是$\max(\funp{P}_{\theta}(\vectorn{s}|\vectorn{t}))$,约束条件是对于任意的目标语单词$t_y$\\$\sum_{s_x}{\funp{P}(s_x|t_y)}=1$。根据拉格朗日乘数法,可以把上述优化问题重新定义最大化如下拉格朗日函数:
\parinterval 这里的目标是$\max(\funp{P}_{\theta}(\vectorn{\emph{s}}|\vectorn{\emph{t}}))$,约束条件是对于任意的目标语单词$t_y$\\$\sum_{s_x}{\funp{P}(s_x|t_y)}=1$。根据拉格朗日乘数法,可以把上述优化问题重新定义最大化如下拉格朗日函数:
\vspace{-0.5em}
\begin{eqnarray}
L(f,\lambda)=\frac{\varepsilon}{(l+1)^m}\prod_{j=1}^{m}\sum_{i=0}^{l}{f(s_j|t_i)}-\sum_{t_y}{\lambda_{t_y}(\sum_{s_x}{f(s_x|t_y)}-1)}
......@@ -981,7 +981,7 @@ f(s_u|t_v) = \lambda_{t_v}^{-1} \frac{\varepsilon}{(l+1)^{m}} \prod\limits_{j=1}
\end{figure}
%----------------------------------------------
\parinterval 为了化简$f(s_u|t_v)$的计算,在此对公式\ref{eq:5-39}进行了重新组织,见图\ref{fig:5-25}。其中,红色部分表示翻译概率P$(\vectorn{s}|\vectorn{t})$;蓝色部分表示$(s_u,t_v)$ 在句对$(\vectorn{s},\vectorn{t})$中配对的总次数,即``$t_v$翻译为$s_u$''在所有对齐中出现的次数;绿色部分表示$f(s_u|t_v)$对于所有的$t_i$的相对值,即``$t_v$翻译为$s_u$''在所有对齐中出现的相对概率;蓝色与绿色部分相乘表示``$t_v$翻译为$s_u$''这个事件出现次数的期望的估计,称之为{\small\sffamily\bfseries{期望频次}}\index{期望频次}(Expected Count)\index{Expected Count}
\parinterval 为了化简$f(s_u|t_v)$的计算,在此对公式\ref{eq:5-39}进行了重新组织,见图\ref{fig:5-25}。其中,红色部分表示翻译概率P$(\vectorn{\emph{s}}|\vectorn{\emph{t}})$;蓝色部分表示$(s_u,t_v)$ 在句对$(\vectorn{\emph{s}},\vectorn{\emph{t}})$中配对的总次数,即``$t_v$翻译为$s_u$''在所有对齐中出现的次数;绿色部分表示$f(s_u|t_v)$对于所有的$t_i$的相对值,即``$t_v$翻译为$s_u$''在所有对齐中出现的相对概率;蓝色与绿色部分相乘表示``$t_v$翻译为$s_u$''这个事件出现次数的期望的估计,称之为{\small\sffamily\bfseries{期望频次}}\index{期望频次}(Expected Count)\index{Expected Count}
\vspace{-0.3em}
%----------------------------------------------
\begin{figure}[htp]
......@@ -1010,22 +1010,22 @@ c_{\mathbb{E}}(X)=\sum_i c(x_i) \cdot \funp{P}(x_i)
\end{figure}
%----------------------------------------------
\parinterval 因为在$\funp{P}(\vectorn{s}|\vectorn{t})$中,$t_v$翻译(连接)到$s_u$的期望频次为:
\parinterval 因为在$\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})$中,$t_v$翻译(连接)到$s_u$的期望频次为:
\begin{eqnarray}
c_{\mathbb{E}}(s_u|t_v;\vectorn{s},\vectorn{t}) \equiv \sum\limits_{j=1}^{m} \delta(s_j,s_u) \cdot \sum\limits_{i=0}^{l} \delta(t_i,t_v) \cdot \frac {f(s_u|t_v)}{\sum\limits_{i=0}^{l}f(s_u|t_i)}
c_{\mathbb{E}}(s_u|t_v;\vectorn{\emph{s}},\vectorn{\emph{t}}) \equiv \sum\limits_{j=1}^{m} \delta(s_j,s_u) \cdot \sum\limits_{i=0}^{l} \delta(t_i,t_v) \cdot \frac {f(s_u|t_v)}{\sum\limits_{i=0}^{l}f(s_u|t_i)}
\label{eq:5-40}
\end{eqnarray}
\parinterval 所以公式\ref {eq:5-39}可重写为:
\begin{eqnarray}
f(s_u|t_v)=\lambda_{t_v}^{-1} \cdot \funp{P}(\vectorn{s}| \vectorn{t}) \cdot c_{\mathbb{E}}(s_u|t_v;\vectorn{s},\vectorn{t})
f(s_u|t_v)=\lambda_{t_v}^{-1} \cdot \funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}}) \cdot c_{\mathbb{E}}(s_u|t_v;\vectorn{\emph{s}},\vectorn{\emph{t}})
\label{eq:5-41}
\end{eqnarray}
\parinterval 在此如果令$\lambda_{t_v}^{'}=\frac{\lambda_{t_v}}{\funp{P}(\vectorn{s}| \vectorn{t})}$,可得:
\parinterval 在此如果令$\lambda_{t_v}^{'}=\frac{\lambda_{t_v}}{\funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}})}$,可得:
\begin{eqnarray}
f(s_u|t_v) &= &\lambda_{t_v}^{-1} \cdot \funp{P}(\vectorn{s}| \vectorn{t}) \cdot c_{\mathbb{E}}(s_u|t_v;\vectorn{s},\vectorn{t}) \nonumber \\
&=&{(\lambda_{t_v}^{'})}^{-1} \cdot c_{\mathbb{E}}(s_u|t_v;\vectorn{s},\vectorn{t})
f(s_u|t_v) &= &\lambda_{t_v}^{-1} \cdot \funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}}) \cdot c_{\mathbb{E}}(s_u|t_v;\vectorn{\emph{s}},\vectorn{\emph{t}}) \nonumber \\
&=&{(\lambda_{t_v}^{'})}^{-1} \cdot c_{\mathbb{E}}(s_u|t_v;\vectorn{\emph{s}},\vectorn{\emph{t}})
\label{eq:5-42}
\end{eqnarray}
......@@ -1037,13 +1037,13 @@ f(s_u|t_v) &= &\lambda_{t_v}^{-1} \cdot \funp{P}(\vectorn{s}| \vectorn{t}) \cdot
\parinterval 为了满足$f(\cdot|\cdot)$的概率归一化约束,易知$\lambda_{t_v}^{'}$为:
\begin{eqnarray}
\lambda_{t_v}^{'}=\sum\limits_{s_u} c_{\mathbb{E}}(s_u|t_v;\vectorn{s},\vectorn{t})
\lambda_{t_v}^{'}=\sum\limits_{s_u} c_{\mathbb{E}}(s_u|t_v;\vectorn{\emph{s}},\vectorn{\emph{t}})
\label{eq:5-44}
\end{eqnarray}
\parinterval 因此,$f(s_u|t_v)$的计算式可再一步变换成下式:
\begin{eqnarray}
f(s_u|t_v)=\frac{c_{\mathbb{E}}(s_u|t_v;\vectorn{s},\vectorn{t})} { \sum\limits_{s_u} c_{\mathbb{E}}(s_u|t_v;\vectorn{s},\vectorn{t}) }
f(s_u|t_v)=\frac{c_{\mathbb{E}}(s_u|t_v;\vectorn{\emph{s}},\vectorn{\emph{t}})} { \sum\limits_{s_u} c_{\mathbb{E}}(s_u|t_v;\vectorn{\emph{s}},\vectorn{\emph{t}}) }
\label{eq:5-45}
\end{eqnarray}
......@@ -1067,7 +1067,7 @@ f(s_u|t_v)=\frac{c_{\mathbb{E}}(s_u|t_v;\vectorn{s},\vectorn{t})} { \sum\limits
%----------------------------------------------
\parinterval 进一步,假设有$N$个互译的句对(称作平行语料):
$\{(\vectorn{s}^{[1]},\vectorn{t}^{[1]}),...,(\vectorn{s}^{[N]},\vectorn{t}^{[N]})\}$$f(s_u|t_v)$的期望频次为:
$\{(\vectorn{\emph{s}}^{[1]},\vectorn{\emph{t}}^{[1]}),...,(\vectorn{\emph{s}}^{[N]},\vectorn{\emph{t}}^{[N]})\}$$f(s_u|t_v)$的期望频次为:
\begin{eqnarray}
c_{\mathbb{E}}(s_u|t_v)=\sum\limits_{i=1}^{N} c_{\mathbb{E}}(s_u|t_v;s^{[i]},t^{[i]})
\label{eq:5-46}
......@@ -1088,7 +1088,7 @@ c_{\mathbb{E}}(s_u|t_v)=\sum\limits_{i=1}^{N} c_{\mathbb{E}}(s_u|t_v;s^{[i]},t^
\sectionnewpage
\section{小结及深入阅读}
\parinterval 本章对IBM系列模型中的IBM模型1进行了详细的介绍和讨论,从一个简单的基于单词的翻译模型开始,本章从建模、解码、训练多个维度对统计机器翻译进行了描述,期间涉及了词对齐、优化等多个重要概念。IBM模型共分为5个模型,对翻译问题的建模依次由浅入深,同时模型复杂度也依次增加,我们将在{\chaptersix}对IBM模型2-5进行详细的介绍和讨论。IBM模型作为入门统计机器翻译的``必经之路'',其思想对今天的机器翻译仍然产生着影响。虽然单独使用IBM模型进行机器翻译现在已经不多见,甚至很多从事神经机器翻译等前沿研究的人对IBM模型已经逐渐淡忘,但是不能否认IBM模型标志着一个时代的开始。从某种意义上讲,当使用公式$\hat{\vectorn{t}} = \argmax_{\vectorn{t}} \funp{P}(\vectorn{t}|\vectorn{s})$描述机器翻译问题的时候,或多或少都在与IBM模型使用相似的思想。
\parinterval 本章对IBM系列模型中的IBM模型1进行了详细的介绍和讨论,从一个简单的基于单词的翻译模型开始,本章从建模、解码、训练多个维度对统计机器翻译进行了描述,期间涉及了词对齐、优化等多个重要概念。IBM模型共分为5个模型,对翻译问题的建模依次由浅入深,同时模型复杂度也依次增加,我们将在{\chaptersix}对IBM模型2-5进行详细的介绍和讨论。IBM模型作为入门统计机器翻译的``必经之路'',其思想对今天的机器翻译仍然产生着影响。虽然单独使用IBM模型进行机器翻译现在已经不多见,甚至很多从事神经机器翻译等前沿研究的人对IBM模型已经逐渐淡忘,但是不能否认IBM模型标志着一个时代的开始。从某种意义上讲,当使用公式$\hat{\vectorn{\emph{t}}} = \argmax_{\vectorn{\emph{t}}} \funp{P}(\vectorn{\emph{t}}|\vectorn{\emph{s}})$描述机器翻译问题的时候,或多或少都在与IBM模型使用相似的思想。
\parinterval 当然,本书也无法涵盖IBM模型的所有内涵,很多内容需要感兴趣的读者继续研究和挖掘。其中最值得关注的是统计词对齐问题。由于词对齐是IBM模型训练的间接产物,因此IBM模型成为了自动词对齐的重要方法。比如IBM模型训练装置GIZA++更多的是被用于自动词对齐任务,而非简单的训练IBM模型参数\upcite{och2003systematic}
......
......@@ -74,7 +74,7 @@
\parinterval 对于建模来说,IBM模型1很好地化简了翻译问题,但是由于使用了很强的假设,导致模型和实际情况有较大差异。其中一个比较严重的问题是假设词对齐的生成概率服从均匀分布。IBM模型2抛弃了这个假设\upcite{DBLP:journals/coling/BrownPPM94}。它认为词对齐是有倾向性的,它与源语言单词的位置和目标语言单词的位置有关。具体来说,对齐位置$a_j$的生成概率与位置$j$、源语言句子长度$m$和目标语言句子长度$l$有关,形式化表述为:
\begin{eqnarray}
\funp{P}(a_j|a_1^{j-1},s_1^{j-1},m,\vectorn{t}) \equiv a(a_j|j,m,l)
\funp{P}(a_j|a_1^{j-1},s_1^{j-1},m,\vectorn{\emph{t}}) \equiv a(a_j|j,m,l)
\label{eq:6-1}
\end{eqnarray}
......@@ -92,23 +92,23 @@
\parinterval IBM模型2的其他假设均与模型1相同,即源语言长度预测概率及源语言单词生成概率被定义为:
\begin{eqnarray}
\funp{P}(m|\vectorn{t}) & \equiv & \varepsilon \label{eq:s-len-gen-prob} \\
\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\vectorn{t}) & \equiv & f(s_j|t_{a_j})
\funp{P}(m|\vectorn{\emph{t}}) & \equiv & \varepsilon \label{eq:s-len-gen-prob} \\
\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\vectorn{\emph{t}}) & \equiv & f(s_j|t_{a_j})
\label{eq:s-word-gen-prob}
\end{eqnarray}
把公式\ref{eq:s-len-gen-prob}\ref{eq:s-word-gen-prob}\ref{eq:6-1} 重新带入公式$\funp{P}(\vectorn{s},\vectorn{a}|\vectorn{t})=\funp{P}(m|\vectorn{t})\prod_{j=1}^{m}{\funp{P}(a_j|a_1^{j-1},s_1^{j-1},m,\vectorn{t})}$\\${\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\vectorn{t})}$$\funp{P}(\vectorn{s}|\vectorn{t})= \sum_{\vectorn{a}}\funp{P}(\vectorn{s},\vectorn{a}|\vectorn{t})$,可以得到IBM模型2的数学描述:
把公式\ref{eq:s-len-gen-prob}\ref{eq:s-word-gen-prob}\ref{eq:6-1} 重新带入公式$\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}|\vectorn{\emph{t}})=\funp{P}(m|\vectorn{\emph{t}})\prod_{j=1}^{m}{\funp{P}(a_j|a_1^{j-1},s_1^{j-1},m,\vectorn{\emph{t}})}$\\${\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\vectorn{\emph{t}})}$$\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})= \sum_{\vectorn{\emph{a}}}\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}|\vectorn{\emph{t}})$,可以得到IBM模型2的数学描述:
\begin{eqnarray}
\funp{P}(\vectorn{s}| \vectorn{t}) & = & \sum_{\vectorn{a}}{\funp{P}(\vectorn{s},\vectorn{a}| \vectorn{t})} \nonumber \\
\funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}}) & = & \sum_{\vectorn{\emph{a}}}{\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}| \vectorn{\emph{t}})} \nonumber \\
& = & \sum_{a_1=0}^{l}{\cdots}\sum _{a_m=0}^{l}{\varepsilon}\prod_{j=1}^{m}{a(a_j|j,m,l)f(s_j|t_{a_j})}
\label{eq:6-4}
\end{eqnarray}
\parinterval 类似于模型1,模型2的表达式\ref{eq:6-4}也能被拆分为两部分进行理解。第一部分:遍历所有的$\vectorn{a}$;第二部分:对于每个$\vectorn{a}$累加对齐概率$\funp{P}(\vectorn{s},\vectorn{a}| \vectorn{t})$,即计算对齐概率$a(a_j|j,m,l)$和词汇翻译概率$f(s_j|t_{a_j})$对于所有源语言位置的乘积。
\parinterval 类似于模型1,模型2的表达式\ref{eq:6-4}也能被拆分为两部分进行理解。第一部分:遍历所有的$\vectorn{\emph{a}}$;第二部分:对于每个$\vectorn{\emph{a}}$累加对齐概率$\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}| \vectorn{\emph{t}})$,即计算对齐概率$a(a_j|j,m,l)$和词汇翻译概率$f(s_j|t_{a_j})$对于所有源语言位置的乘积。
\parinterval 同样的,模型2的解码及训练优化和模型1的十分相似,在此不再赘述,详细推导过程可以参看{\chapterfive}解码及计算优化部分。这里直接给出IBM模型2的最终表达式:
\begin{eqnarray}
\funp{P}(\vectorn{s}| \vectorn{t}) & = & \varepsilon \prod\limits_{j=1}^{m} \sum\limits_{i=0}^{l} a(i|j,m,l) f(s_j|t_i)
\funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}}) & = & \varepsilon \prod\limits_{j=1}^{m} \sum\limits_{i=0}^{l} a(i|j,m,l) f(s_j|t_i)
\label{eq:6-5}
\end{eqnarray}
......@@ -132,15 +132,15 @@
\parinterval 针对此问题,基于HMM的词对齐模型抛弃了IBM模型1-2的绝对位置假设,将一阶隐马尔可夫模型用于词对齐问题\upcite{vogel1996hmm}。HMM词对齐模型认为,单词与单词之间并不是毫无联系的,对齐概率应该取决于对齐位置的差异而不是本身单词所在的位置。具体来说,位置$j$的对齐概率$a_j$与前一个位置$j-1$的对齐位置$a_{j-1}$和译文长度$l$有关,形式化的表述为:
\begin{eqnarray}
\funp{P}(a_{j}|a_{1}^{j-1},s_{1}^{j-1},m,\vectorn{t})\equiv\funp{P}(a_{j}|a_{j-1},l)
\funp{P}(a_{j}|a_{1}^{j-1},s_{1}^{j-1},m,\vectorn{\emph{t}})\equiv\funp{P}(a_{j}|a_{j-1},l)
\label{eq:6-6}
\end{eqnarray}
\parinterval 这里用图\ref{fig:6-4}的例子对公式进行说明。在IBM模型1-2中,单词的对齐都是与单词所在的绝对位置有关。但在HMM词对齐模型中,``你''对齐到``you''被形式化为$\funp{P}(a_{j}|a_{j-1},l)= P(5|4,5)$,意思是对于源语言位置$3(j=3)$上的单词,如果它的译文是第5个目标语言单词,上一个对齐位置是$4(a_{2}=4)$,对齐到目标语言位置$5(a_{j}=5)$的概率是多少?理想的情况下,通过$\funp{P}(a_{j}|a_{j-1},l)$,``你''对齐到``you''应该得到更高的概率,并且由于源语言单词``对''和``你''距离很近,因此其对应的对齐位置``with''和``you''的距离也应该很近。
\parinterval 把公式$\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\vectorn{t}) \equiv f(s_j|t_{a_j})$\ref{eq:6-6}重新带入公式$\funp{P}(\vectorn{s},\vectorn{a}|\vectorn{t})=\funp{P}(m|\vectorn{t})$\\$\prod_{j=1}^{m}{\funp{P}(a_j|a_1^{j-1},s_1^{j-1},m,\vectorn{t})\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\vectorn{t})}$$\funp{P}(\vectorn{s}|\vectorn{t})= \sum_{\vectorn{a}}\funp{P}(\vectorn{s},\vectorn{a}|\vectorn{t})$,可得HMM词对齐模型的数学描述:
\parinterval 把公式$\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\vectorn{\emph{t}}) \equiv f(s_j|t_{a_j})$\ref{eq:6-6}重新带入公式$\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}|\vectorn{\emph{t}})=\funp{P}(m|\vectorn{\emph{t}})$\\$\prod_{j=1}^{m}{\funp{P}(a_j|a_1^{j-1},s_1^{j-1},m,\vectorn{\emph{t}})\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\vectorn{\emph{t}})}$$\funp{P}(\vectorn{\emph{s}}|\vectorn{\emph{t}})= \sum_{\vectorn{\emph{a}}}\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}|\vectorn{\emph{t}})$,可得HMM词对齐模型的数学描述:
\begin{eqnarray}
\funp{P}(\vectorn{s}| \vectorn{t})=\sum_{\vectorn{a}}{\funp{P}(m|\vectorn{t})}\prod_{j=1}^{m}{\funp{P}(a_{j}|a_{j-1},l)f(s_{j}|t_{a_j})}
\funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}})=\sum_{\vectorn{\emph{a}}}{\funp{P}(m|\vectorn{\emph{t}})}\prod_{j=1}^{m}{\funp{P}(a_{j}|a_{j-1},l)f(s_{j}|t_{a_j})}
\label{eq:6-7}
\end{eqnarray}
......@@ -175,7 +175,7 @@
\parinterval 这里将会给出另一个翻译模型,能在一定程度上解决上面提到的问题\upcite{DBLP:journals/coling/BrownPPM94,och2003systematic}。该模型把目标语言生成源语言的过程分解为如下几个步骤:首先,确定每个目标语言单词生成源语言单词的个数,这里把它称为{\small\sffamily\bfseries{繁衍率}}\index{繁衍率}{\small\sffamily\bfseries{产出率}}\index{产出率}(Fertility)\index{Fertility};其次,决定目标语言句子中每个单词生成的源语言单词都是什么,即决定生成的第一个源语言单词是什么,生成的第二个源语言单词是什么,以此类推。这样每个目标语言单词就对应了一个源语言单词列表;最后把各组源语言单词列表中的每个单词都放置到合适的位置上,完成目标语言译文到源语言句子的生成。
\parinterval 对于句对$(\vectorn{s},\vectorn{t})$,令$\varphi$表示产出率,同时令${\tau}$表示每个目标语言单词对应的源语言单词列表。图{\ref{fig:6-5}}描述了一个英语句子生成汉语句子的过程。
\parinterval 对于句对$(\vectorn{\emph{s}},\vectorn{\emph{t}})$,令$\varphi$表示产出率,同时令${\tau}$表示每个目标语言单词对应的源语言单词列表。图{\ref{fig:6-5}}描述了一个英语句子生成汉语句子的过程。
\begin{itemize}
\vspace{0.3em}
......@@ -183,7 +183,7 @@
\vspace{0.3em}
\item 其次,确定英语句子中每个单词生成的汉语单词列表。比如``Scientists''生成``科学家''和``们''两个汉语单词,可表示为${\tau}_1=\{{\tau}_{11}=\textrm{``科学家''},{\tau}_{12}=\textrm{``们''}\}$。 这里用特殊的空标记NULL表示翻译对空的情况;
\vspace{0.3em}
\item 最后,把生成的所有汉语单词放在合适的位置。比如``科学家''和``们''分别放在$\vectorn{s}$的位置1和位置2。可以用符号$\pi$记录生成的单词在源语言句子$\vectorn{s}$中的位置。比如``Scientists'' 生成的汉语单词在$\vectorn{s}$ 中的位置表示为${\pi}_{1}=\{{\pi}_{11}=1,{\pi}_{12}=2\}$
\item 最后,把生成的所有汉语单词放在合适的位置。比如``科学家''和``们''分别放在$\vectorn{\emph{s}}$的位置1和位置2。可以用符号$\pi$记录生成的单词在源语言句子$\vectorn{\emph{s}}$中的位置。比如``Scientists'' 生成的汉语单词在$\vectorn{\emph{s}}$ 中的位置表示为${\pi}_{1}=\{{\pi}_{11}=1,{\pi}_{12}=2\}$
\vspace{0.3em}
\end{itemize}
......@@ -196,13 +196,13 @@
\end{figure}
%----------------------------------------------
\parinterval 为了表述清晰,这里重新说明每个符号的含义。$\vectorn{s}$$\vectorn{t}$$m$$l$分别表示源语言句子、目标语言译文、源语言单词数量以及译文单词数量。$\vectorn{\varphi}$$\vectorn{\tau}$$\vectorn{\pi}$分别表示产出率、生成的源语言单词以及它们在源语言句子中的位置。${\varphi}_{i}$表示第$i$个目标语言单词$t_i$的产出率。${\tau}_{i}$${\pi}_i$ 分别表示$t_i$生成的源语言单词列表及其在源语言句子$\vectorn{s}$中的位置列表。
\parinterval 为了表述清晰,这里重新说明每个符号的含义。$\vectorn{\emph{s}}$$\vectorn{\emph{t}}$$m$$l$分别表示源语言句子、目标语言译文、源语言单词数量以及译文单词数量。$\mathbf{\varphi}$$\mathbf{\tau}$$\mathbf{\pi}$分别表示产出率、生成的源语言单词以及它们在源语言句子中的位置。${\varphi}_{i}$表示第$i$个目标语言单词$t_i$的产出率。${\tau}_{i}$${\pi}_i$ 分别表示$t_i$生成的源语言单词列表及其在源语言句子$\vectorn{\emph{s}}$中的位置列表。
\parinterval 可以看出,一组$\tau$$\pi$(记为$<\tau,\pi>$)可以决定一个对齐$\vectorn{a}$和一个源语句子$\vectorn{s}$
\parinterval 可以看出,一组$\tau$$\pi$(记为$<\tau,\pi>$)可以决定一个对齐$\vectorn{\emph{a}}$和一个源语句子$\vectorn{\emph{s}}$
\noindent 相反的,一个对齐$\vectorn{a}$和一个源语句子$\vectorn{s}$可以对应多组$<\tau,\pi>$。如图\ref{fig:6-6}所示,不同的$<\tau,\pi>$对应同一个源语言句子和词对齐。它们的区别在于目标语单词``Scientists''生成的源语言单词``科学家''和`` 们''的顺序不同。这里把不同的$<\tau,\pi>$对应到的相同的源语句子$\vectorn{s}$和对齐$\vectorn{a}$记为$<\vectorn{s},\vectorn{a}>$。因此计算$\funp{P}(\vectorn{s},\vectorn{a}| \vectorn{t})$时需要把每个可能结果的概率加起来,如下:
\noindent 相反的,一个对齐$\vectorn{\emph{a}}$和一个源语句子$\vectorn{\emph{s}}$可以对应多组$<\tau,\pi>$。如图\ref{fig:6-6}所示,不同的$<\tau,\pi>$对应同一个源语言句子和词对齐。它们的区别在于目标语单词``Scientists''生成的源语言单词``科学家''和`` 们''的顺序不同。这里把不同的$<\tau,\pi>$对应到的相同的源语句子$\vectorn{\emph{s}}$和对齐$\vectorn{\emph{a}}$记为$<\vectorn{\emph{s}},\vectorn{\emph{a}}>$。因此计算$\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}| \vectorn{\emph{t}})$时需要把每个可能结果的概率加起来,如下:
\begin{equation}
\funp{P}(\vectorn{s},\vectorn{a}| \vectorn{t})=\sum_{{<\tau,\pi>}\in{<\vectorn{s},\vectorn{a}>}}{\funp{P}(\tau,\pi|\vectorn{t}) }
\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}| \vectorn{\emph{t}})=\sum_{{<\tau,\pi>}\in{<\vectorn{\emph{s}},\vectorn{\emph{a}}>}}{\funp{P}(\tau,\pi|\vectorn{\emph{t}}) }
\label{eq:6-9}
\end{equation}
......@@ -216,10 +216,10 @@
%----------------------------------------------
\parinterval 不过$<\vectorn{s},\vectorn{a}>$中有多少组$<\tau,\pi>$呢?通过图\ref{fig:6-5}中的例子,可以推出$<\vectorn{s},\vectorn{a}>$应该包含$\prod_{i=0}^{l}{\varphi_i !}$个不同的二元组$<\tau,\pi>$。 这是因为在给定源语言句子和词对齐时,对于每一个$\tau_i$都有$\varphi_{i}!$种排列。
\parinterval 不过$<\vectorn{\emph{s}},\vectorn{\emph{a}}>$中有多少组$<\tau,\pi>$呢?通过图\ref{fig:6-5}中的例子,可以推出$<\vectorn{\emph{s}},\vectorn{\emph{a}}>$应该包含$\prod_{i=0}^{l}{\varphi_i !}$个不同的二元组$<\tau,\pi>$。 这是因为在给定源语言句子和词对齐时,对于每一个$\tau_i$都有$\varphi_{i}!$种排列。
\parinterval 进一步,$\funp{P}(\tau,\pi|\vectorn{t})$可以被表示如图\ref{fig:6-7}的形式。其中$\tau_{i1}^{k-1}$表示$\tau_{i1}\tau_{i2}\cdots \tau_{i(k-1)}$$\pi_{i1}^{ k-1}$表示$\pi_{i1}\pi_{i2}\cdots \pi_{i(k-1)}$。可以把图\ref{fig:6-7}中的公式分为5个部分,并用不同的序号和颜色进行标注。每部分的具体含义是:
\parinterval 进一步,$\funp{P}(\tau,\pi|\vectorn{\emph{t}})$可以被表示如图\ref{fig:6-7}的形式。其中$\tau_{i1}^{k-1}$表示$\tau_{i1}\tau_{i2}\cdots \tau_{i(k-1)}$$\pi_{i1}^{ k-1}$表示$\pi_{i1}\pi_{i2}\cdots \pi_{i(k-1)}$。可以把图\ref{fig:6-7}中的公式分为5个部分,并用不同的序号和颜色进行标注。每部分的具体含义是:
%----------------------------------------------
\begin{figure}[htp]
......@@ -233,11 +233,11 @@
\begin{itemize}
\vspace{0.5em}
\item 第一部分:每个$i\in[1,l]$的目标语单词的产出率建模({\color{red!70} 红色}),即$\varphi_i$的生成概率。它依赖于$\vectorn{t}$和区间$[1,i-1]$的目标语单词的产出率$\varphi_1^{i-1}$\footnote{这里约定,当$i=1$ 时,$\varphi_1^0$ 表示空。}
\item 第一部分:每个$i\in[1,l]$的目标语单词的产出率建模({\color{red!70} 红色}),即$\varphi_i$的生成概率。它依赖于$\vectorn{\emph{t}}$和区间$[1,i-1]$的目标语单词的产出率$\varphi_1^{i-1}$\footnote{这里约定,当$i=1$ 时,$\varphi_1^0$ 表示空。}
\vspace{0.5em}
\item 第二部分:$i=0$时的产出率建模({\color{blue!70} 蓝色}),即空标记$t_0$的产出率生成概率。它依赖于$\vectorn{t}$和区间$[1,i-1]$的目标语单词的产出率$\varphi_1^l$
\item 第二部分:$i=0$时的产出率建模({\color{blue!70} 蓝色}),即空标记$t_0$的产出率生成概率。它依赖于$\vectorn{\emph{t}}$和区间$[1,i-1]$的目标语单词的产出率$\varphi_1^l$
\vspace{0.5em}
\item 第三部分:词汇翻译建模({\color{green!70} 绿色}),目标语言单词$t_i$生成第$k$个源语言单词$\tau_{ik}$时的概率,依赖于$\vectorn{t}$、所有目标语言单词的产出率$\varphi_0^l$、区间$i\in[1,l]$的目标语言单词生成的源语言单词$\tau_1^{i-1}$和目标语单词$t_i$生成的前$k$个源语言单词$\tau_{i1}^{k-1}$
\item 第三部分:词汇翻译建模({\color{green!70} 绿色}),目标语言单词$t_i$生成第$k$个源语言单词$\tau_{ik}$时的概率,依赖于$\vectorn{\emph{t}}$、所有目标语言单词的产出率$\varphi_0^l$、区间$i\in[1,l]$的目标语言单词生成的源语言单词$\tau_1^{i-1}$和目标语单词$t_i$生成的前$k$个源语言单词$\tau_{i1}^{k-1}$
\vspace{0.5em}
\item 第四部分:对于每个$i\in[1,l]$的目标语言单词生成的源语言单词的扭曲度建模({\color{yellow!70!black} 黄色}),即第$i$个目标语言单词生成的第$k$个源语言单词在源文中的位置$\pi_{ik}$ 的概率。其中$\pi_1^{i-1}$ 表示区间$[1,i-1]$的目标语言单词生成的源语言单词的扭曲度,$\pi_{i1}^{k-1}$表示第$i$目标语言单词生成的前$k-1$个源语言单词的扭曲度。
\vspace{0.5em}
......@@ -250,51 +250,51 @@
\subsection{IBM 模型3}
\parinterval IBM模型3通过一些假设对图\ref{fig:6-7}所表示的基本模型进行了化简。具体来说,对于每个$i\in[1,l]$,假设$\funp{P}(\varphi_i |\varphi_1^{i-1},\vectorn{t})$仅依赖于$\varphi_i$$t_i$$\funp{P}(\pi_{ik}|\pi_{i1}^{k-1},\pi_1^{i-1},\tau_0^l,\varphi_0^l,\vectorn{t})$仅依赖于$\pi_{ik}$$i$$m$$l$。而对于所有的$i\in[0,l]$,假设$\funp{P}(\tau_{ik}|\tau_{i1}^{k-1},\tau_1^{i-1},\varphi_0^l,\vectorn{t})$仅依赖于$\tau_{ik}$$t_i$。这些假设的形式化描述为:
\parinterval IBM模型3通过一些假设对图\ref{fig:6-7}所表示的基本模型进行了化简。具体来说,对于每个$i\in[1,l]$,假设$\funp{P}(\varphi_i |\varphi_1^{i-1},\vectorn{\emph{t}})$仅依赖于$\varphi_i$$t_i$$\funp{P}(\pi_{ik}|\pi_{i1}^{k-1},\pi_1^{i-1},\tau_0^l,\varphi_0^l,\vectorn{\emph{t}})$仅依赖于$\pi_{ik}$$i$$m$$l$。而对于所有的$i\in[0,l]$,假设$\funp{P}(\tau_{ik}|\tau_{i1}^{k-1},\tau_1^{i-1},\varphi_0^l,\vectorn{\emph{t}})$仅依赖于$\tau_{ik}$$t_i$。这些假设的形式化描述为:
\begin{eqnarray}
\funp{P}(\varphi_i|\varphi_1^{i-1},\vectorn{t}) & = &{\funp{P}(\varphi_i|t_i)} \label{eq:6-10} \\
\funp{P}(\tau_{ik} = s_j |\tau_{i1}^{k-1},\tau_{1}^{i-1},\varphi_0^t,\vectorn{t}) & = & t(s_j|t_i) \label{eq:6-11} \\
\funp{P}(\pi_{ik} = j |\pi_{i1}^{k-1},\pi_{1}^{i-1},\tau_{0}^{l},\varphi_{0}^{l},\vectorn{t}) & = & d(j|i,m,l) \label{eq:6-12}
\funp{P}(\varphi_i|\varphi_1^{i-1},\vectorn{\emph{t}}) & = &{\funp{P}(\varphi_i|t_i)} \label{eq:6-10} \\
\funp{P}(\tau_{ik} = s_j |\tau_{i1}^{k-1},\tau_{1}^{i-1},\varphi_0^t,\vectorn{\emph{t}}) & = & t(s_j|t_i) \label{eq:6-11} \\
\funp{P}(\pi_{ik} = j |\pi_{i1}^{k-1},\pi_{1}^{i-1},\tau_{0}^{l},\varphi_{0}^{l},\vectorn{\emph{t}}) & = & d(j|i,m,l) \label{eq:6-12}
\end{eqnarray}
\parinterval 通常把$d(j|i,m,l)$称为扭曲度函数。这里$\funp{P}(\varphi_i|\varphi_1^{i-1},\vectorn{t})={\funp{P}(\varphi_i|t_i)}$${\funp{P}(\pi_{ik}=j|\pi_{i1}^{k-1},}$ $\pi_{1}^{i-1},\tau_0^l,\varphi_0^l,\vectorn{t})=d(j|i,m,l)$仅对$1 \le i \le l$成立。这样就完成了图\ref{fig:6-7}中第1、 3和4部分的建模。
\parinterval 通常把$d(j|i,m,l)$称为扭曲度函数。这里$\funp{P}(\varphi_i|\varphi_1^{i-1},\vectorn{\emph{t}})={\funp{P}(\varphi_i|t_i)}$${\funp{P}(\pi_{ik}=j|\pi_{i1}^{k-1},}$ $\pi_{1}^{i-1},\tau_0^l,\varphi_0^l,\vectorn{\emph{t}})=d(j|i,m,l)$仅对$1 \le i \le l$成立。这样就完成了图\ref{fig:6-7}中第1、 3和4部分的建模。
\parinterval 对于$i=0$的情况需要单独进行考虑。实际上,$t_0$只是一个虚拟的单词。它要对应$\vectorn{s}$中原本为空对齐的单词。这里假设:要等其他非空对应单词都被生成(放置)后,才考虑这些空对齐单词的生成(放置)。即非空对单词都被生成后,在那些还有空的位置上放置这些空对的源语言单词。此外,在任何的空位置上放置空对的源语言单词都是等概率的,即放置空对齐源语言单词服从均匀分布。这样在已经放置了$k$个空对齐源语言单词的时候,应该还有$\varphi_0-k$个空位置。如果第$j$个源语言位置为空,那么
\parinterval 对于$i=0$的情况需要单独进行考虑。实际上,$t_0$只是一个虚拟的单词。它要对应$\vectorn{\emph{s}}$中原本为空对齐的单词。这里假设:要等其他非空对应单词都被生成(放置)后,才考虑这些空对齐单词的生成(放置)。即非空对单词都被生成后,在那些还有空的位置上放置这些空对的源语言单词。此外,在任何的空位置上放置空对的源语言单词都是等概率的,即放置空对齐源语言单词服从均匀分布。这样在已经放置了$k$个空对齐源语言单词的时候,应该还有$\varphi_0-k$个空位置。如果第$j$个源语言位置为空,那么
\begin{equation}
\funp{P}(\pi_{0k}=j|\pi_{01}^{k-1},\pi_1^l,\tau_0^l,\varphi_0^l,\vectorn{t})=\frac{1}{\varphi_0-k}
\funp{P}(\pi_{0k}=j|\pi_{01}^{k-1},\pi_1^l,\tau_0^l,\varphi_0^l,\vectorn{\emph{t}})=\frac{1}{\varphi_0-k}
\label{eq:6-13}
\end{equation}
否则
\begin{equation}
\funp{P}(\pi_{0k}=j|\pi_{01}^{k-1},\pi_1^l,\tau_0^l,\varphi_0^l,\vectorn{t})=0
\funp{P}(\pi_{0k}=j|\pi_{01}^{k-1},\pi_1^l,\tau_0^l,\varphi_0^l,\vectorn{\emph{t}})=0
\label{eq:6-14}
\end{equation}
这样对于$t_0$所对应的$\tau_0$,就有
{
\begin{eqnarray}
\prod_{k=1}^{\varphi_0}{\funp{P}(\pi_{0k}|\pi_{01}^{k-1},\pi_{1}^{l},\tau_{0}^{l},\varphi_{0}^{l},\vectorn{t}) }=\frac{1}{\varphi_{0}!}
\prod_{k=1}^{\varphi_0}{\funp{P}(\pi_{0k}|\pi_{01}^{k-1},\pi_{1}^{l},\tau_{0}^{l},\varphi_{0}^{l},\vectorn{\emph{t}}) }=\frac{1}{\varphi_{0}!}
\label{eq:6-15}
\end{eqnarray}
}
\parinterval 而上面提到的$t_0$所对应的这些空位置是如何生成的呢?即如何确定哪些位置是要放置空对齐的源语言单词。在IBM模型3中,假设在所有的非空对齐源语言单词都被生成出来后(共$\varphi_1+\varphi_2+\cdots {\varphi}_l$个非空对源语单词),这些单词后面都以$p_1$概率随机地产生一个``槽''用来放置空对齐单词。这样,${\varphi}_0$就服从了一个二项分布。于是得到
{
\begin{eqnarray}
\funp{P}(\varphi_0|\vectorn{t})=\big(\begin{array}{c}
\funp{P}(\varphi_0|\vectorn{\emph{t}})=\big(\begin{array}{c}
\varphi_1+\varphi_2+\cdots \varphi_l\\
\varphi_0\\
\end{array}\big)p_0^{\varphi_1+\varphi_2+\cdots \varphi_l-\varphi_0}p_1^{\varphi_0}
\label{eq:6-16}
\end{eqnarray}
}
\noindent 其中,$p_0+p_1=1$。到此为止,已经完成了图\ref{fig:6-7}中第2和5部分的建模。最终根据这些假设可以得到$\funp{P}(\vectorn{s}| \vectorn{t})$的形式为:
\noindent 其中,$p_0+p_1=1$。到此为止,已经完成了图\ref{fig:6-7}中第2和5部分的建模。最终根据这些假设可以得到$\funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}})$的形式为:
{
\begin{eqnarray}
{\funp{P}(\vectorn{s}| \vectorn{t})}&= &{\sum_{a_1=0}^{l}{\cdots}\sum_{a_m=0}^{l}{\Big[\big(\begin{array}{c}
{\funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}})}&= &{\sum_{a_1=0}^{l}{\cdots}\sum_{a_m=0}^{l}{\Big[\big(\begin{array}{c}
m-\varphi_0\\
\varphi_0\\
\end{array}\big)}p_0^{m-2\varphi_0}p_1^{\varphi_0}\prod_{i=1}^{l}{{\varphi_i}!n(\varphi_i|t_i) }} \nonumber \\
......@@ -331,20 +331,20 @@ p_0+p_1 & = & 1 \label{eq:6-21}
\end{figure}
%----------------------------------------------
\parinterval 在IBM模型的词对齐框架下,目标语的cept.只能是那些非空对齐的目标语单词,而且每个cept.只能由一个目标语言单词组成(通常把这类由一个单词组成的cept.称为独立单词cept.)。这里用$[i]$表示第$i$ 个独立单词cept.在目标语言句子中的位置。换句话说,$[i]$表示第$i$个非空对的目标语单词的位置。比如在本例中``mind''在$\vectorn{t}$中的位置表示为$[3]$
\parinterval 在IBM模型的词对齐框架下,目标语的cept.只能是那些非空对齐的目标语单词,而且每个cept.只能由一个目标语言单词组成(通常把这类由一个单词组成的cept.称为独立单词cept.)。这里用$[i]$表示第$i$ 个独立单词cept.在目标语言句子中的位置。换句话说,$[i]$表示第$i$个非空对的目标语单词的位置。比如在本例中``mind''在$\vectorn{\emph{t}}$中的位置表示为$[3]$
\parinterval 另外,可以用$\odot_{i}$表示位置为$[i]$的目标语言单词对应的那些源语言单词位置的平均值,如果这个平均值不是整数则对它向上取整。比如在本例中,目标语句中第4个cept. (``.'')对应在源语言句子中的第5个单词。可表示为${\odot}_{4}=5$
\parinterval 利用这些新引进的概念,模型4对模型3的扭曲度进行了修改。主要是把扭曲度分解为两类参数。对于$[i]$对应的源语言单词列表($\tau_{[i]}$)中的第一个单词($\tau_{[i]1}$),它的扭曲度用如下公式计算:
\begin{equation}
\funp{P}(\pi_{[i]1}=j|{\pi}_1^{[i]-1},{\tau}_0^l,{\varphi}_0^l,\vectorn{t})=d_{1}(j-{\odot}_{i-1}|A(t_{[i-1]}),B(s_j))
\funp{P}(\pi_{[i]1}=j|{\pi}_1^{[i]-1},{\tau}_0^l,{\varphi}_0^l,\vectorn{\emph{t}})=d_{1}(j-{\odot}_{i-1}|A(t_{[i-1]}),B(s_j))
\label{eq:6-22}
\end{equation}
\noindent 其中,第$i$个目标语言单词生成的第$k$个源语言单词的位置用变量$\pi_{ik}$表示。而对于列表($\tau_{[i]}$)中的其他的单词($\tau_{[i]k},1 < k \le \varphi_{[i]}$)的扭曲度,用如下公式计算:
\begin{equation}
\funp{P}(\pi_{[i]k}=j|{\pi}_{[i]1}^{k-1},\pi_1^{[i]-1},\tau_0^l,\varphi_0^l,\vectorn{t})=d_{>1}(j-\pi_{[i]k-1}|B(s_j))
\funp{P}(\pi_{[i]k}=j|{\pi}_{[i]1}^{k-1},\pi_1^{[i]-1},\tau_0^l,\varphi_0^l,\vectorn{\emph{t}})=d_{>1}(j-\pi_{[i]k-1}|B(s_j))
\label{eq:6-23}
\end{equation}
......@@ -373,19 +373,19 @@ p_0+p_1 & = & 1 \label{eq:6-21}
\parinterval 为了解决这个问题,模型5在模型中增加了额外的约束。基本想法是,在放置一个源语言单词的时候检查这个位置是否已经放置了单词,如果可以则把这个放置过程赋予一定的概率,否则把它作为不可能事件。基于这个想法,就需要在逐个放置源语言单词的时候判断源语言句子的哪些位置为空。这里引入一个变量$v(j, {\tau_1}^{[i]-1}, \tau_{[i]1}^{k-1})$,它表示在放置$\tau_{[i]k}$之前($\tau_1^{[i]-1}$$\tau_{[i]1}^{k-1}$已经被放置完了),从源语言句子的第一个位置到位置$j$(包含$j$)为止还有多少个空位置。这里,把这个变量简写为$v_j$。于是,对于$[i]$所对应的源语言单词列表($\tau_{[i]}$)中的第一个单词($\tau_{[i]1}$),有:
\begin{eqnarray}
\funp{P}(\pi_{[i]1} = j | \pi_1^{[i]-1}, \tau_0^l, \varphi_0^l, \vectorn{t}) & = & d_1(v_j|B(s_j), v_{\odot_{i-1}}, v_m-(\varphi_{[i]}-1)) \cdot \nonumber \\
\funp{P}(\pi_{[i]1} = j | \pi_1^{[i]-1}, \tau_0^l, \varphi_0^l, \vectorn{\emph{t}}) & = & d_1(v_j|B(s_j), v_{\odot_{i-1}}, v_m-(\varphi_{[i]}-1)) \cdot \nonumber \\
& & (1-\delta(v_j,v_{j-1}))
\label{eq:6-24}
\end{eqnarray}
\parinterval 对于其他单词($\tau_{[i]k}$, $1 < k\le\varphi_{[i]}$),有:
\begin{eqnarray}
& & \funp{P}(\pi_{[i]k}=j|\pi_{[i]1}^{k-1}, \pi_1^{[i]-1}, \tau_0^l, \varphi_0^l,\vectorn{t}) \nonumber \\
& & \funp{P}(\pi_{[i]k}=j|\pi_{[i]1}^{k-1}, \pi_1^{[i]-1}, \tau_0^l, \varphi_0^l,\vectorn{\emph{t}}) \nonumber \\
&= & d_{>1}(v_j-v_{\pi_{[i]k-1}}|B(s_j), v_m-v_{\pi_{[i]k-1}}-\varphi_{[i]}+k) \cdot (1-\delta(v_j,v_{j-1}))
\label{eq:6-25}
\end{eqnarray}
\noindent 这里,因子$1-\delta(v_j, v_{j-1})$是用来判断第$j$个位置是不是为空。如果第$j$个位置为空则$v_j = v_{j-1}$,这样$\funp{P}(\pi_{[i]1}=j|\pi_1^{[i]-1}, \tau_0^l, \varphi_0^l, \vectorn{t}) = 0$。这样就从模型上避免了模型3和模型4中生成不存在的字符串的问题。这里还要注意的是,对于放置第一个单词的情况,影响放置的因素有$v_j$$B(s_i)$$v_{j-1}$。此外还要考虑位置$j$放置了第一个源语言单词以后它的右边是不是还有足够的位置留给剩下的$k-1$个源语言单词。参数$v_m-(\varphi_{[i]}-1)$正是为了考虑这个因素,这里$v_m$表示整个源语言句子中还有多少空位置,$\varphi_{[i]}-1$ 表示源语言位置$j$右边至少还要留出的空格数。对于放置非第一个单词的情况,主要是要考虑它和前一个放置位置的相对位置。这主要体现在参数$v_j-v_{\varphi_{[i]}k-1}$上。式\ref{eq:6-25} 的其他部分都可以用上面的理论解释,这里不再赘述。
\noindent 这里,因子$1-\delta(v_j, v_{j-1})$是用来判断第$j$个位置是不是为空。如果第$j$个位置为空则$v_j = v_{j-1}$,这样$\funp{P}(\pi_{[i]1}=j|\pi_1^{[i]-1}, \tau_0^l, \varphi_0^l, \vectorn{\emph{t}}) = 0$。这样就从模型上避免了模型3和模型4中生成不存在的字符串的问题。这里还要注意的是,对于放置第一个单词的情况,影响放置的因素有$v_j$$B(s_i)$$v_{j-1}$。此外还要考虑位置$j$放置了第一个源语言单词以后它的右边是不是还有足够的位置留给剩下的$k-1$个源语言单词。参数$v_m-(\varphi_{[i]}-1)$正是为了考虑这个因素,这里$v_m$表示整个源语言句子中还有多少空位置,$\varphi_{[i]}-1$ 表示源语言位置$j$右边至少还要留出的空格数。对于放置非第一个单词的情况,主要是要考虑它和前一个放置位置的相对位置。这主要体现在参数$v_j-v_{\varphi_{[i]}k-1}$上。式\ref{eq:6-25} 的其他部分都可以用上面的理论解释,这里不再赘述。
\parinterval 实际上,模型5和模型4的思想基本一致,即,先确定$\tau_{[i]1}$的绝对位置,然后再确定$\tau_{[i]}$中剩余单词的相对位置。模型5消除了产生不存在的句子的可能性,不过模型5的复杂性也大大增加了。
%----------------------------------------------------------------------------------------
......@@ -426,23 +426,23 @@ p_0+p_1 & = & 1 \label{eq:6-21}
\subsection{``缺陷''问题}
\parinterval IBM模型的缺陷是指翻译模型会把一部分概率分配给一些根本不存在的源语言字符串。如果用$\funp{P}(\textrm{well}|\vectorn{t})$表示$\funp{P}(\vectorn{s}| \vectorn{t})$在所有的正确的(可以理解为语法上正确的)$\vectorn{s}$上的和,即
\parinterval IBM模型的缺陷是指翻译模型会把一部分概率分配给一些根本不存在的源语言字符串。如果用$\funp{P}(\textrm{well}|\vectorn{\emph{t}})$表示$\funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}})$在所有的正确的(可以理解为语法上正确的)$\vectorn{\emph{s}}$上的和,即
\begin{eqnarray}
\funp{P}(\textrm{well}|\vectorn{t})=\sum_{\vectorn{s}\textrm{\;is\;well\;formed}}{\funp{P}(\vectorn{s}| \vectorn{t})}
\funp{P}(\textrm{well}|\vectorn{\emph{t}})=\sum_{\vectorn{\emph{s}}\textrm{\;is\;well\;formed}}{\funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}})}
\label{eq:6-26}
\end{eqnarray}
\parinterval 类似地,用$\funp{P}(\textrm{ill}|\vectorn{t})$表示$\funp{P}(\vectorn{s}| \vectorn{t})$在所有的错误的(可以理解为语法上错误的)$\vectorn{s}$上的和。如果$\funp{P}(\textrm{well}|\vectorn{t})+ \funp{P}(\textrm{ill}|\vectorn{t})<1$,就把剩余的部分定义为$\funp{P}(\textrm{failure}|\vectorn{t})$。它的形式化定义为,
\parinterval 类似地,用$\funp{P}(\textrm{ill}|\vectorn{\emph{t}})$表示$\funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}})$在所有的错误的(可以理解为语法上错误的)$\vectorn{\emph{s}}$上的和。如果$\funp{P}(\textrm{well}|\vectorn{\emph{t}})+ \funp{P}(\textrm{ill}|\vectorn{\emph{t}})<1$,就把剩余的部分定义为$\funp{P}(\textrm{failure}|\vectorn{\emph{t}})$。它的形式化定义为,
\begin{eqnarray}
\funp{P}({\textrm{failure}|\vectorn{t}}) = 1 - \funp{P}({\textrm{well}|\vectorn{t}}) - \funp{P}({\textrm{ill}|\vectorn{t}})
\funp{P}({\textrm{failure}|\vectorn{\emph{t}}}) = 1 - \funp{P}({\textrm{well}|\vectorn{\emph{t}}}) - \funp{P}({\textrm{ill}|\vectorn{\emph{t}}})
\label{eq:6-27}
\end{eqnarray}
\parinterval 本质上,模型3和模型4就是对应$\funp{P}({\textrm{failure}|\vectorn{t}})>0$的情况。这部分概率是模型损失掉的。有时候也把这类缺陷称为{\small\bfnew{物理缺陷}}\index{物理缺陷}(Physical Deficiency\index{Physical Deficiency})或{\small\bfnew{技术缺陷}}\index{技术缺陷}(Technical Deficiency\index{Technical Deficiency})。还有一种缺陷被称作{\small\bfnew{精神缺陷}}(Spiritual Deficiency\index{Spiritual Deficiency})或{\small\bfnew{逻辑缺陷}}\index{逻辑缺陷}(Logical Deficiency\index{Logical Deficiency}),它是指$\funp{P}({\textrm{well}|\vectorn{t}}) + \funp{P}({\textrm{ill}|\vectorn{t}}) = 1$$\funp{P}({\textrm{ill}|\vectorn{t}}) > 0$的情况。模型1 和模型2 就有逻辑缺陷。可以注意到,技术缺陷只存在于模型3 和模型4 中,模型1和模型2并没有技术缺陷问题。根本原因在于模型1和模型2的词对齐是从源语言出发对应到目标语言,$\vectorn{t}$$\vectorn{s}$ 的翻译过程实际上是从单词$s_1$开始到单词$s_m$ 结束,依次把每个源语言单词$s_j$对应到唯一一个目标语言位置。显然,这个过程能够保证每个源语言单词仅对应一个目标语言单词。但是,模型3 和模型4中对齐是从目标语言出发对应到源语言,$\vectorn{t}$$\vectorn{s}$的翻译过程从$t_1$开始$t_l$ 结束,依次把目标语言单词$t_i$生成的单词对应到某个源语言位置上。但是这个过程不能保证$t_i$中生成的单词所对应的位置没有被其他单词占用,因此也就产生了缺陷。
\parinterval 本质上,模型3和模型4就是对应$\funp{P}({\textrm{failure}|\vectorn{\emph{t}}})>0$的情况。这部分概率是模型损失掉的。有时候也把这类缺陷称为{\small\bfnew{物理缺陷}}\index{物理缺陷}(Physical Deficiency\index{Physical Deficiency})或{\small\bfnew{技术缺陷}}\index{技术缺陷}(Technical Deficiency\index{Technical Deficiency})。还有一种缺陷被称作{\small\bfnew{精神缺陷}}(Spiritual Deficiency\index{Spiritual Deficiency})或{\small\bfnew{逻辑缺陷}}\index{逻辑缺陷}(Logical Deficiency\index{Logical Deficiency}),它是指$\funp{P}({\textrm{well}|\vectorn{\emph{t}}}) + \funp{P}({\textrm{ill}|\vectorn{\emph{t}}}) = 1$$\funp{P}({\textrm{ill}|\vectorn{\emph{t}}}) > 0$的情况。模型1 和模型2 就有逻辑缺陷。可以注意到,技术缺陷只存在于模型3 和模型4 中,模型1和模型2并没有技术缺陷问题。根本原因在于模型1和模型2的词对齐是从源语言出发对应到目标语言,$\vectorn{\emph{t}}$$\vectorn{\emph{s}}$ 的翻译过程实际上是从单词$s_1$开始到单词$s_m$ 结束,依次把每个源语言单词$s_j$对应到唯一一个目标语言位置。显然,这个过程能够保证每个源语言单词仅对应一个目标语言单词。但是,模型3 和模型4中对齐是从目标语言出发对应到源语言,$\vectorn{\emph{t}}$$\vectorn{\emph{s}}$的翻译过程从$t_1$开始$t_l$ 结束,依次把目标语言单词$t_i$生成的单词对应到某个源语言位置上。但是这个过程不能保证$t_i$中生成的单词所对应的位置没有被其他单词占用,因此也就产生了缺陷。
\parinterval 这里还要强调的是,技术缺陷是模型3和模型4是模型本身的缺陷造成的,如果有一个``更好''的模型就可以完全避免这个问题。而逻辑缺陷几乎是不能从模型上根本解决的,因为对于任意一种语言都不能枚举所有的句子($\funp{P}({\textrm{ill}|\vectorn{t}})$实际上是得不到的)。
\parinterval 这里还要强调的是,技术缺陷是模型3和模型4是模型本身的缺陷造成的,如果有一个``更好''的模型就可以完全避免这个问题。而逻辑缺陷几乎是不能从模型上根本解决的,因为对于任意一种语言都不能枚举所有的句子($\funp{P}({\textrm{ill}|\vectorn{\emph{t}}})$实际上是得不到的)。
\parinterval IBM的模型5已经解决了技术缺陷问题。但逻辑缺陷的解决很困难,因为即使对于人来说也很难判断一个句子是不是``良好''的句子。当然可以考虑用语言模型来缓解这个问题,不过由于在翻译的时候源语言句子都是定义``良好''的句子,$\funp{P}({\textrm{ill}|\vectorn{t}})$$\funp{P}(\vectorn{s}| \vectorn{t})$的影响并不大。但用输入的源语言句子$\vectorn{s}$的``良好性''并不能解决技术缺陷,因为技术缺陷是模型的问题或者模型参数估计方法的问题。无论输入什么样的$\vectorn{s}$,模型3和模型4的技术缺陷问题都存在。
\parinterval IBM的模型5已经解决了技术缺陷问题。但逻辑缺陷的解决很困难,因为即使对于人来说也很难判断一个句子是不是``良好''的句子。当然可以考虑用语言模型来缓解这个问题,不过由于在翻译的时候源语言句子都是定义``良好''的句子,$\funp{P}({\textrm{ill}|\vectorn{\emph{t}}})$$\funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}})$的影响并不大。但用输入的源语言句子$\vectorn{\emph{s}}$的``良好性''并不能解决技术缺陷,因为技术缺陷是模型的问题或者模型参数估计方法的问题。无论输入什么样的$\vectorn{\emph{s}}$,模型3和模型4的技术缺陷问题都存在。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -450,7 +450,7 @@ p_0+p_1 & = & 1 \label{eq:6-21}
\subsection{句子长度}
\parinterval 在IBM模型中,$\funp{P}(\vectorn{t})\funp{P}(\vectorn{s}| \vectorn{t})$会随着目标语言句子长度的增加而减少,因为这种模型有多个概率化的因素组成,乘积项越多结果的值越小。这也就是说,IBM模型会更倾向选择长度短一些的目标语言句子。显然这种对短句子的偏向性并不是机器翻译所期望的。
\parinterval 在IBM模型中,$\funp{P}(\vectorn{\emph{t}})\funp{P}(\vectorn{\emph{s}}| \vectorn{\emph{t}})$会随着目标语言句子长度的增加而减少,因为这种模型有多个概率化的因素组成,乘积项越多结果的值越小。这也就是说,IBM模型会更倾向选择长度短一些的目标语言句子。显然这种对短句子的偏向性并不是机器翻译所期望的。
\parinterval 这个问题在很多机器翻译系统中都存在。它实际上也反应了一种{\small\bfnew{系统偏置}}\index{系统偏置}(System Bias)\index{System Bias}的体现。为了消除这种偏置,可以通过在模型中增加一个短句子惩罚引子来抵消掉模型对短句子的倾向性。比如,可以定义一个惩罚引子,它的值随着长度的减少而增加。不过,简单引入这样的惩罚因子会导致模型并不符合一个严格的噪声信道模型。它对应一个基于判别式框架的翻译模型,这部分内容会在{\chapterseven}进行介绍。
......@@ -460,7 +460,7 @@ p_0+p_1 & = & 1 \label{eq:6-21}
\subsection{其他问题}
\parinterval 模型5的意义是什么?模型5的提出是为了消除模型3和模型4的缺陷。缺陷的本质是,$\funp{P}(\vectorn{s},\vectorn{a}| \vectorn{t})$在所有合理的对齐上概率和不为1。 但是,在这里更关心是哪个对齐$\vectorn{a}$使$\funp{P}(\vectorn{s},\vectorn{a}| \vectorn{t})$达到最大,即使$\funp{P}(\vectorn{s},\vectorn{a}|\vectorn{t})$不符合概率分布的定义,也并不影响我们寻找理想的对齐$\vectorn{a}$。从工程的角度说,$\funp{P}(\vectorn{s},\vectorn{a}| \vectorn{t})$不归一并不是一个十分严重的问题。遗憾的是,实际上到现在为止有太多对IBM模型3和模型4中的缺陷进行过系统的实验和分析,但对于这个问题到底有多严重并没有定论。当然用模型5是可以解决这个问题。但是如果用一个非常复杂的模型去解决了一个并不产生严重后果的问题,那这个模型也就没有太大意义了(从实践的角度)。
\parinterval 模型5的意义是什么?模型5的提出是为了消除模型3和模型4的缺陷。缺陷的本质是,$\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}| \vectorn{\emph{t}})$在所有合理的对齐上概率和不为1。 但是,在这里更关心是哪个对齐$\vectorn{\emph{a}}$使$\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}| \vectorn{\emph{t}})$达到最大,即使$\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}|\vectorn{\emph{t}})$不符合概率分布的定义,也并不影响我们寻找理想的对齐$\vectorn{\emph{a}}$。从工程的角度说,$\funp{P}(\vectorn{\emph{s}},\vectorn{\emph{a}}| \vectorn{\emph{t}})$不归一并不是一个十分严重的问题。遗憾的是,实际上到现在为止有太多对IBM模型3和模型4中的缺陷进行过系统的实验和分析,但对于这个问题到底有多严重并没有定论。当然用模型5是可以解决这个问题。但是如果用一个非常复杂的模型去解决了一个并不产生严重后果的问题,那这个模型也就没有太大意义了(从实践的角度)。
\parinterval 概念(cept.)的意义是什么?经过前面的分析可知,IBM模型的词对齐模型使用了cept.这个概念。但是,在IBM模型中使用的cept.最多只能对应一个目标语言单词(模型并没有用到源语言cept. 的概念)。因此可以直接用单词代替cept.。这样,即使不引入cept.的概念,也并不影响IBM模型的建模。实际上,cept.的引入确实可以帮助我们从语法和语义的角度解释词对齐过程。不过,这个方法在IBM 模型中的效果究竟如何还没有定论。
......@@ -478,7 +478,7 @@ p_0+p_1 & = & 1 \label{eq:6-21}
\item 扭曲度是机器翻译中的一个经典概念。广义上来说,事物位置的变换都可以用扭曲度进行描述,比如,在物理成像系统中,扭曲度模型可以帮助进行镜头校正\upcite{1966Decentering,ClausF05}。在机器翻译中,扭曲度本质上在描述源语言和目标源单词顺序的偏差。这种偏差可以用于对调序的建模。因此扭曲度的使用也可以被看做是一种对调序问题的描述,这也是机器翻译区别于语音识别等任务的主要因素之一。在早期的统计机器翻译系统中,如Pharaoh\upcite{DBLP:conf/amta/Koehn04},大量使用了扭曲度这个概念。虽然,随着机器翻译的发展,更复杂的调序模型被提出\upcite{Gros2008MSD,xiong2006maximum,och2004alignment,DBLP:conf/naacl/KumarB05,li-etal-2014-neural,vaswani2017attention},但是扭曲度所引发的对调序问题的思考是非常深刻的,这也是IBM模型最大的贡献之一。
\vspace{0.5em}
\item IBM模型的另一个贡献是在机器翻译中引入了繁衍率的概念。本质上,繁衍率是一种对翻译长度的建模。在IBM模型中,通过计算单词的繁衍率就可以得到整个句子的长度。需要注意的是,在机器翻译中译文长度对翻译性能有着至关重要的影响。虽然,在很多机器翻译模型中并没有直接使用繁衍率这个概念,但是几乎所有的现代机器翻译系统中都有译文长度的控制模块。比如,在统计机器翻译和神经机器翻译中,都把译文单词数量作为一个特征用于生成合理长度的译文\upcite{Koehn2007Moses,ChiangLMMRS05,bahdanau2014neural}。此外,在神经机器翻译中,非自回归的解码中也使用繁衍率模型对译文长度进行预测\ref{2018Non}
\item IBM模型的另一个贡献是在机器翻译中引入了繁衍率的概念。本质上,繁衍率是一种对翻译长度的建模。在IBM模型中,通过计算单词的繁衍率就可以得到整个句子的长度。需要注意的是,在机器翻译中译文长度对翻译性能有着至关重要的影响。虽然,在很多机器翻译模型中并没有直接使用繁衍率这个概念,但是几乎所有的现代机器翻译系统中都有译文长度的控制模块。比如,在统计机器翻译和神经机器翻译中,都把译文单词数量作为一个特征用于生成合理长度的译文\upcite{Koehn2007Moses,ChiangLMMRS05,bahdanau2014neural}。此外,在神经机器翻译中,非自回归的解码中也使用繁衍率模型对译文长度进行预测\upcite{2018Non}
\vspace{0.5em}
\end{itemize}
......
......@@ -328,7 +328,7 @@ d = {r_1} \circ {r_2} \circ {r_3} \circ {r_4}
\begin{definition} 与词对齐相兼容的层次短语规则
{\small
对于句对$(\vectorn{s},\vectorn{t})$和它们之间的词对齐$\vectorn{a}$,令$\Phi$表示在句对$(\vectorn{s},\vectorn{t})$上与$\vectorn{a}$相兼容的双语短语集合。则:
对于句对$(\vectorn{\emph{s}},\vectorn{\emph{t}})$和它们之间的词对齐$\vectorn{\emph{a}}$,令$\Phi$表示在句对$(\vectorn{\emph{s}},\vectorn{\emph{t}})$上与$\vectorn{\emph{a}}$相兼容的双语短语集合。则:
\begin{enumerate}
\item 如果$(x,y)\in \Phi$,则$\textrm{X} \to \langle x,y,\phi \rangle$是与词对齐相兼容的层次短语规则。
\item 对于$(x,y)\in \Phi$,存在$m$个双语短语$(x_i,y_j)\in \Phi$,同时存在(1,$...$,$m$)上面的一个排序$\sim = \{\pi_1 , ... ,\pi_m\}$,且:
......@@ -376,7 +376,7 @@ y&=&\beta_0 y_{\pi_1} \beta_1 y_{\pi_2} ... \beta_{m-1} y_{\pi_m} \beta_m
\subsection{翻译特征}
\parinterval 在层次短语模型中,每个翻译推导都有一个模型得分$\textrm{score}(d,\vectorn{s},\vectorn{t})$$\textrm{score}(d,\vectorn{s},\vectorn{t})$是若干特征的线性加权之和:$\textrm{score}(d,\vectorn{t},\vectorn{s})=\sum_{i=1}^M\lambda_i\cdot h_i (d,\vectorn{t},\vectorn{s})$,其中$\lambda_i$是特征权重,$h_i (d,\vectorn{t},\vectorn{s})$是特征函数。层次短语模型的特征包括与规则相关的特征和语言模型特征,如下:
\parinterval 在层次短语模型中,每个翻译推导都有一个模型得分$\textrm{score}(d,\vectorn{\emph{s}},\vectorn{\emph{t}})$$\textrm{score}(d,\vectorn{\emph{s}},\vectorn{\emph{t}})$是若干特征的线性加权之和:$\textrm{score}(d,\vectorn{\emph{t}},\vectorn{\emph{s}})=\sum_{i=1}^M\lambda_i\cdot h_i (d,\vectorn{\emph{t}},\vectorn{\emph{s}})$,其中$\lambda_i$是特征权重,$h_i (d,\vectorn{\emph{t}},\vectorn{\emph{s}})$是特征函数。层次短语模型的特征包括与规则相关的特征和语言模型特征,如下:
\parinterval 对于每一条翻译规则LHS$\to \langle \alpha, \beta ,\sim \rangle$,有:
......@@ -396,19 +396,19 @@ y&=&\beta_0 y_{\pi_1} \beta_1 y_{\pi_2} ... \beta_{m-1} y_{\pi_m} \beta_m
\parinterval 这些特征可以被具体描述为:
\begin{eqnarray}
h_i (d,\vectorn{t},\vectorn{s})=\sum_{r \in d}h_i (r)
h_i (d,\vectorn{\emph{t}},\vectorn{\emph{s}})=\sum_{r \in d}h_i (r)
\label{eq:8-4}
\end{eqnarray}
\parinterval 公式\ref{eq:8-4}中,$r$表示推导$d$中的一条规则,$h_i (r)$表示规则$r$上的第$i$个特征。可以看出,推导$d$的特征值就是所有包含在$d$中规则的特征值的和。进一步,可以定义
\begin{eqnarray}
\textrm{rscore}(d,\vectorn{t},\vectorn{s})=\sum_{i=1}^7 \lambda_i \cdot h_i (d,\vectorn{t},\vectorn{s})
\textrm{rscore}(d,\vectorn{\emph{t}},\vectorn{\emph{s}})=\sum_{i=1}^7 \lambda_i \cdot h_i (d,\vectorn{\emph{t}},\vectorn{\emph{s}})
\label{eq:8-5}
\end{eqnarray}
\parinterval 最终,模型得分被定义为:
\begin{eqnarray}
\textrm{score}(d,\vectorn{t},\vectorn{s})=\textrm{rscore}(d,\vectorn{t},\vectorn{s})+ \lambda_8 \textrm{log}⁡(\textrm{P}_{\textrm{lm}}(\vectorn{t}))+\lambda_9 \mid \vectorn{t} \mid
\textrm{score}(d,\vectorn{\emph{t}},\vectorn{\emph{s}})=\textrm{rscore}(d,\vectorn{\emph{t}},\vectorn{\emph{s}})+ \lambda_8 \textrm{log}⁡(\textrm{P}_{\textrm{lm}}(\vectorn{\emph{t}}))+\lambda_9 \mid \vectorn{\emph{t}} \mid
\label{eq:8-6}
\end{eqnarray}
......@@ -432,14 +432,14 @@ h_i (d,\vectorn{t},\vectorn{s})=\sum_{r \in d}h_i (r)
\parinterval 层次短语模型解码的目标是找到模型得分最高的推导,即:
\begin{eqnarray}
\hat{d} = \argmax_{d}\ \textrm{score}(d,\vectorn{s},\vectorn{t})
\hat{d} = \argmax_{d}\ \textrm{score}(d,\vectorn{\emph{s}},\vectorn{\emph{t}})
\label{eq:8-7}
\end{eqnarray}
\noindent 这里,$\hat{d}$的目标语部分即最佳译文$\hat{\vectorn{t}}$。令函数$t(\cdot)$返回翻译推导的目标语词串,于是有:
\noindent 这里,$\hat{d}$的目标语部分即最佳译文$\hat{\vectorn{\emph{t}}}$。令函数$t(\cdot)$返回翻译推导的目标语词串,于是有:
\begin{eqnarray}
\hat{\vectorn{t}}=t(\hat{d})
\hat{\vectorn{\emph{t}}}=t(\hat{d})
\label{eq:8-8}
\end{eqnarray}
......@@ -1305,7 +1305,7 @@ r_9: \quad \textrm{IP(}\textrm{NN}_1\ \textrm{VP}_2) \rightarrow \textrm{S(}\tex
\subsection{句法翻译模型的特征}
\parinterval 基于语言学句法的翻译模型使用判别式模型对翻译推导进行建模({\chapterseven}数学建模小节)。给定双语句对($\vectorn{s}$,$\vectorn{t}$),由$M$个特征经过线性加权,得到每个翻译推导$d$的得分,记为$\textrm{score(}d,\vectorn{t},\vectorn{s})=\sum_{i=1}^{M} \lambda_i \cdot h_{i}(d,\vectorn{t},\vectorn{s})$,其中$\lambda_i$表示特征权重,$h_{i}(d,\vectorn{t},\vectorn{s})$表示特征函数。翻译的目标就是要找到使$\textrm{score(}d,\vectorn{t},\vectorn{s})$达到最高的推导$d$
\parinterval 基于语言学句法的翻译模型使用判别式模型对翻译推导进行建模({\chapterseven}数学建模小节)。给定双语句对($\vectorn{\emph{s}}$,$\vectorn{\emph{t}}$),由$M$个特征经过线性加权,得到每个翻译推导$d$的得分,记为$\textrm{score(}d,\vectorn{\emph{t}},\vectorn{\emph{s}})=\sum_{i=1}^{M} \lambda_i \cdot h_{i}(d,\vectorn{\emph{t}},\vectorn{\emph{s}})$,其中$\lambda_i$表示特征权重,$h_{i}(d,\vectorn{\emph{t}},\vectorn{\emph{s}})$表示特征函数。翻译的目标就是要找到使$\textrm{score(}d,\vectorn{\emph{t}},\vectorn{\emph{s}})$达到最高的推导$d$
\parinterval 这里,可以使用最小错误率训练对特征权重进行调优({\chapterseven}最小错误率训练小节)。而特征函数可参考如下定义:
......@@ -1346,9 +1346,9 @@ r_9: \quad \textrm{IP(}\textrm{NN}_1\ \textrm{VP}_2) \rightarrow \textrm{S(}\tex
\begin{itemize}
\vspace{0.5em}
\item (h8)语言模型得分(取对数),即$\log(\textrm{P}_{\textrm{lm}}(\vectorn{t}))$,用于度量译文的流畅度;
\item (h8)语言模型得分(取对数),即$\log(\textrm{P}_{\textrm{lm}}(\vectorn{\emph{t}}))$,用于度量译文的流畅度;
\vspace{0.5em}
\item (h9)译文长度,即$|\vectorn{t}|$,用于避免模型过于倾向生成短译文(因为短译文语言模型分数高);
\item (h9)译文长度,即$|\vectorn{\emph{t}}|$,用于避免模型过于倾向生成短译文(因为短译文语言模型分数高);
\vspace{0.5em}
\item (h10)翻译规则数量,学习对使用规则数量的偏好。比如,如果这个特征的权重较高,则表明系统更喜欢使用数量多的规则;
\vspace{0.5em}
......@@ -1455,7 +1455,7 @@ d_1 = {d'} \circ {r_5}
\parinterval 解码的目标是找到得分score($d$)最高的推导$d$。这个过程通常被描述为:
\begin{eqnarray}
\hat{d} = \argmax_d\ \textrm{score} (d,\vectorn{s},\vectorn{t})
\hat{d} = \argmax_d\ \textrm{score} (d,\vectorn{\emph{s}},\vectorn{\emph{t}})
\label{eq:8-13}
\end{eqnarray}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论