Re:ゼロから始めるML生活

どちらかといえばエミリア派です

GCPのCloud Translation API v3を使う

f:id:nogawanogawa:20200121141332j:plain

翻訳用APIがどんなもんなのか、使ってみたのでそのメモです。いや、ほんとにただのメモなんでご了承くださいませ。

翻訳用API

まずは、翻訳用APIにどんなものがあるのか見てみます。

developer.ntt.com

この辺を見る感じ

らへんがあるようです。 今回はその中でGCPで提供されているCloud Translation API v3を使ってみます。

Cloud Translation API v3

サービスはこちら。

cloud.google.com

おいくら万円?

cloud.google.com

2019 年 11 月 1 日以降、Basic または Advanced エディションの Cloud Translation API を使用する請求先アカウントに、1 か月あたり最大 $10 の無料使用分が適用されます。この無料使用分は、NMT および PBMT のテキスト翻訳と言語検出の呼び出しに一括で適用されます。

無料枠以降は、100万文字毎に$20って感じのようです。遊びで使う分にはまず無料枠から出ることは無いかと思います。

使い方

使い方はこちらからどうぞ。

cloud.google.com

実際に使ってみる

本題です。実際に使ってみます。 まあ上のリンクに書いてあるとおりにやれば普通に動くんで、なぞるだけですね。

下準備

プロジェクト作って秘密鍵作って、環境変数の設定します。

…以上!!

Pythonでやる

from google.cloud import translate_v3beta1 as translate
client = translate.TranslationServiceClient()

project_id = YOUR_PROJECT_ID # 自分のプロジェクトIDでどうぞ
text = '吾輩わがはいは猫である。名前はまだ無い。どこで生れたかとんと見当けんとうがつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。'
location = 'global'

parent = client.location_path(project_id, location)

response = client.translate_text(
    parent=parent,
    contents=[text],
    mime_type='text/plain',  # mime types: text/plain, text/html
    target_language_code='en-US')

for translation in response.translations:
    print('Translated Text: {}'.format(translation))

これで実行してみます。

$ python3 sample.py

Translated Text: translated_text: "I am a cat. There is no name yet. I have no idea where I was born. I remember only crying meow in a dim and damp place." detected_language_code: "ja"

ここまでできれば全然問題ないです。

自分は翻訳文だけほしかったので、こんな感じに書き換えればいけますね。

from google.cloud import translate_v3beta1 as translate
client = translate.TranslationServiceClient()

project_id = 'adventcalender-221923'
text = '吾輩わがはいは猫である。名前はまだ無い。どこで生れたかとんと見当けんとうがつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶し ている。'
location = 'global'

parent = client.location_path(project_id, location)

response = client.translate_text(
        parent=parent,
        contents=[text],
        mime_type='text/plain',  # mime types: text/plain, text/html
        target_language_code='en-US')

print(response.translations[0].translated_text)

$ python3 sample.py

I am a cat. There is no name yet. I have no idea where I was born. I remember only crying meow in a dim and damp place.

response.translationsという変数に翻訳文が配列として格納されるみたいですね。

用語集を作る

専門用語とかを使いたい場合には、専門用語の対応表を作りたくなるときがあります。 そんなサービスも用意されていました。

cloud.google.com

感想

めっちゃ簡単でした。30分くらいで簡単に使えたので、めっちゃ簡単です。 これをサーバーに組み込んで、翻訳が必要なところだけ翻訳して上げれば、日本語サービスが海外向けサービスに早変わりしますね。 簡単にできてよかったです。