글로벌 서비스를 기획하거나 해외 데이터를 다루다 보면 다국어 번역 기능은 필수가 된다. 하지만 번역 엔진을 자체적으로 학습시키거나 서버를 구축하는 일은 막대한 비용과 리소스가 든다. 이럴 때 가장 효율적인 해법이 바로 AWS의 완전 관리형 번역 서비스인 Amazon Translate이다. 복잡한 인프라 관리 없이 Python의 boto3 라이브러리를 사용해 단 몇 줄의 코드만으로 고품질 신경망 기계 번역(NMT) API를 호출할 수 있다. 이번 포스팅에서는 일본어 뉴스 기사 원문을 예제로 삼아, Python 코드로 번역 API를 직접 호출하고 한국어 결과물을 얻는 기본 구현 과정을 알아본다.

◼️ IAM 설정하기

Amazon Translate API를 사용하기 위해 필요한 핵심 IAM 권한은 다음과 같다.

  • 기본 번역 권한: 실시간 텍스트 번역 API를 호출하려면 translate:TranslateText 권한이 필수적이다. AWS 관리형 정책으로는 TranslateReadOnly를 연결하면 즉시 사용 가능하다.

  • 언어 자동 감지 권한: 출발 언어를 지정하지 않고 자동 감지(SourceLanguageCode="auto") 기능을 사용할 경우, 내부 연동을 위해 comprehend:DetectDominantLanguage 권한이 추가로 필요하다.

  • 관리 권한 (선택): 맞춤형 용어집 등록이나 배치 번역 작업까지 제어하려면 TranslateFullAccess 정책을 부여해야 한다.

◼️ api 사용하기

import boto3

def write_text( text_to_translate ):

    ACCESS_KEY = 'AAAAAAA'  # os.environ['ACCESS_KEY']
    SECRET_KEY = 'BBBBBBB'  # os.environ['SECRET_KEY']

    translate = boto3.client('translate', aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY, region_name='ap-northeast-2')

    # 번역할 텍스트 및 언어 설정
    source_language = "ja"  # 원본 언어 (영어)
    target_language = "ko"  # 번역 언어 (한국어)

    # 번역 API 호출
    response = translate.translate_text(
        Text=text_to_translate,
        SourceLanguageCode=source_language,
        TargetLanguageCode=target_language
    )

    # 번역 결과 출력
    print(response)
    translated_text = response['TranslatedText']
    print(f"{translated_text}")

    return translated_text

setText = """
引き続きガソリン価格を170円程度に」赤沢経産大臣 ガソリン補助金継続のため予備費から6136億円支出を閣議決定
"""

"휘발유 가격 170엔 내외로 계속 유지” 아카자와 경제산업상은 휘발유 보조금을 지속하기 위해 예비비 중 6136억 엔을 지출하기로 내각 결정을 내렸습니다."


res = write_text(setText)



제시된 코드는 AWS의 Python SDK인 boto3를 활용하여 Amazon Translate API를 호출하고, 일본어 원문 텍스트를 한국어로 번역하는 기본 구조를 담고 있다.

주요 코드 구성 및 동작 설명

  • 클라이언트 객체 생성 (boto3.client):

    AWS 인증 정보(ACCESS_KEY, SECRET_KEY)와 사용할 리전(ap-northeast-2, 서울 리전)을 지정하여 Amazon Translate 서비스 클라이언트를 초기화한다. 실제 운영 환경에서는 보안을 위해 코드에 키를 하드코딩하지 않고 환경 변수(os.environ)나 IAM Role을 사용하는 것이 안전하다.

  • 언어 코드 정의 (SourceLanguageCode, TargetLanguageCode):

    출발 언어(source_language = "ja")와 도착 언어(target_language = "ko")를 ISO 639-1 표준 언어 코드로 지정한다. 출발 언어를 모를 경우 "auto"로 설정하면 언어 자동 감지 기능이 동작한다.

  • 번역 API 호출 (translate.translate_text):

    번역 대상 텍스트와 언어 파라미터를 넘겨 신경망 기계 번역(NMT) 작업을 요청한다.

  • 응답 데이터 처리 (response['TranslatedText']):

    API 응답 딕셔너리(response)에서 번역된 최종 문자열이 담긴 'TranslatedText' 키의 값을 추출하여 반환한다.

실행 결과 분석

  • 입력 원문 (일본어 뉴스 헤드라인):

    引き続きガソリン価格を170円程度に」赤沢経産大臣 ガソリン補助金継続のため予備費から6136億円支出を閣議決定

  • 번역 결과 (한국어):

    “휘발유 가격 170엔 내외로 계속 유지” 아카자와 경제산업상은 휘발유 보조금을 지속하기 위해 예비비 중 6136억 엔을 지출하기로 내각 결정을 내렸습니다.

  • 품질 요약: 일본어의 경제/행정 전문 용어(経産大臣 → 경제산업상, 予備費 → 예비비, 閣議決定 → 내각 결정/각의 결정)와 따옴표 문맥을 정확하게 파악하여 자연스러운 한국어 문장으로 변환해 낸다.







* 이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.