1. 개요
Translation API는 최첨단 인공신경망 기계 번역을 사용하여 임의의 문자열을 지원되는 언어로 동적으로 번역하기 위한 간단한 프로그래매틱 인터페이스를 제공합니다. 출처 언어가 알려지지 않은 경우 언어를 감지하는 데도 사용할 수 있습니다.
이 튜토리얼에서는 Python과 함께 Translation API를 사용합니다. 다루는 개념에는 사용 가능한 언어를 나열하고, 텍스트를 번역하고, 특정 텍스트의 언어를 감지하는 방법이 포함됩니다.
학습할 내용
- 환경을 설정하는 방법
- 사용 가능한 언어를 나열하는 방법
- 텍스트 번역 방법
- 언어 감지 방법
필요한 항목
설문조사
이 튜토리얼을 어떻게 사용하실 계획인가요?
귀하의 Python 사용 경험이 어떤지 평가해 주세요.
귀하의 Google Cloud 서비스 사용 경험을 평가해 주세요.
2. 설정 및 요건
자습형 환경 설정
- Google Cloud Console에 로그인하여 새 프로젝트를 만들거나 기존 프로젝트를 재사용합니다. 아직 Gmail이나 Google Workspace 계정이 없는 경우 계정을 만들어야 합니다.
- 프로젝트 이름은 이 프로젝트 참가자의 표시 이름입니다. 이는 Google API에서 사용하지 않는 문자열이며 언제든지 업데이트할 수 있습니다.
- 프로젝트 ID는 모든 Google Cloud 프로젝트에서 고유하며, 변경할 수 없습니다(설정된 후에는 변경할 수 없음). Cloud 콘솔은 고유한 문자열을 자동으로 생성합니다. 일반적으로는 신경 쓰지 않아도 됩니다. 대부분의 Codelab에서는 프로젝트 ID (일반적으로
PROJECT_ID
로 식별됨)를 참조해야 합니다. 생성된 ID가 마음에 들지 않으면 다른 임의 ID를 생성할 수 있습니다. 또는 직접 시도해 보고 사용 가능한지 확인할 수도 있습니다. 이 단계 이후에는 변경할 수 없으며 프로젝트 기간 동안 유지됩니다. - 참고로 세 번째 값은 일부 API에서 사용하는 프로젝트 번호입니다. 이 세 가지 값에 대한 자세한 내용은 문서를 참고하세요.
- 다음으로 Cloud 리소스/API를 사용하려면 Cloud 콘솔에서 결제를 사용 설정해야 합니다. 이 Codelab 실행에는 많은 비용이 들지 않습니다. 이 튜토리얼이 끝난 후에 요금이 청구되지 않도록 리소스를 종료하려면 만든 리소스 또는 프로젝트를 삭제하면 됩니다. Google Cloud 신규 사용자는 300달러(USD) 상당의 무료 체험판 프로그램에 참여할 수 있습니다.
Cloud Shell 시작
Google Cloud를 노트북에서 원격으로 실행할 수 있지만, 이 Codelab에서는 Cloud에서 실행되는 명령줄 환경인 Cloud Shell을 사용합니다.
Cloud Shell 활성화
- Cloud Console에서 Cloud Shell 활성화
를 클릭합니다.
Cloud Shell을 처음 시작하는 경우 Cloud Shell에 대한 설명이 포함된 중간 화면이 표시됩니다. 중간 화면이 표시되면 계속을 클릭합니다.
Cloud Shell을 프로비저닝하고 연결하는 데 몇 분 정도만 걸립니다.
이 가상 머신에는 필요한 모든 개발 도구가 로드되어 있습니다. 영구적인 5GB 홈 디렉터리를 제공하고 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.16.0 ...
이제 Translation API 클라이언트 라이브러리를 사용할 준비가 되었습니다.
다음 단계에서는 이전 단계에서 설치한 IPython이라는 대화형 Python 인터프리터를 사용합니다. Cloud Shell에서 ipython
를 실행하여 세션을 시작합니다.
ipython
다음과 같은 결과를 확인할 수 있습니다.
Python 3.10.12 (main, Jul 29 2024, 16:56:48) [GCC 11.4.0] Type 'copyright', 'credits' or 'license' for more information IPython 8.27.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: 137 ---------------------- af Afrikaans sq Albanian am Amharic ar Arabic hy Armenian ... cy Welsh xh Xhosa yi Yiddish yo Yoruba zu Zulu
프랑스어 표시 언어로 제공되는 기능을 확인해 보세요.
print_supported_languages("fr")
다음과 같이 프랑스어 이름으로 정렬된 동일한 목록이 표시됩니다.
---------------------- Languages: 137 ---------------------- af Afrikaans sq Albanais de Allemand am Amharique en Anglais ... vi Vietnamien xh Xhosa yi Yiddish yo Yoruba 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: 81% | 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
라이선스
이 작업물은 Creative Commons Attribution 2.0 일반 라이선스에 따라 사용이 허가되었습니다.