0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudShellからAmazon Translateを使ってみる

Posted at

■APIキーと翻訳したいドキュメントを渡して結果を受け取るだけなのにPythonで長文書くのも面倒だったりするけれど、aws cliですぐ試せるのでありがたい。bashの範囲で書いたのでCloudShellでこのまま動く

PDF1ページの文字数は1200~1500文字だとして、300ページ程度だと36万〜46万文字
DeepLは50万文字まで無料なので失敗がなければギリギリなので失敗時のリ80文字のカバリは難しい
Amazon Translateなら200万文字まで無料なので、全体を取り込んで失敗してもリカバリできそう

■公式サイトからはコンソールやSDKのサンプルコードも確認できる
 APIキーの取得方法は省く。「aws configure」で設定済であればOK。

■aws cliのコードサンプルを参考にして、4行ヘッダを作って原文・訳文を出力
 「#」を80回繰り返し出力する行
 日付と消費文字をカウントして、「aws_translate_年月」に追記
200万文字を超えていないか累計チェックのため、実際に累計を出して表示
 「#」を80回繰り返し出力する行

$ cat translate.sh 
#!/bin/bash

original="$(echo $@ | sed -e 's/\. /&\n/g')"

sumfile="aws_translate_$(date '+%Y%m')"

echo "#" | awk '{for(n=1;n<=80;n++){printf "%c",$1}}END{printf "\n"}'
echo $(date;echo -n "消費文字:";echo "${original}" | wc -c) | tee -a "${sumfile}"
awk -F":" '{sum+=$NF}END{print FILENAME,sum}'  "${sumfile}"
echo "#" | awk '{for(n=1;n<=80;n++){printf "%c",$1}}END{printf "\n"}'

echo "${original}"
#exit

aws translate translate-text \
        --region us-east-1 \
        --source-language-code "en" \
        --target-language-code "ja" \
        --text "${original}" | jq -r '.TranslatedText'

■実行日時と消費文字が347文字、累計が約4万文字になったことがわかる

$ ./translate.sh $(cat jobs_speech.txt )
################################################################################
Mon Dec 23 02:30:57 PM UTC 2024 消費文字:347
aws_translate_202412 39885
################################################################################
I am honored to be with you today at your commencement from one of the finest universities in the world. 
Truth be told, I never graduated from college. 
And um, this is the closest I’ve ever gotten to a college graduation. 
(audience: Laugh) Today I want to tell you three stories from my life. 
That’s it. 
No big deal. 
Just three stories.
本日、世界屈指の大学の卒業式に出席できることを光栄に思います。 
実を言うと、私は大学を卒業したことがない。 
そして、ええと、これは私が今までに大学卒業に最も近づいた時です。 
(観客:笑) 今日は、私の人生における3つの話をしたいと思います。 
それでおしまいです。 
大したことないよ。 
たった三つの物語。

■消費文字数はローカルなら1024文字に収めて、loggerでsyslogに書き込んでも良さそう
 累計は200万までの%表記もできるけど、まあ今回はスルー

$ logger "Mon Dec 23 02:30:57 PM UTC 2024 消費文字:347"

■ヘッダは先頭4行で、原文・訳文はそれぞれ同数行なので、全体行の半分がわかれば一行づつにもできる

 $ ./translate.sh $(cat jobs_speech.txt ) > jobs_speech.out
 $ awk '(NR>4){a[(NR-4)]=$0}END{b=(NR-4)/2;c=0; \
     for(n in a){if(c<b){print a[n]"\n"a[n+b]"\n";c++}}}' jobs_speech.out 
I am honored to be with you today at your commencement from one of the finest universities in the world. 
本日、世界屈指の大学の卒業式に出席できることを光栄に思います。 

Truth be told, I never graduated from college. 
実を言うと、私は大学を卒業したことがない。 

And um, this is the closest I’ve ever gotten to a college graduation. 
そして、ええと、これは私が今までに大学卒業に最も近づいた時です。 

(audience: Laugh) Today I want to tell you three stories from my life. 
(観客:笑) 今日は、私の人生における3つの話をしたいと思います。 

That’s it. 
それでおしまいです。 

No big deal. 
大したことないよ。 

Just three stories.
たった三つの物語。

■Amazon Translateの結果が、個人的には自然な訳文だったので良かった

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?