标签:超时 tla 部分 log real localize 选项 模式 text
越来越多的数字文本文件在世界各地共享,对翻译能力的需求变得更加关键。互联网上面有很多在线翻译软件,用户可以直接把要翻译的文本拷贝到其中,选择需要的目标语言,你可以很多得到翻译的文本。虽然这是一种执行(有限的)文本数量特定翻译的好方法,但如果频繁执行,则可能会非常繁琐和耗时。你的企业可能在很大程度上依赖内容来记录你的产品和服务,教你的客户如何与你互动,或者只是分享你正在做的很酷的事情。这种内容往往以文本为主,大部分是用英语写的。这使得没有足够语言知识的人很难理解它,这会直接影响到你与客户的关系。您需要一个自动化的解决方案,能够快速且经济地将一组文档从一种语言翻译成另一种语言。
在本文中,我们将介绍两种不同的文档翻译解决方案,一种是使用异步批量翻译异步翻译一批文档的简单方法,另一种是使用 AWS Lambda 和 Amazon Translation 同步翻译文档的高级方法。你可以使用最适合你需要的选项。
Amazon Translate 是一个神经机器翻译服务,提供快速,高质量的语言翻译。神经机器翻译是语言翻译自动化的一种形式,与传统的统计和基于规则的翻译算法相比,它采用深度学习模型来提供更准确、更自然的翻译。翻译服务受过不同用例和领域的各种内容的训练,以便在多种内容上表现良好。
Amazon Translate 最近推出了 asynchronous Batch Translation,使您能够翻译大量文本或 HTML 文档。只需要一个 API 调用,就可以将这组文档从一种语言翻译成另一种语言。您可以每天运行异步批量翻译,将您的文档、教材和博客本翻译成您需要的语言。此外,您可以监视批处理翻译作业的进度,并从指定的输出文件夹检索其结果。
我这里有三个样例文本。
Text file 1:
Amazon Translate is a neural machine translation service that delivers fast, high-quality, and affordable language translation.
Text file 2:
Neural machine translation is a form of language translation automation that uses deep learning models to deliver more accurate and more natural sounding translation than traditional statistical and rule-based translation algorithms.
Text file 3:
Amazon Translate allows you to localize content - such as websites and applications - for international users, and to easily translate large volumes of text efficiently.
下面是我们创建批量翻译任务:
translate-job-batch
。input
。s3://translate-job-batch/input
。output
。MyTranslationJob
。s3://translate-job-batch/input/
。Output S3 location 选择 s3://translate-job-batch/ouput/
。
translate-batch-role
。创建作业后,您可以在 Amazon Translate 控制台上查看正在进行的作业。请看下面的截图
当作业完成时,您将看到状态 Completed,并且您的翻译文档将出现在输出 S3 bucket 中。下面的屏幕截图显示了你已经完成的工作的细节。
翻译后的文件存储在输出 S3位置,如下所示。
通过运行批量翻译作业,您可以轻松、经济地解决大量文件翻译问题。但是,在某些情况下,您没有时间积累一批文档并定期调用异步批处理 API 以获得积累的批处理。在这种情况下,一旦文档准备就绪,您就需要尽快翻译。
为了实现这个目标,我们使用事件驱动架构。当一个新文档上传到一个特定的 S3 桶时,我们在这个 S3 桶上配置设置,以便向 AWS Lambda 发送一个通知。这个通知 AWS Lambda 运行一个代码来执行以下事件序列,读取上传到 S3 bucket 文档,从文档中提取可以通过 Real-Time Translation API 传递的短片段,通过 Real-Time Translation API 传递这些片段,使用 Real-Time Translation API 的输出来重新生成已翻译的输出文档,并将输出保存在指定的输出位置。
整体的架构如下图:
我们通过 CloudFormation 来创建所需要的资源。
https://s3.amazonaws.com/code.wzlinux.com/translate-lambda-cfn-stack.yml
automated-document-translation
。wzlinux-trigger-translation
。wzlinux-translated-input-bucket
,输入文档在翻译之前上传到这个存储桶。在创建输入桶的名称时,只使用小写字符,不要使用空格。此外,此操作将创建一个新的 S3 bucket,因此不要使用现有 bucket 的名称。将会花费一些时间创建完整个资源。
当我们向源存储桶上传文件的时候,翻译工作将自动执行,翻译好的文件会被放到目标存储桶,我们把前面的三个文件上传到存储桶中。
然后再查看一下目标存储桶生成了什么,因为我们的目标语言选择的是 zh 中文,所以会在目标存储桶中先生成一个 zh 的文件夹,并且根据上传的文件的名称再创建子文件夹,在子文件夹里面就是翻译之后的文档。
无服务器实时翻译应用这就做好了,因为是无服务器模式,所以只有在使用的时候才进行花费。
如果有什么问题的话,可以查看 Amazon CloudWatch Logs 进行排错。
此解决方案只处理 UTF-8格式的文本文档。您可以在本文中修改 Python 代码来处理不同的文件格式。此解决方案仅限于 Lambda 函数的最大执行时间(超时)。
在这篇文章中,我们展示了使用 Amazon Translate 翻译文档的两种不同解决方案的实现,一种是使用异步批量翻译的简单方法,另一种是使用 AWS Lambda 和 Amazon Real-Time Translation 的高级方法。请问你准备好了么?来使用 Amazon Translate 建立您的第一个翻译应用程序吧。
【AWS征文】利用无服务架构 Lambda + Amazon Translate 实时翻译文档
标签:超时 tla 部分 log real localize 选项 模式 text
原文地址:https://blog.51cto.com/14902472/2528128