自定义 NMT 模型
借助 Cloud Translation 高级版 API,您无需编写代码即可自定义 Google 神经机器翻译 (NMT) 模型。这意味着您可以根据特定领域的内容量身定制自定义模型,并生成比默认 Google NMT 模型更准确的翻译。
NMT 模型涵盖大量语言对,并且非常适合通用文本。自定义模型擅长处理特定领域词汇。通过自定义 NMT 模型,您可以获得与您相关的特定领域术语的正确译文。
如果您运营的专业报告服务有机会扩展到新的国家/地区,为了进入这些市场,需要您将具备高时效性的内容(包括专业术语)实时正确翻译为该国语言。您无需聘请精通双语的员工或与专业译者合作(这两种方式都花费不菲),只需创建并完善自定义模型,即可实时完成翻译工作,而且费用要低得多。
数据准备
为了训练自定义模型,您需要提供源语言和目标语言的匹配句对。这些是源语言和目标语言中含义相同的字词或短语对。句对的含义越接近,模型的效果就会越好。
在整合匹配的细分受众群对的数据集时,应先确定用例:
您想要实现什么结果?
为了实现这一目标,哪些类型的句段需要正确翻译?NMT 模型可以直接实现这一点吗?
人工翻译是否能够以让您满意的方式翻译这些关键句段?如果翻译任务含糊不清,甚至一位精通这两种语言的人也难以提供令人满意的翻译,那么 NMT 模型的表现可能与自定义模型相当。
哪些类型的样本最能反映您的系统需要翻译的细分对类型和范围?
将数据与您的问题领域进行匹配
训练自定义翻译模型的目的是为您创建一个适用于特定语言领域的模型。请确保您的句对尽可能地覆盖您所在行业或关注领域的词汇、用法和语法惯例。您可以查找包含要完成的翻译任务中涵盖的典型用法的文档,并确保您的双语词组的含义尽可能匹配。当然,有时候不同语言在词汇或语法方面无法完美对应,但是,如果可能的话,请尝试获取您预期会用到的各种语义。您构建自定义模型的基础是一个在通用翻译方面已经做得非常出色的模型,您所要做的只是为自定义模型提供针对您特定使用场景的样本,因此请确保它们与您预期的用法相关并具有代表性。
捕获语言空间的多样性
人们很容易认为我们对某个特定领域的描述足够一致,只要有少数翻译人员翻译的少量文本样本,应该足以训练一个适用于其他任何人描述该领域的模型。但我们都是独立的个体,我们每个人写下的文字中都隐藏着自己的个性。包含由大量作者和译者提供的句对的训练数据集更有可能为您提供一个良好的模型,该模型对于翻译来自不同组织的资料非常有用。此外,不要忘了考虑句段长度和结构的多样性;如果一个数据集中的所有句段长度都相同或具有相似的语法结构,则该数据集将无法构建一个能够覆盖所有可能性的良好自定义模型。
寻找数据
确定了所需的数据后,您必须找到一种方法来获取数据。首先,您可以考虑使用组织收集的所有数据。此时您可能会发现,自己已经在收集训练翻译模型所需的数据了。如果没有收集到所需的数据,您可以手动获取或将这项任务外包给第三方提供商。
让人工校对参与其中
如果可行的话,请确保由精通两种语言的人员验证句对之间匹配良好,而且能够代表可读性良好、含义准确的翻译。即使是训练数据电子表格中的行没有对齐这种常见错误,也有可能导致翻译结果完全偏离原义。对您而言,重中之重是为 Cloud Translation 高级版 API 提供高质量的数据,这有助于构建适合您业务的模型。
在开发细分对时,请注意公平性
支持 Google 机器学习产品的核心原则是以人为本的机器学习,这种方法强调负责任的 AI 做法(包括公平性)。机器学习公平性的目标是了解并防止在算法系统或算法辅助决策中,因种族、收入、性取向、宗教、性别以及历史上与歧视和边缘化相关的其他特征而对人们造成的不公正或偏见性待遇。如需了解详情,请参阅我们的指南和以下有关公平意识的说明:
清理杂乱的数据
预处理数据时可能会出错,其中一些错误会切实造成自定义模型的混乱。尤其要注意以下可以修复的数据问题:
- 移除重复的原文句段,尤其是在这些句段具有不同的目标语种译文时。Cloud Translation - Advanced API 仅使用其看到的第一个示例,并在导入时丢弃所有其他对。移除重复内容可确保 Cloud Translation 高级版 API 使用您偏好的翻译。
- 将原文句段与正确的目标语种句段对齐。
- 将句段与指定语言匹配;例如,在中文数据集中仅包含中文句段。
- 对于包含混合语言的目标语种句段,检查未翻译的字词是否有意保留未译,例如产品名称或组织名称。如果在目标语种句段中不小心加入了未翻译的字词,会给训练数据造成干扰,从而影响模型质量。
- 修正包含排字或语法错误的句段,以免您的模型学习这些错误的用例。
- 移除不可翻译的内容,例如占位符标记和 HTML 标记。 无法翻译的内容可能会导致出现标点符号错误。
- 请勿添加将特定实体替换为特定名词的细分对。例如,请避免使用将“总统”等一般性术语翻译为“JFK”等特定总统姓名的示例。这可能会让模型学会将所有 president 实例更改为 JFK。 您应该移除这些细分对,或将特定名词更改为普通名词。
- 移除训练集和测试集中存在的重复句段(如需了解如何将数据集拆分为三个子集,请参阅数据集划分)。
- 将多个句段拆分为不同的句对。用一个许多训练项有 50 个以上词法单元(单词)的数据集进行训练,会生成质量较低的模型。应尽可能将训练项拆分为单个句子。
- 应使用一致的大小写。例如,创建标题会影响模型学习的方式,例如区分标题与正文文本的方式。
- 从 TSV 文件导入数据时,移除 TMX 标记。在某些情况下,您可以将现有翻译记忆库导出到 TSV 文件,其中可能包含 TMX 标记。不过,只有在您从 TMX 文件导入数据时,Cloud Translation - Advanced API 才会清理翻译单元标记,从 TSV 文件导入数据时不会清理这些标记。
数据处理
若出现以下情况,Cloud Translation - Advanced API 将停止解析您的数据输入文件:
- 格式无效。
- 出现不合理的长句对 (10 MB)。
- 文件使用 UTF-8 以外的编码。
对于未能检测出的问题,Cloud Translation 高级版 API 会忽略相关错误,例如:
- TMX 文件中未指定源语言或目标语言的
<tu>元素。 - 其中一个输入句对为空。
若启用自动数据拆分,Cloud Translation - Advanced API 会执行一些额外的处理(请参阅数据集划分):
数据集上传完成后,它会移除具有相同源句段的句对。
在训练前,它会将您的数据随机拆分为三个数据集,拆分比率为 8:1:1(分别对应训练集、验证集和测试集)。
数据集划分
您的分段对数据集分为三个子集,分别用于训练、验证和测试:
训练集
绝大部分数据都应该划分到训练集中。训练集包含您的模型在训练期间“看到”的数据:它用于学习模型的参数,并计算神经网络节点之间连接的权重。验证集
验证集(有时也称为开发集)也用于训练过程。在模型学习期间,框架会使用训练集训练一组候选模型,然后利用模型在验证集上的表现选择生成的最佳模型。系统会基于该表现调整模型的超参数,这些超参数是用来指定模型结构的变量。如果您使用训练集调整超参数,则模型会过度关注您的训练数据。建议使用有一定新颖性的数据集来微调模型结构,让您的模型实现更好的通用性。测试集
测试集完全不参与训练过程。当模型完成全部训练后,我们会利用测试集来对模型提出全新的挑战。通过模型在测试集上的表现,您可以较好地了解模型在使用真实数据时会有怎样的表现。
如果您未手动指定如何将数据集拆分到这些功能中(如准备训练数据中所述),并且您的数据集包含的段对不到 10 万个,则 Cloud Translation - Advanced API 会自动将内容文档的 80% 用于训练,10% 用于验证,另外 10% 用于测试。如果您的数据集中的句对数超过 10 万个,则必须明确指定如何拆分数据。手动拆分可让您更好地控制流程,不仅可以确定拆分百分比,还可以指定要在哪些特定集中包含哪些特定句段对。
正在导入数据
决定好手动拆分还是自动拆分数据后,您可以选择以下两种方法之一添加数据:
您可以用包含源句段和目标句段的制表符分隔值 (TSV) 文件来导入数据,每行包含一个句对。
您可以用 TMX 文件来导入数据,这是一种为自动翻译模型工具提供句对的标准格式(如需详细了解 TMX 格式,请参阅准备训练数据)。如果 TMX 文件包含无效的 XML 标记,Cloud Translation - Advanced API 将忽略这些标记。如果 TMX 文件包含 XML 或 TMX 错误(例如缺少结束标记或
<tmx>元素),并且 Cloud Translation - Advanced API 跳过 1024 个以上无效的 `` 元素,则该 API 会结束处理并返回错误。
初步评估自定义模型
模型训练完成后,您将收到模型性能总结。 点击训练标签页可查看详细的分析数据。 训练标签页中会显示自定义模型和标准 Google NMT 模型的 BLEU 得分,以及使用自定义模型带来的 BLEU 得分性能增益。
BLEU 得分越高,您的模型为与训练数据相似的句段提供的翻译质量也越高。得分在 30-40 范围内被视为良好。如需详细了解 BLEU 得分,请参阅 BLEU 翻译质量指标 BLEU。
还有其他评估指标通常比 BLEU 得分更可靠。如需了解这些评估选项,请参阅评估翻译模型。
调试
调试自定义模型主要是调试数据,而非模型本身。如果模型未按预期方式进行翻译,请检查数据,看看有哪些方面可以改进。
测试
即使 BLEU 得分还不错,自行检查模型以确保其性能符合预期也是一种很好的做法。如果您的训练数据和测试数据来自同一个错误的样本集,则即使翻译完全偏离原义,其得分也可能非常高!在预测标签页上添加一些样本作为输入,并将自定义模型的结果与 Google NMT 基本模型的结果进行比较。您可能会注意到,自己的模型与基本模型生成的预测相同,特别是对于短句段或在训练集较小的情况下,因为基本模型在各种应用场景中已经表现得相当出色。在这种情况下,可尝试使用更长或更复杂的句段。但是,如果您的模型返回的所有句段都与基本模型的预测相同,则可能表示数据存在问题。
如果您特别担心模型会犯某种错误(例如可能导致金钱或声誉损失的翻译错误),请确保您的测试集或测试程序充分涵盖了这种情况,以便您放心地在日常任务中使用模型。
后续步骤
- 如需详细了解如何创建自己的数据集和自定义模型,请参阅准备训练数据。