Amazon Translate 사용하여 대용량 문서 번역 - Amazon Translate

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Translate 사용하여 대용량 문서 번역

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

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

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

예제를 구성하려면

  1. AWS SDK for Java를 설치하고 구성합니다. SDK for Java 설치에 대한 지침은 단원을 참조하십시오.설정AWS SDK for Java.

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

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

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

  5. 리전을 Amazon Translate 작업을 실행하려는 리전으로 변경합니다. Amazon Translate Translate가 지원되는 리전의 목록은 섹션을 참조하십시오.AWS 리전 및 엔드포인트AWS일반 참조.

  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; } }