인공신경망 기계 번역(NMT) 모델
Google의 표준 인공신경망 기계 번역 (NMT)은 2016년 11월에 Google이 도입한 신경망 번역 시스템에서 발전했으며 많은 개선이 이루어졌습니다. 여러 언어를 실시간으로 번역할 수 있습니다.
모델 ID는 general/nmt입니다.
Cloud Translation - Basic API 또는 Cloud Translation - Advanced API를 통해 수정 없이 NMT 모델에 액세스할 수 있습니다. Cloud Translation - Advanced API를 사용하면 맞춤설정할 수도 있습니다.
어떤 경우든 인증된 호출을 수행할 사용자 인증 정보가 있고 Cloud Translation API가 사용 설정된 Google Cloud 프로젝트가 있어야 합니다. Python 또는 다른 프로그래밍 언어를 사용하여 모델에 액세스하려면 적절한 v2 또는 v3 클라이언트 라이브러리를 설치하세요.
여기에 표시된 예에서 PROJECT_ID는 프로젝트 ID를 나타내고 REGION_NAME는 번역 작업을 실행할 Google Cloud 지역의 기술 지역 이름 (예: us-central1)을 나타냅니다. 필요한 경우 ISO-639 코드를 사용하여 출발어와 도착어를 식별합니다.
Cloud Translation - Basic API REST 예
Cloud Translation - Basic API로 REST 호출을 실행하여 NMT 모델을 사용하여 TranslateText를 실행할 수 있습니다. 다음과 같이 요청 필드를 request.json과 같은 이름의 JSON 파일에 넣을 수 있습니다.
{
"q": ["Hello world", "My name is Jeff"],
"target": "de"
}
Cloud Translation - Basic API는 NMT 모델만 지원하므로 요청에서 모델을 지정할 필요가 없습니다.
그런 다음 curl 명령어를 사용하여 요청을 제출할 수 있습니다.
!curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: cloud-ml-translate-e2e-testing" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://translate.googleapis.com/language/translate/v2"
대답은 다음과 같은 JSON 문서입니다.
{
"data": {
"translations": [
{
"translatedText": "Hallo Welt",
"detectedSourceLanguage": "en"
},
{
"translatedText": "Mein Name ist Jeff",
"detectedSourceLanguage": "en"
}
]
}
}
Cloud Translation - Basic API Python 예
다음은 Cloud Translation - Basic API를 사용하여 NMT 모델에서 TranslateText를 호출하는 샘플 Python 코드입니다.
출발어가 지정되지 않았으므로 API에서 자동으로 감지하려고 시도합니다.
def translate_text(
text: str | bytes | list[str] = "¡Hola amigos y amigas!",
target_language: str = "en",
source_language: str | None = None,
) -> dict:
translate_client = translate_v2.Client()
if isinstance(text, bytes):
text = [text.decode("utf-8")]
if isinstance(text, str):
text = [text]
results = translate_client.translate(
values=text,
target_language=target_language,
source_language=source_language
)
for result in results:
if "detectedSourceLanguage" in result:
print(f"Detected source language: {result['detectedSourceLanguage']}")
print(f"Input text: {result['input']}")
print(f"Translated text: {result['translatedText']}")
print()
return results
translate_text()
출력은 다음과 같습니다.
Detected source language: es
Input text: ¡Hola amigos y amigas!
Translated text: Hello friends!
[{'translatedText': 'Hello friends!',
'detectedSourceLanguage': 'es',
'input': '¡Hola amigos y amigas!'}]
Cloud Translation - Advanced API REST 예
모델을 지정하지 않거나 NMT 모델을 명시적으로 요청하여 기본 NMT 모델을 사용하여 Cloud Translation - Advanced API로 TranslateText를 호출할 수 있습니다. 요청 필드를 request.json과 같은 이름의 JSON 파일에 넣습니다.
{
"sourceLanguageCode": "en",
"targetLanguageCode": "ru",
"contents": ["Dr. Watson, come here!", "Bring me some coffee!"],
"model": "projects/PROJECT_ID/locations/REGION_NAME/models/general/nmt"
}
그런 다음 curl 명령어를 사용하여 요청을 제출할 수 있습니다.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://translation.googleapis.com/v3/projects/PROJECT_ID/locations/REGION_NAME:translateText"
대답은 다음과 같은 JSON 문서입니다.
{
"translations": [
{
"translatedText": "Доктор Ватсон, иди сюда!",
},
{
"translatedText": "Принеси мне кофе!",
}
]
}
Cloud Translation - Advanced API Python 예
def translate():
response = translate_v3.TranslationServiceClient().translate_text(
contents=["Life is short.",
"Art is long."],
target_language_code='fr',
source_language_code='en',
parent=f"projects/{project_id}/locations/us-central1",
model=f"{parent}/models/general/nmt"
)
print(response)
return response
translate()
출력은 다음과 같은 JSON 문서입니다.
translations {
translated_text: "La vie est courte."
model: "projects/261347268520/locations/us-central1/models/general/nmt"
}
translations {
translated_text: "L'art est long."
model: "projects/261347268520/locations/us-central1/models/general/nmt"
}