公有云迁移研究——AWS Translate
大纲
- 1 什么是Translate
- 2 Aws Translate是怎么运作的
- 3 Aws Translate和Google Translate的区别
- 4 迁移任务
- 4.1 迁移原因
- 5 Aws Translate的Go demo
- 6 迁移中遇到的问题
- 6.1 账号和权限问题:
- 6.2 小语种
1 什么是Translate
- Translate是一种文本翻译服务,它使用先进的机器学习技术来提供高质量的按需翻译。
2 Aws Translate是怎么运作的
- Amazon Translate服务基于为语言翻译训练的神经网络。这使您能够在源语言(被翻译文本的原始语言)和目标语言(文本被翻译成的语言)之间进行翻译。
- 使用Amazon Translate时,您需要提供源文本,并获取输出文本,
1 源文本— 您要翻译的文本。您以 UTF-8 格式提供源文本。
2 输出文本— Amazon Translate已翻译成目标语言的文本。输出文本也是UTF-8格式。根据源语言和目标语言,输出文本中的字符数可能多于输入文本中的字符数。 - 翻译模型有两个组件,编码器和解码器。编码器一次一个单词地读取源句子, 并构建一个捕捉其含义的语义表示。解码器使用语义表示在目标语言中一次生成一个单词的翻译。
- Amazon Translate使用注意力机制来理解上下文。这有助于它确定源文本中的哪些词与生成下一个目标词最相关。注意机制使解码器能够专注于源语句中最相关的部分。这可确保解码器正确翻译歧义词或短语。
3 Aws Translate和Google Translate的区别
特征 | Google Translate | Aws Translate |
---|---|---|
免费试用 | 支持 | 支持 |
付款计划 | 月免50W字+百万字费用 | 月免200W字+按使用量付费 |
支持的语言数量 | 108 | 71 |
机器翻译集成 | 支持 | 支持 |
在线工具 | 支持 | 支持 |
团队协作 | 不好 | 好 |
翻译记忆库 | 不支持 | 支持 |
加密云存储 | 不支持 | 支持 |
网站翻译小部件 | 支持 | 不支持 |
上下文编辑 | 不支持 | 支持 |
自动语言检查 | 支持 | 支持 |
4 迁移任务
我们本次的迁移任务是将原有集成了Google Translate服务,迁移到Aws Translate服务上。
4.1 迁移原因
- 降低在翻译上的费用,Aws的月免字数更多。
- 需要对翻译内容进行存储。
- 一个良好的团队写作。
5 Aws Translate的Go demo
package main
import (
"context"
"flag"
"fmt"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/credentials"
"github.com/aws/aws-sdk-go-v2/service/translate"
"log"
)
func main() {
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-east-1"), config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider("xxxxxxx", "xxxxxxxxxxxxx", "")))
if err != nil {
log.Fatal(err, 1)
}
sourceText := flag.String("text", "hello world", "source text")
sourceLC := flag.String("slc", "en", "source language code [en|ja|fr]...")
targetLC := flag.String("tlc", "zh-c", "target language code [en|ja|fr]...")
client := translate.NewFromConfig(cfg)
result, err := client.TranslateText(context.TODO(), &translate.TranslateTextInput{
SourceLanguageCode: aws.String(*sourceLC),
TargetLanguageCode: aws.String(*targetLC),
Text: aws.String(*sourceText)})
if err != nil {
log.Fatal(err, 2)
}
fmt.Print(*result.TranslatedText)
}
6 迁移中遇到的问题
6.1 账号和权限问题:
我们在做迁移的时候需要在我们的服务器上安装aws cli
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
在服务上设置Aws账号
aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLES
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/PxRfiCYEXAMSPLEKEYSS
Default region name [None]: us-west-2
Default output format [None]: json
通过IAM对该用户设置Translate的角色赋予该用户使用Translate的权限
我们要遵循最小权限的策略
将这些设置好了,我们的demo就可以成功的翻译想翻译的文本了。
6.2 小语种
目前Aws支持71种语言,但是还是有很多语言没有被支持,我们可以选择该地区所在国家的官方语言来做翻译。目前Aws Global Service也在对更多的语言做支持。