如何用技术搞好英俄翻译?

神经网络翻译模型受限于其可以使用的词表大小,经常会遇到词表无法覆盖源端和目标端单词的情况,特别是当处理形态丰富的语言(例如俄语、西班牙语等)的时候,词表对全部语料的覆盖度往往不够,这就导致很多“未登录词”的产生,严重影响翻译质量。

已有的工作主要关注在如何调整翻译粒度以及扩展词表大小两个维度上,这些工作可以减少“未登录词”的产生,但是语言本身的形态问题并没有被真正研究和专门解决过。

我们的工作提出了一种创新的方法,不仅能够通过控制翻译粒度来减少数据稀疏,进而减少“未登录词”,还可以通过一个有效的词尾预测机制,大大降低目标端俄语译文的形态错误,提高英俄翻译质量。通过和多个比较有影响力的已有工作(基于subword和character的方法)对比,在5000万量级的超大规模的数据集上,我们的方法可以成功地在基于RNN和Transformer两种主流的神经网络翻译模型上得到稳定的提升。

研究背景

近年来,神经网络机器翻译(Neural Machine Translation, NMT)在很多语种和场景上表现出了明显优于统计机器翻译(Statistic Machine Translation, SMT)的效果。神经网络机器翻译将源语言句子编码(encode)到一个隐状态(hidden state),再从这个隐状态开始解码(decode),逐个生成目标语言的译文词。NMT系统会在目标端设置一个固定大小的词表,解码阶段的每一步中,会从这个固定大小的词表中预测产生一个词,作为当前步骤的译文词。受限于计算机的硬件资源限制,这个词表往往不会设的很大(一般是3万-5万)。

并且随着词表的增大,预测的难度也会相应地增加。基于词(word)的NMT系统经常会遭遇“未登录词”(Out of vocabulary, OOV)的问题,特别是目标端是一个形态丰富(Morphologically Rich)的语言时,这个问题会更加严重。以“英-俄”翻译为例,俄语是一种形态非常丰富的语言,一个3-5万的词表往往不能覆盖俄语端的所有词,会有很多OOV产生。OOV的出现对翻译质量的影响是比较大的。

针对这个问题,有很多方法尝试解决。其中一些方法会从翻译粒度的角度出发(translation granularity),另外还有一些方法尝试有效地扩展目标端词表大小。这些方法虽然能有效地减少OOV,但是这些方法并没有对目标端语言的形态(morphology)进行专门的建模。

对于俄语这种形态丰富的语言,词干(stem)的个数会比词的个数少很多,因此很自然的,我们会想到要对词干和词尾(suffix)分别进行建模。我们设计实现了一种方法,在解码时每一个解码步骤(decoding step)中,分别预测词干和词尾。训练阶段,目标语言端会使用两个序列,分别是词干序列和词尾序列。词干序列和词尾序列的生成过程如下图所示:

76224222a5edc4ac06ac292737b1acff4f5034cf

(词干序列和词尾序列的生成,“N”表示词干和词本身相同,即这个词没有词尾)

通过这种方式,数据稀疏问题会得到缓解,因为词干的种类会显著小于词的种类,而词尾的种类只有几百种。

相关工作

基于子词(subword)的和基于字符(character)的这两种方法,从调整翻译粒度的角度出发来帮助缓解目标端形态丰富语言的翻译问题。一种基于子词的方法利用BPE(Byte Pari Encoding)算法来生成一个词汇表。语料中经常出现的词会被保留在词汇表中,其他的不太常见的词则会被拆分成一些子词。由于少数量的子词就可以拼成全部不常见的词,因此NMT的词表中只保留常见词和这些子词就可以了。

还有一种基于字符的NMT系统,源端句子和目标端句子都会表示为字符的序列,这种系统对源端形态丰富的语言可以处理得比较好,并且通过在源端引入卷积神经网络(convolutional neural network, CNN),远距离的依赖也可以被建模。上述两种方式虽然可以缓解数据稀疏,但是并没有专门对语言的形态进行建模,子词和字符并不是一个完整的语言学单元(unit)。

还有一些研究工作是从如何有效地扩大目标端词汇表出发的,例如在目标端设置一个很大的词汇表,但是每次训练的过程中,只在一个子表上进行预测,这个子表中包含了所有可能出现的译文词。这种方法虽然可以解决未登录词的问题,但是数据稀疏问题仍然存在,因为低频的词是未被充分训练的。

神经网络机器翻译

本文在两种主要的神经网络翻译系统上验证了“基于词尾预测”的方法的有效性,分别是基于递归神经网络的机器翻译(Recurrent Neural Network Based, RNN-based)和谷歌在17年提出的最新的神经网络翻译模型(Transformer),详细介绍可以查看相应论文。RNN-based神经网络机器翻译如下图:

6e929e3336e3f3c9af1ff95797b25adf910763b5

(“NeuralMachine Translation by Jointly Learning to Align and Translate”, Bahdanau etal., 2015)

Transformer的结构如下图:

bb7cc6ca6c7495b9b4f796da44eddbdf21e06fa6

(“AttentionIs All You Need”, Ashish Vaswani et al., 2017)

俄语的词干和词尾

俄语是一种形态丰富的语言,单复数(number)、格(case)、阴阳性(gender)都会影响词的形态。以名词“ball”为例,“ball”是一个中性词,因此不会随阴阳性的变化而变化,但当单复数、格变化时,会产生如下多种形态:

383d072d72c960de324f96450304f38a0e2c431a

一个俄语词可以分为两部分,即词干和词尾,词尾的变化是俄语形态变化的体现,词尾可以体现俄语的单复数、格、阴阳性等信息。利用一个基于规则的俄语词干获取工具,可以得到一个俄语句子中每一个词的词干和词尾。

词尾预测网络

在NMT的解码阶段,每一个解码步骤分别预测词干和词尾。词干的生成和NMT原有的网络结构一致。额外的,利用当前step生成的词干、当前decoder端的hidden state和源端的source context信息,通过一个前馈神经网络(Feedforwardneural network)生成当前step的词尾。网络结构如下图:

781f7229f9c9c3a0598031b49c3f91f7aa692d4f

最后,将生成的词干和词尾拼接在一起,就是当前step的译文单词。

实验

我们在RNN和Transformer上都进行了实验,在WMT-2017英俄新闻翻译任务的部分训练语料(约530万)上,效果如下图:

1a675ac912b902263f4670b8c514ffc643c44c5e

其中,Subword是使用基于子词方法作为baseline,Fully Character-based是使用基于字符的NMT系统作为baseline。“SuffixPrediction”是我们的系统。

另外,我们还在电子商务领域的数据上,使用超大规模的语料(5000万),证明了该方法的有效性,实验结果如图:

d12e00cdc07b3fc639778c1e1dfd85cd97f0b7dd

测试集包括商品的标题(Title)、详情(Description)和用户评论(Comment)内容,示例如下:

5ca3ac259a0a70dbe8f036b230d9cfe4f3cdc6e6

一些翻译结果的例子:

ba08f30d66be8d07350bae8ea987d5f588b51b1e

第一个例子中,标号为1和2的俄语词的形态代表着这个词是一个反身动词(reflexive verb),反身动词的直接宾语和主语是同一个事物,换句话说,反身动词的施事者和受事者是同一个事物。从源端句子中可以看出,“return”的施事者是购买商品的人,受事者是某个要退还的商品,因此1和2的译文词是错误的。3的译文词是正确的,它的词尾代表着它是一个不定式动词(infinitive verb),这个不定式动词是可以有宾语的。在第二个例子中,标号1和2代表复数形式,4代表单数。第三个例子中,3代表过去时,1和2代表现在时。上面的例子中,相比于基于子词和基于字符的模型,我们的模型可以产生更正确的俄语形态。

总结

我们提出了一种简单、有效的方法来提高目标端是形态丰富语言(例如“英-俄”)的NMT系统的翻译质量。在解码阶段的每一个步骤中,首先生成词干,然后生成词尾。我们在两种NMT模型(RNN-based NMT和Transformer)上,和基于子词(subword)和字符(character)的方法进行了对比,证明了方法的有效性。我们使用了大规模(530万)和超大规模(5000万)的语料,在新闻和电子商务两个领域上进一步这种方法可以带来稳定的提升。在我们的工作中,词尾在NMT中首次被专门地建模。


原文发布时间为:2018-05-11

本文作者:阿里巴巴翻译平台

本文来自云栖社区合作伙伴“阿里技术”,了解相关信息可以关注“阿里技术”。

<think>好的,我现在需要处理用户关于X-AnyLabeling自动标注模型下载的问题。首先,用户之前询问过SAM模型的资源,现在转向X-AnyLabeling,这说明他们可能在使用自动标注工具时需要具体的模型文件。根据用户提供的引用,SAM模型通过数据引擎和预训练提升效果,但用户现在关注的是X-AnyLabeling,这可能是一个基于SAM或其他技术的标注工具。 首先,我需要确认X-AnyLabeling的官方资源。根据之前的知识,AnyLabeling是一个开源项目,而X-AnyLabeling可能是其分支或特定版本。用户需要现成的下载资源,可能需要检查GitHub仓库或官方网站。例如,AnyLabeling的GitHub仓库通常会有预训练模型的链接,或者通过安装脚本自动下载。 接下来,用户可能遇到的常见问题包括:找不到直接下载链接、依赖项安装问题,或者模型版本兼容性。需要建议用户查看官方文档,使用提供的安装命令,因为很多开源项目不会单独提供模型文件,而是集成在工具中自动下载。 此外,引用中提到的数据引擎和预训练方法可能与X-AnyLabeling的工作流程有关,比如自动标注时使用模型生成掩膜,人工修正后再训练模型。因此,在回答中可以提及这些概念,说明模型如何通过持续使用提升效果,但用户当前的重点是获取模型文件。 需要确保回答结构清晰,分步骤说明如何获取资源,包括直接下载链接(如果有)、GitHub仓库、社区论坛和自行构建的方法。同时,提醒用户注意版本和依赖问题,避免常见错误。最后,生成相关问题帮助用户深入解决可能遇到的问题,比如安装问题或与其他工具的整合。</think>关于X-AnyLabeling自动标注模型的现成资源获取,以下是分步骤说明: 1. **官方GitHub仓库** X-AnyLabeling是AnyLabeling的分支版本,核心资源集中在GitHub仓库: - 项目地址:https://github.com/CVHub520/X-AnyLabeling - 在`Releases`页面可下载预编译的Windows客户端(包含内置模型)[^2] - 通过`requirements.txt`可查看模型依赖项 2. **模型下载方式** - **自动下载**:运行工具时,首次使用会自动下载预置的$YOLOv8$、$SAM$等模型到本地缓存目录(默认路径:`~/.anylabeling/`) - **手动下载**: *SAM模型*: ```text vit_h: https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth vit_l: https://dl.fbaipublicfiles.com/segment_anything/sam_vit_l_0b3195.pth vit_b: https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth ``` 需将文件放入`~/.anylabeling/weights/`目录 3. **社区资源** - Hugging Face社区可能有用户共享的整合包(搜索关键词:`X-AnyLabeling portable`) - 知乎/优快云等平台常提供国内网盘镜像下载链接(需注意文件安全性验证) 4. **自行构建** 若需自定义模型,可参考以下流程: ```bash git clone https://github.com/CVHub520/X-AnyLabeling cd X-AnyLabeling pip install -r requirements.txt python anylabeling/app.py # 启动时自动加载模型 ``` **注意事项**: - 模型文件通常较大(如SAM-vit-h约2.5GB),需保证网络稳定 - 不同版本工具对模型兼容性不同,建议使用官方推荐模型版本 - 若遇SSL证书错误,可尝试添加`--no-check-certificate`参数下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值