1. 概要
Translation API のシンプルなプログラマティック インターフェースを使えば、最先端のニューラル機械翻訳を使って任意の文字列をサポート対象の言語に動的に翻訳できます。ソース言語が不明な場合に言語を検出することもできます。
このチュートリアルでは、Python で Translation API を使用します。使用可能な言語を一覧表示する方法、テキストを翻訳する方法、指定されたテキストの言語を検出する方法などの概念について説明します。
学習内容
- 環境の設定方法
- 利用可能な言語を一覧表示する方法
- テキストの翻訳方法
- 言語を検出する方法
必要なもの
アンケート
このチュートリアルをどのように使用されますか?
Python のご利用経験はどの程度ありますか?
Google Cloud サービスの利用経験をどのように評価されますか。
<ph type="x-smartling-placeholder">2. 設定と要件
セルフペース型の環境設定
- Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。
- プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。いつでも更新できます。
- プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は
PROJECT_ID
と識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成できます。または、ご自身で試して、利用可能かどうかを確認することもできます。このステップ以降は変更できず、プロジェクトを通して同じ ID になります。 - なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
- 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に請求が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクトを削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。
Cloud Shell の起動
Google Cloud はノートパソコンからリモートで操作できますが、この Codelab では Cloud 上で動作するコマンドライン環境である Cloud Shell を使用します。
Cloud Shell をアクティブにする
- Cloud Console で、[Cloud Shell をアクティブにする] をクリックします。
Cloud Shell を初めて起動する場合は、内容を説明する中間画面が表示されます。中間画面が表示されたら、[続行] をクリックします。
Cloud Shell のプロビジョニングと接続に少し時間がかかる程度です。
この仮想マシンには、必要なすべての開発ツールが読み込まれます。5 GB の永続的なホーム ディレクトリが用意されており、Google Cloud で稼働するため、ネットワークのパフォーマンスと認証が大幅に向上しています。この Codelab での作業のほとんどはブラウザを使って行うことができます。
Cloud Shell に接続すると、認証が完了し、プロジェクトに各自のプロジェクト ID が設定されていることがわかります。
- Cloud Shell で次のコマンドを実行して、認証されたことを確認します。
gcloud auth list
コマンド出力
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Cloud Shell で次のコマンドを実行して、gcloud コマンドがプロジェクトを認識していることを確認します。
gcloud config list project
コマンド出力
[core] project = <PROJECT_ID>
上記のようになっていない場合は、次のコマンドで設定できます。
gcloud config set project <PROJECT_ID>
コマンド出力
Updated property [core/project].
3. 環境のセットアップ
Translation API を使用する前に、Cloud Shell で次のコマンドを実行して API を有効にします。
gcloud services enable translate.googleapis.com
次のように表示されます。
Operation "operations/..." finished successfully.
これで Translation API を使用できるようになりました。
次の環境変数を設定します(アプリケーションで使用します)。
export PROJECT_ID=$(gcloud config get-value core/project) echo "→ PROJECT_ID: $PROJECT_ID"
ホーム ディレクトリに移動します。
cd ~
依存関係を分離する Python 仮想環境を作成します。
virtualenv venv-translate
仮想環境をアクティブにします。
source venv-translate/bin/activate
IPython と Translation API クライアント ライブラリをインストールします。
pip install ipython google-cloud-translate
次のように表示されます。
... Installing collected packages: ..., ipython, google-cloud-translate Successfully installed ... google-cloud-translate-3.11.0 ...
これで、Translation API クライアント ライブラリを使用する準備が整いました。
次の手順では、前のステップでインストールした IPython というインタラクティブな Python インタープリタを使用します。Cloud Shell で ipython
を実行してセッションを開始します。
ipython
次のように表示されます。
Python 3.9.2 (default, Feb 28 2021, 17:03:44) Type 'copyright', 'credits' or 'license' for more information IPython 8.12.0 -- An enhanced Interactive Python. Type '?' for help. In [1]:
次のコードを IPython セッションにコピーします。
from os import environ
from google.cloud import translate
PROJECT_ID = environ.get("PROJECT_ID", "")
assert PROJECT_ID
PARENT = f"projects/{PROJECT_ID}"
最初のリクエストを行い、サポートされている言語の一覧を取得する準備が整いました...
4. 使用可能な言語を一覧表示する
このセクションでは、Translation API で利用可能なすべての言語の一覧を示します。
使用可能な言語を一覧表示するには、次のコードを IPython セッションにコピーします。
def print_supported_languages(display_language_code: str):
client = translate.TranslationServiceClient()
response = client.get_supported_languages(
parent=PARENT,
display_language_code=display_language_code,
)
languages = response.languages
print(f" Languages: {len(languages)} ".center(60, "-"))
for language in languages:
language_code = language.language_code
display_name = language.display_name
print(f"{language_code:10}{display_name}")
関数を呼び出す
print_supported_languages("en")
次のように表示されます。
---------------------- Languages: 136 ---------------------- af Afrikaans ak Akan sq Albanian am Amharic ar Arabic ... cy Welsh xh Xhosa yi Yiddish yo Yoruba zu Zulu
フランス語の表示言語のメリットをご確認ください。
print_supported_languages("fr")
同じリストが、次のようにフランス語の名前で並べ替えられて表示されます。
---------------------- Languages: 136 ---------------------- af Afrikaans sq Albanais de Allemand am Amharique en Anglais ... vi Vietnamien xh Xhosa yi Yiddish yo Yorouba zu Zoulou
別の言語コードで試すこともできます。
概要
このステップでは、Translation API で利用可能なすべての言語の一覧を取得しました。サポートされている言語の一覧については、言語サポートのページをご覧ください。
5. テキストを翻訳する
Translation API を使用すると、テキストをある言語から別の言語に翻訳できます。テキストはニューラル機械翻訳(NMT)モデルを使用して翻訳されます。NMT モデルがリクエストされた言語の翻訳ペアでサポートされていない場合は、フレーズベース機械翻訳(PBMT)モデルが使用されます。Google 翻訳とその翻訳モデルについて詳しくは、NMT のお知らせの投稿をご覧ください。
テキストを翻訳するには、次のコードを IPython セッションにコピーします。
def translate_text(text: str, target_language_code: str) -> translate.Translation:
client = translate.TranslationServiceClient()
response = client.translate_text(
parent=PARENT,
contents=[text],
target_language_code=target_language_code,
)
return response.translations[0]
同じテキストを異なる言語に翻訳する関数を呼び出します。
text = "Hello World!"
target_languages = ["tr", "de", "es", "it", "el", "zh", "ja", "ko"]
print(f" {text} ".center(50, "-"))
for target_language in target_languages:
translation = translate_text(text, target_language)
source_language = translation.detected_language_code
translated_text = translation.translated_text
print(f"{source_language} → {target_language} : {translated_text}")
次のように表示されます。
------------------ Hello World! ------------------ en → tr : Selam Dünya! en → de : Hallo Welt! en → es : ¡Hola Mundo! en → it : Ciao mondo! en → el : Γειά σου Κόσμε! en → zh : 你好世界! en → ja : 「こんにちは世界」 en → ko : 안녕하세요 세계!
概要
このステップでは、Translation API を使用してテキストを複数の言語に翻訳することができました。詳しくは、テキストの翻訳をご覧ください。
6. 言語の検出
Translation API を使用してテキスト文字列の言語を検出することもできます。
次のコードを IPython セッションにコピーします。
def detect_language(text: str) -> translate.DetectedLanguage:
client = translate.TranslationServiceClient()
response = client.detect_language(parent=PARENT, content=text)
return response.languages[0]
関数を呼び出して、さまざまな文の言語を検出します。
sentences = [
"Selam Dünya!",
"Hallo Welt!",
"¡Hola Mundo!",
"Ciao mondo!",
"Γειά σου Κόσμε!",
"你好世界!",
"「こんにちは世界」",
"안녕하세요 세계!",
]
for sentence in sentences:
language = detect_language(sentence)
confidence = language.confidence
language_code = language.language_code
print(
f"Confidence: {confidence:4.0%}",
f"Language: {language_code:5}",
sentence,
sep=" | ",
)
次のように表示されます。
Confidence: 100% | Language: tr | Selam Dünya! Confidence: 80% | Language: de | Hallo Welt! Confidence: 100% | Language: es | ¡Hola Mundo! Confidence: 100% | Language: it | Ciao mondo! Confidence: 100% | Language: el | Γειά σου Κόσμε! Confidence: 100% | Language: zh-CN | 你好世界! Confidence: 100% | Language: ja | 「こんにちは世界」 Confidence: 100% | Language: ko | 안녕하세요 세계!
概要
このステップでは、Translation API を使用してテキストの言語を検出できました。詳しくは、言語の検出をご覧ください。
7. 完了
Python を使用して Translation API を使用する方法を学びました。
クリーンアップ
Cloud Shell から開発環境をクリーンアップするには:
- IPython セッションをまだ開いている場合は、シェルに戻ります(
exit
)。 - Python 仮想環境の使用を停止します:
deactivate
- 仮想環境フォルダ
cd ~ ; rm -rf ./venv-translate
を削除します
Cloud Shell から Google Cloud プロジェクトを削除するには:
- 現在のプロジェクト ID
PROJECT_ID=$(gcloud config get-value core/project)
を取得します。 - 削除するプロジェクトが
echo $PROJECT_ID
であることを確認します。 - プロジェクトを削除します。
gcloud projects delete $PROJECT_ID
詳細
- Cloud Translation のドキュメント: https://cloud.google.com/translate/docs
- Google Cloud 上の Python: https://cloud.google.com/python
- Python 用の Cloud クライアント ライブラリ: https://github.com/googleapis/google-cloud-python
ライセンス
この作業はクリエイティブ・コモンズの表示 2.0 汎用ライセンスにより使用許諾されています。