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
398560f5
Commit
398560f5
authored
Dec 11, 2020
by
xiaotong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wording (sec 18)
parent
3f1c3127
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
13 行增加
和
5 行删除
+13
-5
Chapter18/Figures/figure-comparison-of-incremental-model-optimization-methods.tex
+6
-2
Chapter18/chapter18.tex
+7
-3
没有找到文件。
Chapter18/Figures/figure-comparison-of-incremental-model-optimization-methods.tex
查看文件 @
398560f5
\addtolength
{
\tabcolsep
}{
-4pt
}
\begin{tabular}
{
c c c
}
\begin{tikzpicture}
...
...
@@ -69,4 +71,6 @@
\end{scope}
\end{tikzpicture}
\end{tabular}
\ No newline at end of file
\end{tabular}
\addtolength
{
\tabcolsep
}{
4pt
}
\ No newline at end of file
Chapter18/chapter18.tex
查看文件 @
398560f5
...
...
@@ -111,7 +111,11 @@
%----------------------------------------------------------------------------------------
\section
{
翻译结果可干预性
}
\parinterval
尽管目前神经机器翻译的质量已经很高,但语言现象是复杂多样的,模型在一些特定场景下仍然存在问题,最典型的一个是句子中术语的翻译。在实际应用中,经常会遇到公司名称、品牌名称、产品名称等专有名词和行业术语,以及不同含义的缩写,比如对于“小牛翻译”这个专有术语,不同的机器翻译系统给出的结果不一样:“Maverick translation”、“Calf translation”、“The mavericks translation”……而它正确的翻译应该为“NiuTrans”。对于这些类似的特殊词汇,大多数机器翻译引擎很难翻译得准确,一方面,因为模型大多是在通用数据集上训练出来的,并不能保证数据集能涵盖所有的语言现象,另一方面,即使是这些术语在训练数据中出现,它们通常也是低频的,模型比较难学到。为了保证翻译的准确性,对模型的翻译结果进行干预是十分有必要的,这些干预措施在比如交互式机器翻译、领域适应等一系列环境中也是很有用的。
\parinterval
机器翻译的结果往往是不完美的。因此,在出现错误时,人们总是希望用一种直接有效的方式“改变”译文,到达改善翻译质量的目的。比如,如果机器翻译系统可以输出多个候选译文,人可以在其中挑选最好的译文进行输出。也就是,人干预了译文候选的重排序。另一个例子是使用
{
\small\bfnew
{
翻译记忆
}}
\index
{
翻译记忆
}
(Translation Memory
\index
{
Translation Memory
}
)改善机器翻译系统的性能。翻译记忆记录了高质量的源语言-目标语言句对,有时也可以被看作是一种先验知识。因此,当进行机器翻译(包括统计机器翻译和神经机器翻译)时,使用翻译记忆指导翻译过程也可以被看作是一种干预手段(
{
\color
{
red
}
参考文献!SMT和NMT都有,SMT中CL上有个长文,自动化所的,NMT的我记得腾讯应该有,找到后和我确认一下!
}
)。
\parinterval
虽然干预机器翻译系统的方式很多,人们最经常使用的还是对源语言特定片段指定一些翻译行为,以期望最终句子的译文中满足这种片段翻译的约束。这个问题也被称作
{
\small\bfnew
{
基于约束的翻译
}}
\index
{
基于约束的翻译
}
(Constraint-based Translation
\index
{
Constraint-based Translation
}
)。比如,在网页翻译时,是要保持译文中网页标签与源文是一致的。另一个典型应用是指定句子中术语的翻译。在实际应用中,经常会遇到公司名称、品牌名称、产品名称等专有名词和行业术语,以及不同含义的缩写,比如对于“小牛翻译”这个专有术语,不同的机器翻译系统给出的结果不一样:“Maverick translation”、“Calf translation”、“The mavericks translation”…… 而它正确的翻译应该为“NiuTrans”。 对于这些类似的特殊词汇,大多数机器翻译引擎很难翻译得准确,一方面,因为模型大多是在通用数据集上训练出来的,并不能保证数据集能涵盖所有的语言现象,另一方面,即使是这些术语在训练数据中出现,它们通常也是低频的,模型比较难学到。为了保证翻译的准确性,对模型的翻译结果进行干预是十分有必要的,这些干预措施在比如交互式机器翻译、领域适应等一系列环境中也是很有用的。
\parinterval
就
{
\small\bfnew
术语翻译
}
\index
{
术语翻译
}
(Lexically Constrained Translation)
\index
{
Lexically Constrained Translation
}
而言,在不干预的情况下让模型直接翻译出正确术语是很难的,因为目标术语翻译词很可能是未登录词,因此必须人为提供额外的术语词典,那么我们的目标就是让模型的翻译输出遵守用户提供的术语约束。一个例子如下图所示:
%----------------------------------------------
...
...
@@ -190,13 +194,13 @@
\begin{itemize}
\vspace
{
0.5em
}
\item
对于多语言翻译的场景,使用单模型多语言翻译系统是一种很好的选择(
{
\chaptersixteen
}
)。当多个语种的数据量有限、使用频度不高时,这种方法可以很有效地解决翻译需求中长尾部分。例如,一些线上机器翻译服务已经支持超过100种语言的翻译,其中大部分语言之间的翻译需求是相对低频的,因此使用同一个模型进行翻译可以大大节约部署和运维的成本。
\vspace
{
0.5em
}
\item
使用基于中介语言的翻译也可以有效的解决多语言翻译问题(
{
\chaptersixteen
}
)。这种方法同时适合统计机器翻译和神经机器翻译,因此很早就使用在大规模机器翻译部署中。
\vspace
{
0.5em
}
\item
GPU部署中,由于GPU成本较高,因此可以考虑在单GPU设备上部署多套不同的系统。如果这些系统之间的并发不频繁,翻译延时不会有明显增加。这种多个模型共享一个设备的方法比较适合翻译请求相对低频但是翻译任务又很多样的情况。
\vspace
{
0.5em
}
\item
机器翻译大规模GPU部署对显存的使用也很严格。由于GPU显存较为有限,因此模型运行的显存消耗也是需要考虑的。一般来说,除了模型压缩和结构优化之外(
{
\chapterfourteen
}
和
{
\chapterfifteen
}
),也需要对模型的显存分配和使用进行单独的优化。例如,使用显存池来缓解频繁申请和释放显存空间造成的延时。另外,也可以尽可能让同一个显存块保存生命期不重叠的数据,避免重复开辟新的存储空间。图
\ref
{
fig:18-3
}
展示了一个显存复用的示例。
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论