Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
mtbookv2
概览
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
mtbookv2
Commits
c569b9aa
Commit
c569b9aa
authored
Mar 30, 2021
by
单韦乔
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'shanweiqiao' 到 'caorunzhe'
源语言、目标语言 查看合并请求
!1074
parents
5ece0446
1af4d23d
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
9 行增加
和
9 行删除
+9
-9
Chapter1/chapter1.tex
+7
-7
Chapter13/chapter13.tex
+1
-1
Chapter2/chapter2.tex
+1
-1
没有找到文件。
Chapter1/chapter1.tex
查看文件 @
c569b9aa
...
...
@@ -246,7 +246,7 @@
\sectionnewpage
\section
{
基于规则的方法
}
\label
{
section-1.4
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\parinterval
机器翻译技术大体上可以分为两种方法,分别为基于规则的机器翻译方法以及数据驱动的机器翻译方法。进一步,数据驱动的机器翻译方法又可以分为统计机器翻译方法以及神经机器翻译方法。第一代机器翻译技术是主要使用基于规则的机器翻译方法,其主要思想是通过形式文法定义的规则引入源语言和目标语中的语言学知识。此类方法在机器翻译技术诞生之初就被人所关注,特别是在上世纪70年代,以基于规则方法为代表的专家系统是人工智能中最具代表性的研究领域。甚至到了统计机器翻译时代,很多系统中也大量地使用了基于规则的翻译知识表达形式。
\parinterval
机器翻译技术大体上可以分为两种方法,分别为基于规则的机器翻译方法以及数据驱动的机器翻译方法。进一步,数据驱动的机器翻译方法又可以分为统计机器翻译方法以及神经机器翻译方法。第一代机器翻译技术是主要使用基于规则的机器翻译方法,其主要思想是通过形式文法定义的规则引入源语言和目标语
言
中的语言学知识。此类方法在机器翻译技术诞生之初就被人所关注,特别是在上世纪70年代,以基于规则方法为代表的专家系统是人工智能中最具代表性的研究领域。甚至到了统计机器翻译时代,很多系统中也大量地使用了基于规则的翻译知识表达形式。
\parinterval
早期,基于规则的机器翻译大多依赖人工定义及书写的规则。主要有两类方法
\upcite
{
nirenburg1989knowledge,hutchins1986machine,zarechnak1979history
}
:一类是基于转换规则的机器翻译方法,简称转换法。另一类是基于中间语言的方法。它们都以词典和人工书写的规则库作为翻译知识,用一系列规则的组合完成翻译。
...
...
@@ -287,7 +287,7 @@
\subsection
{
转换法
}
\parinterval
通常一个典型的
{
\small\bfnew
{
基于转换规则的机器翻译
}}
\index
{
基于转换规则的机器翻译
}
(Transfer-based Translation)
\index
{
Transfer-based Translation
}
的过程可以被视为“独立分析-相关转换-独立生成”的过程
\upcite
{
parsing2009speech
}
。如图
\ref
{
fig:1-10
}
所示,这些过程可以分成六个步骤,其中每一个步骤都是通过相应的翻译规则来完成。比如,第一个步骤中需要构建源语
词法分析规则,第二个步骤中需要构建源语
句法分析规则,第三个和第四个步骤中需要构建转换规则,其中包括源语言-目标语言单词和结构转换规则等等。
\parinterval
通常一个典型的
{
\small\bfnew
{
基于转换规则的机器翻译
}}
\index
{
基于转换规则的机器翻译
}
(Transfer-based Translation)
\index
{
Transfer-based Translation
}
的过程可以被视为“独立分析-相关转换-独立生成”的过程
\upcite
{
parsing2009speech
}
。如图
\ref
{
fig:1-10
}
所示,这些过程可以分成六个步骤,其中每一个步骤都是通过相应的翻译规则来完成。比如,第一个步骤中需要构建源语
言词法分析规则,第二个步骤中需要构建源语言
句法分析规则,第三个和第四个步骤中需要构建转换规则,其中包括源语言-目标语言单词和结构转换规则等等。
%----------------------------------------------
\begin{figure}
[htp]
...
...
@@ -317,9 +317,9 @@
\subsection
{
基于中间语言的方法
}
\parinterval
基于转换的方法可以通过词汇层、句法层和语义层完成从源语
到目标语的转换过程,虽然采用了独立分析和独立生成两个子过程,但中间包含一个从源语到目标语
的相关转换过程。这就会导致一个实际问题,假设需要实现
$
N
$
个语言之间互译的机器翻译系统,采用基于转换的方法,需要构建
$
N
(
N
-
1
)
$
个不同的机器翻译系统,这个构建代价是非常高的。为了解决这个问题,一种有效的解决方案是使用
{
\small\bfnew
{
基于中间语言的机器翻译
}}
\index
{
基于中间语言的机器翻译
}
(Interlingua-based Translation)
\index
{
Interlingua-based Translation
}
方法。
\parinterval
基于转换的方法可以通过词汇层、句法层和语义层完成从源语
言到目标语言的转换过程,虽然采用了独立分析和独立生成两个子过程,但中间包含一个从源语言到目标语言
的相关转换过程。这就会导致一个实际问题,假设需要实现
$
N
$
个语言之间互译的机器翻译系统,采用基于转换的方法,需要构建
$
N
(
N
-
1
)
$
个不同的机器翻译系统,这个构建代价是非常高的。为了解决这个问题,一种有效的解决方案是使用
{
\small\bfnew
{
基于中间语言的机器翻译
}}
\index
{
基于中间语言的机器翻译
}
(Interlingua-based Translation)
\index
{
Interlingua-based Translation
}
方法。
\parinterval
如图
\ref
{
fig:1-12
}
所示,基于中间语言方法的最大特点就是采用了一个称之为“中间语言”的知识表示结构,将“中间语言”作为独立源语言分析和独立目标语生成的桥梁,真正实现独立分析和独立生成。并且在基于中间语言的方法中不涉及“相关转换”这个过程,这一点与基于转换的方法有很大区别。
\parinterval
如图
\ref
{
fig:1-12
}
所示,基于中间语言方法的最大特点就是采用了一个称之为“中间语言”的知识表示结构,将“中间语言”作为独立源语言分析和独立目标语
言
生成的桥梁,真正实现独立分析和独立生成。并且在基于中间语言的方法中不涉及“相关转换”这个过程,这一点与基于转换的方法有很大区别。
%----------------------------------------------
\begin{figure}
[htp]
...
...
@@ -332,7 +332,7 @@
\parinterval
从图
\ref
{
fig:1-9
}
可以发现,中间语言(知识表示)处于最顶端,本质上是独立于源语言和目标语言的,这也是基于中间语言的方法可以将分析过程和生成过程分开的原因。
\parinterval
虽然基于中间语言的方法有上述优点,但如何定义中间语言是一个关键问题。严格上说,所谓中间语言本身是一种知识表示结构,承载着源语言句子的分析结果,应该包含和体现尽可能多的源语言知识。如果中间语言的表示能力不强,会导致源语言句子信息丢失,这自然会影响目标语生成结果。
\parinterval
虽然基于中间语言的方法有上述优点,但如何定义中间语言是一个关键问题。严格上说,所谓中间语言本身是一种知识表示结构,承载着源语言句子的分析结果,应该包含和体现尽可能多的源语言知识。如果中间语言的表示能力不强,会导致源语言句子信息丢失,这自然会影响目标语
言
生成结果。
\parinterval
在基于规则的机器翻译方法中,构建中间语言结构的知识表示方式有很多,比较常见的是语法树、语义网、逻辑结构表示或者多种结构的融合等。但不管哪种方法,实际上都无法充分地表达源语言句子所携带的信息。因此,在早期的基于规则的机器翻译研究中,基于中间语言的方法明显弱于基于转换的机器翻译方法。不过,近些年随着神经机器翻译等方法的兴起,使用统一的中间表示来刻画句子又受到了广泛关注。但是,神经机器翻译中的“中间表示”并不是规则系统中的中间语言,二者有着本质区别,这部分内容将会在第十章进行介绍。
...
...
@@ -406,7 +406,7 @@
\parinterval
统计机器翻译兴起于上世纪90年代
\upcite
{
brown1990statistical,gale1993a
}
,它利用统计模型从单/双语语料中自动学习翻译知识。具体来说,可以使用单语语料学习语言模型,使用双语平行语料学习翻译模型,并使用这些统计模型完成对翻译过程的建模。整个过程不需要人工编写规则,也不需要从实例中构建翻译模板。无论是词还是短语,甚至是句法结构,统计机器翻译系统都可以自动学习。人更多的是定义翻译所需的特征和基本翻译单元的形式,而翻译知识都保存在模型的参数中。
\parinterval
图
\ref
{
fig:1-14
}
展示了一个统计机器翻译系统运行的简单实例。整个系统需要两个模型:翻译模型和语言模型。其中,翻译模型从双语平行语料中学习翻译知识,得到短语表,短语表包含了各种单词的翻译及其概率,这样可以度量源语言和目标语言片段之间互为翻译的可能性大小;语言模型从单语语料中学习目标语的词序列生成规律,来衡量目标语言译文的流畅性。最后,将这两种模型联合使用,通过翻译引擎来搜索尽可能多的翻译结果,并计算不同翻译结果的可能性大小,最后将概率最大的译文作为最终结果输出。这个过程并没有显性地使用人工翻译规则和模板,译文的生成仅仅依赖翻译模型和语言模型中的统计参数。
\parinterval
图
\ref
{
fig:1-14
}
展示了一个统计机器翻译系统运行的简单实例。整个系统需要两个模型:翻译模型和语言模型。其中,翻译模型从双语平行语料中学习翻译知识,得到短语表,短语表包含了各种单词的翻译及其概率,这样可以度量源语言和目标语言片段之间互为翻译的可能性大小;语言模型从单语语料中学习目标语
言
的词序列生成规律,来衡量目标语言译文的流畅性。最后,将这两种模型联合使用,通过翻译引擎来搜索尽可能多的翻译结果,并计算不同翻译结果的可能性大小,最后将概率最大的译文作为最终结果输出。这个过程并没有显性地使用人工翻译规则和模板,译文的生成仅仅依赖翻译模型和语言模型中的统计参数。
%----------------------------------------------
\begin{figure}
[htp]
...
...
@@ -427,7 +427,7 @@
\parinterval
随着机器学习技术的发展,基于深度学习的神经机器翻译逐渐兴起。自2014年开始,它在短短几年内已经在大部分任务上取得了明显的优势
\upcite
{
NIPS2014
_
5346,bahdanau2014neural,vaswani2017attention,DBLP:journals/corr/GehringAGYD17,DBLP:journals/corr/LuongPM15
}
。在神经机器翻译中,词串被表示成实数向量,即分布式向量表示。此时,翻译就不再是在离散化的单词和短语上进行,而是在实数向量空间上计算。因此与之前的技术相比,它在词序列表示的方式上有着本质的改变。通常,机器翻译可以被看作一个序列到另一个序列的转化。在神经机器翻译中,序列到序列的转化过程可以由
{
\small\bfnew
{
编码器-解码器
}}
\index
{
编码器-解码器
}
(Encoder-Decoder)
\index
{
Encoder-Decoder
}
框架实现。其中,编码器把源语言序列进行编码,并提取源语言中的信息进行分布式表示,之后解码器再把这种信息转换为另一种语言的表达。
\parinterval
图
\ref
{
fig:1-15
}
展示了一个神经机器翻译的实例。首先,通过编码器,源语言序列“我对你感到满意”经过多层神经网络编码生成一个向量表示,即图中的向量(0.2,-1,6,5,0.7,-2)。再将该向量作为输入送到解码器中,解码器把这个向量解码成目标语言序列。注意,目标语言序列的生成是逐词进行的(虽然图中展示的是解码器一次生成了整个序列,但是在具体实现时是由左至右逐个单词地生成目标语译文),即在生成目标序列中的某个词时,该词的生成依赖之前生成的单词。
\parinterval
图
\ref
{
fig:1-15
}
展示了一个神经机器翻译的实例。首先,通过编码器,源语言序列“我对你感到满意”经过多层神经网络编码生成一个向量表示,即图中的向量(0.2,-1,6,5,0.7,-2)。再将该向量作为输入送到解码器中,解码器把这个向量解码成目标语言序列。注意,目标语言序列的生成是逐词进行的(虽然图中展示的是解码器一次生成了整个序列,但是在具体实现时是由左至右逐个单词地生成目标语
言
译文),即在生成目标序列中的某个词时,该词的生成依赖之前生成的单词。
%----------------------------------------------
\begin{figure}
[htp]
...
...
Chapter13/chapter13.tex
查看文件 @
c569b9aa
...
...
@@ -576,7 +576,7 @@ R(\mathbi{w}) & = & ({\Vert{\mathbi{w}}\Vert}_2)^2 \\
\label
{
eq:13-16
}
\end{eqnarray}
\noindent
其中,
$
\funp
{
r
}_
j
(
a;
\hat
{{
y
}}_{
1
\ldots
j
-
1
}
,
\seq
{
y
}
)
$
是
$
j
$
时刻做出行动
$
a
$
获得的奖励,
$
\funp
{
r
}_
i
(
\hat
{{
y
}}_
i;
\hat
{{
y
}}_{
1
\ldots
j
-
1
}
a
\hat
{{
y
}}_{
j
+
1
\ldots
i
}
,
\seq
{
y
}
)
$
是在
$
j
$
时刻的行动为
$
a
$
的前提下,
$
i
$
时刻的做出行动
$
\hat
{{
y
}}_
i
$
获得的奖励,
$
\hat
{
y
}_{
j
+
1
\ldots
J
}
\sim
\funp
{
p
}
(
\cdot
|
\hat
{
y
}_{
1
\ldots
j
-
1
}
a,
\seq
{
x
}
)
$
表示序列
$
\hat
{
y
}_{
j
+
1
\ldots
J
}$
是根据
$
\funp
{
p
}
(
\cdot
|
\hat
{
y
}_{
1
\ldots
j
-
1
}
a,
\seq
{
x
}
)
$
得到的采样结果,概率函数
$
\funp
{
p
}$
中的
$
\cdot
$
表示序列
$
\hat
{
y
}_{
j
+
1
\ldots
J
}$
服从的随机变量,
$
\seq
{
x
}$
是源语言句子,
$
\seq
{
y
}$
是正确译文,
$
\hat
{{
y
}}_{
1
\ldots
j
-
1
}$
是策略
$
\funp
{
p
}$
产生的译文的前
$
j
-
1
$
个词,
$
J
$
是生成译文的长度。特别的,对于公式
\ref
{
eq:13-16
}
中
$
\hat
{{
y
}}_{
j
+
1
\ldots
i
}$
来说,如果
$
i<j
+
1
$
,则
$
\hat
{{
y
}}_{
j
+
1
\ldots
i
}$
不存在,对于源语句子
$
x
$
,最优策略
$
\hat
{
p
}$
可以被定义为:
\noindent
其中,
$
\funp
{
r
}_
j
(
a;
\hat
{{
y
}}_{
1
\ldots
j
-
1
}
,
\seq
{
y
}
)
$
是
$
j
$
时刻做出行动
$
a
$
获得的奖励,
$
\funp
{
r
}_
i
(
\hat
{{
y
}}_
i;
\hat
{{
y
}}_{
1
\ldots
j
-
1
}
a
\hat
{{
y
}}_{
j
+
1
\ldots
i
}
,
\seq
{
y
}
)
$
是在
$
j
$
时刻的行动为
$
a
$
的前提下,
$
i
$
时刻的做出行动
$
\hat
{{
y
}}_
i
$
获得的奖励,
$
\hat
{
y
}_{
j
+
1
\ldots
J
}
\sim
\funp
{
p
}
(
\cdot
|
\hat
{
y
}_{
1
\ldots
j
-
1
}
a,
\seq
{
x
}
)
$
表示序列
$
\hat
{
y
}_{
j
+
1
\ldots
J
}$
是根据
$
\funp
{
p
}
(
\cdot
|
\hat
{
y
}_{
1
\ldots
j
-
1
}
a,
\seq
{
x
}
)
$
得到的采样结果,概率函数
$
\funp
{
p
}$
中的
$
\cdot
$
表示序列
$
\hat
{
y
}_{
j
+
1
\ldots
J
}$
服从的随机变量,
$
\seq
{
x
}$
是源语言句子,
$
\seq
{
y
}$
是正确译文,
$
\hat
{{
y
}}_{
1
\ldots
j
-
1
}$
是策略
$
\funp
{
p
}$
产生的译文的前
$
j
-
1
$
个词,
$
J
$
是生成译文的长度。特别的,对于公式
\ref
{
eq:13-16
}
中
$
\hat
{{
y
}}_{
j
+
1
\ldots
i
}$
来说,如果
$
i<j
+
1
$
,则
$
\hat
{{
y
}}_{
j
+
1
\ldots
i
}$
不存在,对于源语
言
句子
$
x
$
,最优策略
$
\hat
{
p
}$
可以被定义为:
\begin{eqnarray}
\hat
{
p
}
&
=
&
\argmax
_{
\funp
{
p
}}
\mathbb
{
E
}_{
\hat
{
\seq
{
y
}}
\sim
\funp
{
p
}
(
\hat
{
\seq
{
y
}}
|
\seq
{
x
}
)
}
\sum
_{
j=1
}^
J
\sum
_{
a
\in
A
}
\funp
{
p
}
(a|
\hat
{{
y
}}_{
1
\ldots
j
}
,
\seq
{
x
}
)
\funp
{
Q
}
(a;
\hat
{{
y
}}_{
1
\ldots
j
}
,
\seq
{
y
}
)
\label
{
eq:13-17
}
...
...
Chapter2/chapter2.tex
查看文件 @
c569b9aa
...
...
@@ -819,7 +819,7 @@ c(\cdot) & \textrm{当计算最高阶模型时} \\
\noindent
这里
$
\arg
$
即argument(参数),
$
\argmax
_
x f
(
x
)
$
表示返回使
$
f
(
x
)
$
达到最大的
$
x
$
。
$
\argmax
_{
w
\in
\chi
}$
\\
$
\funp
{
P
}
(
w
)
$
表示找到使语言模型得分
$
\funp
{
P
}
(
w
)
$
达到最大的单词序列
$
w
$
。
$
\chi
$
是搜索问题的解空间,它是所有可能的单词序列
$
w
$
的集合。
$
\hat
{
w
}$
可以被看做该搜索问题中的“最优解”,即概率最大的单词序列。
\parinterval
在序列生成任务中,最简单的策略就是对词表中的单词进行任意组合,通过这种枚举的方式得到全部可能的序列。但是,很多时候待生成序列的长度是无法预先知道的。比如,机器翻译中目标语序列的长度是任意的。那么怎样判断一个序列何时完成了生成过程呢?这里借用现代人类书写中文和英文的过程:句子的生成首先从一片空白开始,然后从左到右逐词生成,除了第一个单词,所有单词的生成都依赖于前面已经生成的单词。为了方便计算机实现,通常定义单词序列从一个特殊的符号<sos>后开始生成。同样地,一个单词序列的结束也用一个特殊的符号<eos>来表示。
\parinterval
在序列生成任务中,最简单的策略就是对词表中的单词进行任意组合,通过这种枚举的方式得到全部可能的序列。但是,很多时候待生成序列的长度是无法预先知道的。比如,机器翻译中目标语
言
序列的长度是任意的。那么怎样判断一个序列何时完成了生成过程呢?这里借用现代人类书写中文和英文的过程:句子的生成首先从一片空白开始,然后从左到右逐词生成,除了第一个单词,所有单词的生成都依赖于前面已经生成的单词。为了方便计算机实现,通常定义单词序列从一个特殊的符号<sos>后开始生成。同样地,一个单词序列的结束也用一个特殊的符号<eos>来表示。
\parinterval
对于一个序列
$
<
$
sos
$
>
$
\
I
\
agree
\
$
<
$
eos
$
>
$
,图
\ref
{
fig:2-12
}
展示语言模型视角下该序列的生成过程。该过程通过在序列的末尾不断附加词表中的单词来逐渐扩展序列,直到这段序列结束。这种生成单词序列的过程被称作
{
\small\bfnew
{
自左向右生成
}}
\index
{
自左向右生成
}
(Left-to-Right Generation)
\index
{
Left-to-Right Generation
}
。注意,这种序列生成策略与
$
n
$
-gram的思想天然契合,因为
$
n
$
-gram语言模型中,每个词的生成概率依赖前面(左侧)若干词,因此
$
n
$
-gram语言模型也是一种自左向右的计算模型。
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论