Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
Toy-MT-Introduction
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
NiuTrans
Toy-MT-Introduction
Commits
46bc2584
Commit
46bc2584
authored
Apr 30, 2020
by
xiaotong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
updates of section 4
parent
382fb044
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
54 行增加
和
31 行删除
+54
-31
Book/Chapter4/Figures/content-of-chart-in-tree-based-decoding.tex
+1
-1
Book/Chapter4/Figures/one-best-node-alignment-and-alignment-matrix.tex
+2
-2
Book/Chapter4/chapter4.tex
+50
-27
Book/mt-book-xelatex.idx
+1
-1
没有找到文件。
Book/Chapter4/Figures/content-of-chart-in-tree-based-decoding.tex
查看文件 @
46bc2584
...
...
@@ -82,7 +82,7 @@
\node
[anchor=west]
(b8) at ([xshift=0em,yshift=-1.5em]b7.west)
{{
VP
}}
;
\node
[anchor=west]
(b9) at ([xshift=0em,yshift=-1.5em]b8.west)
{{
N/A
}}
;
\node
[anchor=west]
(b10) at ([xshift=0em,yshift=-1.5em]b9.west)
{{
VP
}}
;
\node
[anchor=west]
(b11) at ([xshift=0em,yshift=-1.5em]b10.west)
{{
IP(
{
\red
root
}
)
}}
;
\node
[anchor=west]
(b11) at ([xshift=0em,yshift=-1.5em]b10.west)
{{
IP
(
{
\red
root
}
)
}}
;
\node
[anchor=west]
(y2) at ([xshift=0.2em,yshift=-1.7em]y1.west)
{{
猫
}}
;
\node
[anchor=west]
(y3) at ([xshift=0em,yshift=-1.5em]y2.west)
{{
喜欢
}}
;
...
...
Book/Chapter4/Figures/one-best-node-alignment-and-alignment-matrix.tex
查看文件 @
46bc2584
...
...
@@ -105,7 +105,7 @@
\end
{
flushright
}
\begin
{
center
}
\vspace
{
-
1
em
}
(
a
)
Sub
-
tree alignment matrixes for a sample sub
-
tree pair
(
a
)
节点对齐矩阵(
1
-
best vs. Matrix)
\end
{
center
}
\begin
{
center
}
...
...
@@ -147,7 +147,7 @@
\begin
{
center
}
\vspace
{
-
2
em
}
(
b
)
Rules extracted using
1
-
best alignment and alignment posterior.
(
b
)
抽取得到的树到树翻译规则
\end
{
center
}
\end
{
center
}
Book/Chapter4/chapter4.tex
查看文件 @
46bc2584
...
...
@@ -1988,7 +1988,7 @@ r_9: \quad \textrm{IP(}\textrm{NN}_1\ \textrm{VP}_2) \rightarrow \textrm{S(}\tex
\begin{figure}
[htp]
\centering
\input
{
./Chapter4/Figures/one-best-node-alignment-and-alignment-matrix
}
\caption
{
使用1-best节点对齐和概率化节点对齐矩阵的树到树规则抽取
}
\caption
{
使用1-best节点对齐和概率化节点对齐矩阵的树到树规则抽取
\cite
{
xiao2013unsupervised
}
}
\label
{
fig:one-best-node-alignment-and-alignment-matrix
}
\end{figure}
%-------------------------------------------
...
...
@@ -2002,55 +2002,69 @@ r_9: \quad \textrm{IP(}\textrm{NN}_1\ \textrm{VP}_2) \rightarrow \textrm{S(}\tex
\parinterval
这里,可以使用最小错误率训练对特征权重进行调优(
\ref
{
subsection-4.2.6
}
节)。而特征函数可参考如下定义:
\vspace
{
0.5em
}
\parinterval
{
\small\bfnew
{
基于短语的特征
}}
(对应于每条规则
$
r :
\langle\ \alpha
_
h,
\beta
_
h
\ \rangle
\to
\langle\ \alpha
_
r,
\beta
_
r,
\sim\ \rangle
$
)
\begin{itemize}
\item
(h1-2)短语翻译概率,即规则源语言和目标语言树
结构的叶子节点序列的翻译概率。首先,令函数
$
\tau
(
\cdot
)
$
返回一个树片段的叶子节点序列,比如
对于规则:
\item
(h1-2)短语翻译概率,即规则源语言和目标语言树
覆盖的序列翻译概率。令函数
$
\tau
(
\cdot
)
$
返回一个树片段的叶子节点序列。
对于规则:
\begin{displaymath}
\textrm
{
VP(
}
\textrm
{
PP
}_
1
\ \textrm
{
VP(VV(表示)
}
\ \textrm
{
NN
}_
2
\textrm
{
))
}
\rightarrow
\textrm
{
VP(VBZ(was)
}
\ \textrm
{
VP(
}
\textrm
{
VBN
}_
2
\ \textrm
{
PP
}_
1
\textrm
{
))
}
\end{displaymath}
\noindent
可以得到:
\begin{displaymath}
\tau
(
\alpha
_
r ) =
\textrm
{
PP
}
\ \textrm
{
表示
}
\ \textrm
{
NN
}
\end{displaymath}
\begin{displaymath}
\tau
(
\beta
_
r ) =
\textrm
{
was
}
\ \textrm
{
VBN
}
\ \textrm
{
PP
}
\end{displaymath}
\noindent
于是,可以定义短语翻译概率为
$
\textrm
{
P
(
}
\tau
(
\alpha
_
r
)
|
\tau
(
\beta
_
r
))
$
和
$
\textrm
{
P
(
}
\tau
(
\beta
_
r
)
|
\tau
(
\alpha
_
r
))
$
。它们的计算方法与基于短语的系统是完全一样的
\footnote
[9]
{
对于树到串规则,
$
\tau
(
\beta
_
r
)
$
就是规则目标语端的符号串。
}
。
\begin{eqnarray}
\tau
(
\alpha
_
r )
&
=
&
\textrm
{
PP
}
\ \textrm
{
表示
}
\ \textrm
{
NN
}
\nonumber
\\
\tau
(
\beta
_
r )
&
=
&
\textrm
{
was
}
\ \textrm
{
VBN
}
\ \textrm
{
PP
}
\nonumber
\end{eqnarray}
\noindent
于是,可以定义短语翻译概率为
$
\textrm
{
P
(
}
\tau
(
\alpha
_
r
)
|
\tau
(
\beta
_
r
))
$
和
$
\textrm
{
P
(
}
\tau
(
\beta
_
r
)
|
\tau
(
\alpha
_
r
))
$
。它们的计算方法与基于短语的系统是完全一样的
\footnote
[9]
{
对于树到串规则,
$
\tau
(
\beta
_
r
)
$
就是规则目标语言端的符号串。
}
;
\vspace
{
0.3em
}
\item
(h3-4) 词汇化翻译概率,即
$
\textrm
{
P
}_{
\textrm
{
lex
}}
(
\tau
(
\alpha
_
r
)
|
\tau
(
\beta
_
r
))
$
和
$
\textrm
{
P
}_{
\textrm
{
lex
}}
(
\tau
(
\beta
_
r
)
|
\tau
(
\alpha
_
r
))
$
。这两个特征的计算方法与基于短语的系统也是一样的。
\end{itemize}
\vspace
{
0.5em
}
\parinterval
{
\small\bfnew
{
基于句法的特征
}}
(对应于每条规则
$
r :
\langle\ \alpha
_
h,
\beta
_
h
\ \rangle
\to
\langle\ \alpha
_
r,
\beta
_
r,
\sim\ \rangle
$
)
\begin{itemize}
\vspace
{
0.3em
}
\item
(h5)基于根节点句法标签的规则生成概率,即
$
\textrm
{
P
(
}
r|
\textrm
{
root
(
}
r
\textrm
{
))
}$
。这里,
$
\textrm
{
root
(
}
r
)
$
是规则所对应的双语根节点
$
(
\alpha
_
h,
\beta
_
h
)
$
;
\vspace
{
0.3em
}
\item
(h6)基于源语言端的规则生成概率,即
$
\textrm
{
P
(
}
r|
\alpha
_
r
))
$
,给定源语言端生成整个规则的概率;
\vspace
{
0.3em
}
\item
(h7)基于目标语言端的规则生成概率,即
$
\textrm
{
P
(
}
r|
\beta
_
r
))
$
,给定目标语言端生成整个规则的概率。
\end{itemize}
\vspace
{
0.5em
}
\parinterval
{
\small\bfnew
{
其他特征
}}
(对应于整个推导
$
d
$
)
\begin{itemize}
\vspace
{
0.3em
}
\item
(h8)语言模型,即
$
\textrm
{
P
}_{
\textrm
{
lm
}}
(
\textbf
{
t
}
)
$
,用于度量译文的流畅度;
\vspace
{
0.3em
}
\item
(h9)译文长度,即
$
|
\textbf
{
t
}
|
$
,用于避免模型过于倾向生成短译文(因为短译文语言模型分数高);
\vspace
{
0.3em
}
\item
(h10)翻译规则数量,学习对使用规则数量的偏好。比如,如果这个特征的权重较高,则表明系统更喜欢使用数量多的规则;
\vspace
{
0.3em
}
\item
(h11)组合规则的数量,学习对组合规则的偏好;
\vspace
{
0.3em
}
\item
(h12)词汇化规则的数量,学习对含有终结符规则的偏好;
\vspace
{
0.3em
}
\item
(h13)低频规则的数量,学习对训练数据中出现频次低于3的规则的偏好。低频规则大多不可靠,设计这个特征的目的也是为了区分不同质量的规则。
\end{itemize}
\vspace
{
0.5em
}
%--4.4.5 基于超图的推导空间表示---------------------
\subsection
{
基于超图的推导空间表示
}
\index
{
Chapter4.4.5
}
\parinterval
在完成建模后,剩下的问题是:如何组织这些翻译推导,完成高效的计算?本质上,基于句法的机器翻译与句法分析是一样的,因此关于翻译推导的组织可以借用句法分析中的一些概念。
\parinterval
在句法分析中,上下文无关文法(CFG)的分析过程可以被组织成一个叫
有向超图(Directed Hyper-graph)的结构,或者简称为超图
\cite
{
ilprints729
}
:
\parinterval
在句法分析中,上下文无关文法(CFG)的分析过程可以被组织成一个叫
{
\small\bfnew
{
有向超图
}}
(Directed Hyper-graph)的结构,或者简称为
{
\small\bfnew
{
超图
}}
\cite
{
ilprints729
}
:
%-------------------------------------------
\vspace
{
0.5em
}
\begin{definition}
有向超图
{
\small
一个有向超图
$
G
$
包含一个节点集合
$
N
$
和一个有向
超边
集合
$
E
$
。每个有向超边包含一个头(Head)和一个尾(Tail),头指向
$
N
$
中的一个节点,尾是若干个
$
N
$
中的节点所构成的集合。
一个有向超图
$
G
$
包含一个节点集合
$
N
$
和一个有向
{
\small\bfnew
{
超边
}}
(Hyper-edge)
集合
$
E
$
。每个有向超边包含一个头(Head)和一个尾(Tail),头指向
$
N
$
中的一个节点,尾是若干个
$
N
$
中的节点所构成的集合。
}
\end{definition}
%-------------------------------------------
...
...
@@ -2095,21 +2109,23 @@ d_1 = {d'} \circ {r_5}
\noindent
引入
$
d'
$
的意义在于,整个分析过程具有了递归性。从超图上看,
$
d'
$
可以对应以一个(或几个)节点为``根''的子图,因此只需要在这个(或这些)子图上增加新的超边就可以得到更大的推导。这个过程不断执行,最终完成对整个句子的分析。
\parinterval
在句法分析中,超图的结构往往被组织为一种chart结构。所谓chart,就是一个表格,每个格代表了一个跨度,因此可以把所有覆盖这个跨度的推导都放入相应的表格单元(Chart Cell)。对于上下文无关文法,表格里的每一项还会增加一个句法标记,用来区分不同句法功能的推导。比如,对于图
\ref
{
fig:structure-of-chart
}
中的超图,可以被组织成如图
\ref
{
fig:hyper-graph-representation-of-machine-translation-derivation
}
中所示的形式。可以看到,覆盖相同跨度的节点会被放入同一个chart cell,但是不同句法标记的节点会被看作是不同的项(Item)。这种组织方式建立了一个索引,通过索引可以很容易的访问同一个跨度下的所有推导。比如,如果采用自下而上的分析,可以从小跨度的chart cell开始,构建推导,并填写chart cell。这个过程中,可以访问之前的chart cell来获得所需的局部推导(类似于前面提到的
$
d'
$
)。该过程重复执行,直到处理完最大跨度的chart cell。而最后一个chart cell就保存了完整推导的根节点。通过回溯的方式,能够把所有推导都生成出来。
\parinterval
在句法分析中,超图的结构往往被组织为一种Chart结构。所谓Chart,就是一个表格,每个格代表了一个跨度,因此可以把所有覆盖这个跨度的推导都放入相应的表格单元(Chart Cell)。对于上下文无关文法,表格里的每一项还会增加一个句法标记,用来区分不同句法功能的推导。
如图
\ref
{
fig:structure-of-Chart
}
所示,覆盖相同跨度的节点会被放入同一个Chart Cell,但是不同句法标记的节点会被看作是不同的项(Item)。这种组织方式建立了一个索引,通过索引可以很容易的访问同一个跨度下的所有推导。比如,如果采用自下而上的分析,可以从小跨度的Chart Cell开始,构建推导,并填写Chart Cell。这个过程中,可以访问之前的Chart Cell来获得所需的局部推导(类似于前面提到的
$
d'
$
)。该过程重复执行,直到处理完最大跨度的Chart Cell。而最后一个Chart Cell就保存了完整推导的根节点。通过回溯的方式,能够把所有推导都生成出来。
%----------------------------------------------
% 图
\begin{figure}
[htp]
\centering
\input
{
./Chapter4/Figures/structure-of-
c
hart
}
\caption
{
c
hart结构
}
\label
{
fig:structure-of-
c
hart
}
\input
{
./Chapter4/Figures/structure-of-
C
hart
}
\caption
{
C
hart结构
}
\label
{
fig:structure-of-
C
hart
}
\end{figure}
%-------------------------------------------
\parinterval
基于句法的机器翻译仍然可以使用超图进行翻译推导的表示。和句法分析一样,超图的每条边可以对应一个基于树结构的文法,超边的头代表文法的左部,超边的尾代表规则中变量所对应的超图中的节点
\footnote
[10]
{
也可以把每个终结符看作是一个节点,这样一个超边的尾就对应规则的树片段中所有的叶子。
}
。图
\ref
{
fig:hyper-graph-representation-of-machine-translation-derivation
}
给出了一个使用超图来表示机器翻译推导的实例。可以看到,超图的结构是按源语言组织的,但是每个规则(超边)会包含目标语言的信息。由于同步翻译文法可以确保规则的源语言端和目标语言端都覆盖连续的词串,因此超图中的每个节点都对应一个源语言跨度,同时对应一个目标语的连续译文。这样,每个节点实际上代表了一个局部的翻译结果。
\parinterval
不过,机器翻译与句法分析也有不同之处。最主要的区别在于机器翻译使用了语言模型作为一个特征,比如
$
n
$
-gram语言模型。因为语言模型并不是上下文无关的,因此机器翻译中计算最优推导的方法和句法分析会有不同。常用的方法是,直接在每个
chart cell中融合语言模型的分数,保留前
$
k
$
个结果;或者,在构建超图时不计算语言模型得分,等到构建完整个超图之后对最好的若干个推导用语言模型重新排序;再或者,将译文和语言模型都转化为加权有限状态自动机,之后直接对两个自动机做组合
(Composition)得到新的自动机,最后得到融合语言模型得分的译文表示。
\parinterval
不过,机器翻译与句法分析也有不同之处。最主要的区别在于机器翻译使用了语言模型作为一个特征,比如
$
n
$
-gram语言模型。因为语言模型并不是上下文无关的,因此机器翻译中计算最优推导的方法和句法分析会有不同。常用的方法是,直接在每个
Chart Cell中融合语言模型的分数,保留前
$
k
$
个结果;或者,在构建超图时不计算语言模型得分,等到构建完整个超图之后对最好的若干个推导用语言模型重新排序;再或者,将译文和语言模型都转化为加权有限状态自动机,之后直接对两个自动机做
{
\small\bfnew
{
组合
}}
(Composition)得到新的自动机,最后得到融合语言模型得分的译文表示。
%----------------------------------------------
% 图
...
...
@@ -2136,7 +2152,7 @@ d_1 = {d'} \circ {r_5}
\noindent
这也是一种标准的
{
\small\bfnew
{
基于串的解码
}}
(String-based Decoding),即通过句法模型对输入的源语言句子进行翻译得到译文串。不过,搜索所有的推导会导致巨大的解码空间。对于树到串和树到树翻译来说来说,源语言句法树是可见的,因此可以使用另一种解码方法
\ \dash
\
{
\small\bfnew
{
基于树的解码
}}
(Tree-based Decoding),即把输出入的源语句法树翻译为目标语串。
\parinterval
表
\ref
{
tab:decode-base-string-vs-base-tree
}
对比了基于串和基于树的解码方法。可以看到,基于树的解码只考虑了与源语言句法树兼容的推导,因此搜索空间更小,
不过
解码速度会更快。
\parinterval
表
\ref
{
tab:decode-base-string-vs-base-tree
}
对比了基于串和基于树的解码方法。可以看到,基于树的解码只考虑了与源语言句法树兼容的推导,因此搜索空间更小,解码速度会更快。
%----------------------------------------------
% 表4.1
...
...
@@ -2151,7 +2167,7 @@ d_1 = {d'} \circ {r_5}
\rule
{
0pt
}{
15pt
}
解码方法
&
$
\hat
{
d
}
=
\arg\max
_{
d
\in
D
_{
\textrm
{
tree
}}}
\textrm
{
score
}
(
d
)
$
&
$
\hat
{
d
}
=
\arg\max
_{
d
\in
D
}
\textrm
{
score
}
(
d
)
$
\\
\rule
{
0pt
}{
15pt
}
搜索空间
&
与输入的源语句法树兼容的推导
$
D
_{
\textrm
{
tree
}}$
&
所有的推导
$
D
$
\\
\rule
{
0pt
}{
15pt
}
适用模型
&
树到串、树到树
&
所有的句法模型
\\
\rule
{
0pt
}{
15pt
}
解码算法
&
c
hart解码
&
CYK + 规则二叉化
\\
\rule
{
0pt
}{
15pt
}
解码算法
&
C
hart解码
&
CYK + 规则二叉化
\\
\rule
{
0pt
}{
15pt
}
速度
&
快
&
一般较慢
\end{tabular}
}
...
...
@@ -2174,26 +2190,30 @@ d_1 = {d'} \circ {r_5}
%%%%%%%%%%%%%%%%%%
\subsubsection
{
基于树的解码
}
\index
{
Chapter4.4.7.1
}
\parinterval
基于树和基于串的解码都可以使用前面的超图结构进行推导的表示。基于树的解码方法相对简单。直接使用
c
hart结构组织解码空间即可。这里采用自底向上的策略,具体步骤如下:
\parinterval
基于树和基于串的解码都可以使用前面的超图结构进行推导的表示。基于树的解码方法相对简单。直接使用
C
hart结构组织解码空间即可。这里采用自底向上的策略,具体步骤如下:
\begin{itemize}
\vspace
{
0.3em
}
\item
从源语言句法树的叶子节点开始,自下而上访问输入句法树的节点;
\vspace
{
0.3em
}
\item
对于每个树节点,匹配相应的规则;
\vspace
{
0.3em
}
\item
从树的根节点可以得到翻译推导,最终生成最优推导所对应的译文。
\vspace
{
0.3em
}
\end{itemize}
\parinterval
这个过程如图
\ref
{
fig:content-of-
chart-in-tree-based-decoding
}
所示,可以看到,不同的chart cell对应不同跨度,每个chart c
ell会保存相应的句法标记(还有译文的信息)。
\parinterval
这个过程如图
\ref
{
fig:content-of-
Chart-in-tree-based-decoding
}
所示,可以看到,不同的Chart Cell对应不同跨度,每个Chart C
ell会保存相应的句法标记(还有译文的信息)。
%----------------------------------------------
% 图
\begin{figure}
[htp]
\centering
\input
{
./Chapter4/Figures/content-of-
c
hart-in-tree-based-decoding
}
\caption
{
基于树的解码中
c
hart的内容
}
\label
{
fig:content-of-
c
hart-in-tree-based-decoding
}
\input
{
./Chapter4/Figures/content-of-
C
hart-in-tree-based-decoding
}
\caption
{
基于树的解码中
C
hart的内容
}
\label
{
fig:content-of-
C
hart-in-tree-based-decoding
}
\end{figure}
%-------------------------------------------
\parinterval
这里的问题在于规则匹配。对于每个树节点,需要知道以它为根可以匹配的规则有哪些。比较直接的
方法就
是遍历这个节点下一定深度的句法树片段,用每个树片段在文法中找出相应的匹配规则,如图
\ref
{
fig:rule-matching-base-tree
}
所示。不过这种匹配是一种严格匹配,因为它要求句法树片段内的所有内容都要与规则的源语言部分严格对应。有时,句法结构中的细微差别都会导致规则匹配不成功。因此,也可以考虑采用模糊匹配的方式提高规则的命中率,进而增加可以生成推导的数量
\cite
{
zhu2011improving
}
。
\parinterval
这里的问题在于规则匹配。对于每个树节点,需要知道以它为根可以匹配的规则有哪些。比较直接的
解决方法
是遍历这个节点下一定深度的句法树片段,用每个树片段在文法中找出相应的匹配规则,如图
\ref
{
fig:rule-matching-base-tree
}
所示。不过这种匹配是一种严格匹配,因为它要求句法树片段内的所有内容都要与规则的源语言部分严格对应。有时,句法结构中的细微差别都会导致规则匹配不成功。因此,也可以考虑采用模糊匹配的方式提高规则的命中率,进而增加可以生成推导的数量
\cite
{
zhu2011improving
}
。
%----------------------------------------------
% 图
...
...
@@ -2208,9 +2228,9 @@ d_1 = {d'} \circ {r_5}
%%%%%%%%%%%%%%%%%%
\subsubsection
{
基于串的解码
}
\index
{
Chapter4.4.7.2
}
\parinterval
基于串的解码过程和句法分析几乎一样。对于输入的源语言句子,基于串的解码需要找到这个句子上的最优推导。唯一不同的地方在于,机器翻译需要考虑译文的生成(语言模型的引入会使问题稍微复杂一些),但是源语言部分的处理和句法分析是一样的。因为不要求用户输入句法树,所以这种方法同时适用于树到串、串到树、树到树等多种模型。本质上,基于串的解码可以探索更多潜在的树结构,并增大搜索空间(相比基于
串
的解码),因此该方法更有可能找到高质量翻译结果。
\parinterval
基于串的解码过程和句法分析几乎一样。对于输入的源语言句子,基于串的解码需要找到这个句子上的最优推导。唯一不同的地方在于,机器翻译需要考虑译文的生成(语言模型的引入会使问题稍微复杂一些),但是源语言部分的处理和句法分析是一样的。因为不要求用户输入句法树,所以这种方法同时适用于树到串、串到树、树到树等多种模型。本质上,基于串的解码可以探索更多潜在的树结构,并增大搜索空间(相比基于
树
的解码),因此该方法更有可能找到高质量翻译结果。
\parinterval
基于串的解码仍然可以用
chart来组织翻译推导。不过,一个比较有挑战的问题是如何找到每个规则能够匹配的源语言跨度。也就是,对于每个chart c
ell,需要知道哪些规则可以被填入其中。因为,没有用户输入的句法树做指导,理论上输入句子的所有子串要与所有规则进行匹配。匹配时,需要考虑规则中源语言端的符号串(或者树结构的叶子序列)与输入词串匹配的全部可能性。图
\ref
{
fig:cut-different-positions-of-word-string
}
展示了规则匹配输入句子(包含13个词)的所有可能。可以看到,规则源语言端的连续变量会使得匹配情况变得复杂。对于长度为
$
n
$
的词串,匹配含有
$
m
$
个连续变量的规则的时间复杂度是O(
$
n
^{
m
-
1
}$
)。显然当变量个数增加时规则匹配是相当耗时的操作,甚至当变量个数过多时解码无法在可接受的时间内完成。
\parinterval
基于串的解码仍然可以用
Chart来组织翻译推导。不过,一个比较有挑战的问题是如何找到每个规则能够匹配的源语言跨度。也就是,对于每个Chart C
ell,需要知道哪些规则可以被填入其中。因为,没有用户输入的句法树做指导,理论上输入句子的所有子串要与所有规则进行匹配。匹配时,需要考虑规则中源语言端的符号串(或者树结构的叶子序列)与输入词串匹配的全部可能性。图
\ref
{
fig:cut-different-positions-of-word-string
}
展示了规则匹配输入句子(包含13个词)的所有可能。可以看到,规则源语言端的连续变量会使得匹配情况变得复杂。对于长度为
$
n
$
的词串,匹配含有
$
m
$
个连续变量的规则的时间复杂度是O(
$
n
^{
m
-
1
}$
)。显然当变量个数增加时规则匹配是相当耗时的操作,甚至当变量个数过多时解码无法在可接受的时间内完成。
%----------------------------------------------
% 图
...
...
@@ -2224,7 +2244,9 @@ d_1 = {d'} \circ {r_5}
\parinterval
对于这个问题,有两种常用的解决办法:
\begin{itemize}
\item
对文法进行限制。比如,可以限制规则中变量的数量。或者直接不允许连续的变量,这样的规则也被称作满足
{
\small\bfnew
{
Lexicalized Norm Form
}}
(LNF)的规则。比如,层次短语规则就是LNF规则。由于LNF中单词(终结符)可以作为锚点,因此规则匹配时所有变量的匹配范围是固定的;
\vspace
{
0.3em
}
\item
对文法进行限制。比如,可以限制规则中变量的数量;或者不允许连续的变量,这样的规则也被称作满足
{
\small\bfnew
{
Lexicalized Norm Form
}}
(LNF)的规则。比如,层次短语规则就是LNF规则。由于LNF 中单词(终结符)可以作为锚点,因此规则匹配时所有变量的匹配范围是固定的;
\vspace
{
0.3em
}
\item
对规则进行二叉化,使用CYK方法进行分析。这个方法也是句法分析中常用的策略。所谓规则二叉化是把规则转化为最多只含两个变量或连续词串的规则(串到树规则)。比如,对于如下的规则:
\begin{eqnarray}
\textrm
{
喜欢
}
\ \textrm
{
VP
}_
1
\ \textrm
{
NP
}_
2
\rightarrow
\textrm
{
VP(VBZ(likes)
}
\ \textrm
{
VP
}_
1
\ \textrm
{
NP
}_
2 )
\nonumber
...
...
@@ -2236,6 +2258,7 @@ d_1 = {d'} \circ {r_5}
\textrm
{
VP
}_
1
\ \textrm
{
NP
}_
2
&
\rightarrow
&
\textrm
{
V103(
}
\ \textrm
{
VP
}_
1
\ \textrm
{
NP
}_
2 )
\nonumber
\end{eqnarray}
\noindent
可以看到,这两条新的规则源语言端只有两个部分,代表两个分叉。V103是一个新的标签,它没有任何句法含义。不过,为了保证二叉化后规则目标语部分的连续性,需要考虑源语言和目标语二叉化的同步性
\cite
{
zhang2006synchronous,Tong2009Better
}
。这样的规则与CYK方法一起使用完成解码,具体内容可以参考
\ref
{
subsection-4.3.4
}
节的内容。
\vspace
{
0.3em
}
\end{itemize}
\parinterval
总的来说,基于句法的解码器较为复杂。无论是算法的设计还是工程技巧的运用,对开发者的能力都有一定要求。因此开发一个优秀的基于句法的机器翻译系统是一项有挑战的工作。
...
...
Book/mt-book-xelatex.idx
查看文件 @
46bc2584
...
...
@@ -52,4 +52,4 @@
\indexentry{Chapter4.4.7|hyperpage}{73}
\indexentry{Chapter4.4.7.1|hyperpage}{75}
\indexentry{Chapter4.4.7.2|hyperpage}{76}
\indexentry{Chapter4.5|hyperpage}{7
7
}
\indexentry{Chapter4.5|hyperpage}{7
8
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论