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를 생성할 수 있습니다. 또는 직접 시도해 보고 사용 가능한지 확인할 수도 있습니다. 이 단계 이후에는 변경할 수 없으며 프로젝트 기간 동안 유지됩니다. - 참고로 세 번째 값은 일부 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을 프로비저닝하고 연결하는 데 몇 분 정도만 걸립니다.
가상 머신에는 필요한 개발 도구가 모두 들어 있습니다. 영구적인 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.11.0 ...
이제 Translation API 클라이언트 라이브러리를 사용할 준비가 되었습니다.
다음 단계에서는 이전 단계에서 설치한 대화형 Python 인터프리터인 IPython을 사용합니다. 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
Google Cloud 프로젝트를 삭제하려면 Cloud Shell에서 다음 안내를 따르세요.
- 현재 프로젝트 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 일반 라이선스에 따라 사용이 허가되었습니다.