Amazon Translate
개발자 안내서

Amazon Translate 이용한 큰 문서 번역

큰 문서를 작은 부분으로 분리하여 총 문서 크기를 문서 크기 한도 이내로 유지할 수 있습니다. 문서 크기 한도에 대한 자세한 내용은 서비스 제한 단원을 참조하십시오. 다음 Java 프로그램은 긴 텍스트 문서를 개별 문장으로 분리한 후 소스 언어의 각 문장을 대상 언어로 번역합니다. 프로그램은 다음 두 섹션으로 구성됩니다.

  • 원본 문자열을 개별 문장으로 분리하는 SentenceSegmenter 클래스. 이 샘플에서는 Java BreakIterator 클래스를 사용합니다.

  • main 함수는 원본 문자열의 각 문장에 Translate 연산을 호출합니다. main 함수는 Amazon Translate를 이용한 인증도 처리합니다.

예제를 구성하려면

  1. AWS SDK for Java를 설치하고 구성합니다. Java용 SDK를 설치하는 방법은 AWS SDK for Java 설치하기 단원을 참조하십시오.

  2. 이 예제를 실행하는 데 필요한 최소한의 권한을 갖는 IAM 사용자를 만듭니다. IAM 사용자 생성에 대한 자세한 내용은 AWS Identity and Access Management 사용 설명서AWS 계정에서 IAM 사용자 생성을 참조하십시오. 필요한 권한 정책의 경우 Amazon Translate에 대한 자격 증명 기반 정책(IAM 정책) 사용을 참조하십시오.

  3. 필요한 자격 증명을 설치하여 샘플을 실행합니다. 지침의 경우 AWS SDK for Java 개발자 안내서개발을 위한 자격 증명 및 리전 AWS 설정하기를 참조하십시오.

  4. Java IDE에 새 프로젝트를 생성하고 소스 코드를 복사합니다.

  5. 리전을 Amazon Translate 작업을 실행하려는 리전으로 변경합니다. Amazon Translate을 지원하는 리전의 목록은 지침 및 제한 사항 단원을 참조하십시오.

  6. 소스 언어와 대상 언어를 번역하려는 언어로 변경합니다.

  7. 샘플을 실행하여 표준 출력 상의 번역문을 확인하십시오.

import com.amazonaws.auth.AWSCredentialsProviderChain; import com.amazonaws.auth.EnvironmentVariableCredentialsProvider; import com.amazonaws.auth.SystemPropertiesCredentialsProvider; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.translate.AmazonTranslate; import com.amazonaws.services.translate.AmazonTranslateClient; import com.amazonaws.services.translate.model.TranslateTextRequest; import com.amazonaws.services.translate.model.TranslateTextResult; import java.text.BreakIterator; import java.util.ArrayList; import java.util.List; import java.util.Locale; public class MultiSentenceTranslator { public static void main(String[] args) { // Define the text to be translated here String region = "region"; String text = "Text to be translated"; String sourceLang = "source language"; String targetLang = "target language"; // Break text into sentences SentenceSegmenter sentenceSegmenter = new SentenceSegmenter(); List<String> sentences = new ArrayList<>(); try { sentences = sentenceSegmenter.segment(text, sourceLang); } catch (Exception e) { System.out.println(e); System.exit(1); } // Create credentials using a provider chain that will evaluate in order; // a) Any Java system properties // b) Any environment variables // c) Any profile file AWSCredentialsProviderChain DefaultAWSCredentialsProviderChain = new AWSCredentialsProviderChain( new SystemPropertiesCredentialsProvider(), new EnvironmentVariableCredentialsProvider(), new ProfileCredentialsProvider() ); // Create an Amazon Translate client AmazonTranslate translate = AmazonTranslateClient.builder() .withCredentials(DefaultAWSCredentialsProviderChain) .withRegion(region) .build(); // Translate sentences and print the results to stdout for (String sentence : sentences) { TranslateTextRequest request = new TranslateTextRequest() .withText(sentence) .withSourceLanguageCode(sourceLang) .withTargetLanguageCode(targetLang); TranslateTextResult result = translate.translateText(request); System.out.println("Original text: " + sentence); System.out.println("Translated text: " + result.getTranslatedText()); } } } class SentenceSegmenter { public List<String> segment(final String text, final String lang) throws Exception { List<String> res = new ArrayList<>(); BreakIterator sentenceIterator = BreakIterator.getSentenceInstance(new Locale(lang)); sentenceIterator.setText(text); int prevBoundary = sentenceIterator.first(); int curBoundary = sentenceIterator.next(); while (curBoundary != BreakIterator.DONE) { String sentence = text.substring(prevBoundary, curBoundary); res.add(sentence); prevBoundary = curBoundary; curBoundary = sentenceIterator.next(); } return res; } }