Amazon Web Services 한국 블로그

Amazon Comprehend, 대용량 텍스트 분석 위한 비동기식 배치 작업 출시

텍스트 내의 정보 및 관계를 검색하는 서비스인 Amazon Comprehend는 2017년 AWS re:Invent에서 출시되었습니다. 오늘은 Amazon Comprehend의 새로운 비동기식 배치 유추 기능을 출시합니다. 비동기식 배치 작업은 Amazon Simple Storage Service(S3) 버킷에 저장된 문서를 기반으로 작동하며 개체 인식, 핵심 구 추출, 감정 분석 및 언어 감지 등 일반적인 모든 Comprehend 작업을 수행할 수 있습니다.

이 새로운 비동기식 배치 API는 단일 문서 및 배치 API보다 훨씬 큰 문서를 지원하므로 서비스를 사용하기 위해 문서를 잘라낼 필요성이 줄어듭니다. 물론, 모든 단일 문서 및 배치 동기식 API 작업을 계속해서 사용하여 실시간 결과를 얻을 수 있습니다. 비동기식 작업이 추가됨에 따라 개발자는 애플리케이션에 가장 적합한 도구를 선택할 수 있습니다. 그럼, 새로운 API에 대해 좀 더 자세히 살펴보도록 하겠습니다.

비동기식 API 작업

새로운 배치 API는 Amazon Comprehend의 TopicDetection API와 동일한 비동기식 호출 구조를 따릅니다. 문서 모음을 분석하기 위해 먼저, Start* API 중 하나를 호출합니다. 예를 들어 StartDominantLanguageDetectionJob, StartEntitiesDetectionJob, StartKeyPhrasesDetectionJob, 또는 StartSentimentDetectionJobAPI를 호출합니다.

이러한 각 API는 InputDataConfig 및 OutputDataConfig를 사용하여 수신 데이터의 형식 및 위치와 S3에서 결과를 저장할 위치를 지정합니다. InputDataConfig는 입력 데이터를 처리할 때 각 파일을 하나의 문서로 처리할지, 각 행을 하나의 문서로 처리할지 여부를 지정합니다.

또한 동기화에 사용할 작업 이름을 지정하고 고유한 요청 식별자를 포함할 수 있습니다. 이러한 항목을 지정하지 않으면 Comprehend 서비스가 자동으로 생성합니다.

현재 비동기식 작업은 개체 및 핵심 구 감지에 대해 최대 100KB의 개별 문서를 지원하고, 언어 감지에 대해 1MB를 지원하며, 감정 분석에 대해 5KB를 지원합니다. 배치에 포함된 모든 파일의 총 크기는 5GB 미만이어야 하며 배치당 제출할 수 있는 개별 파일의 수는 최대 1백만 개입니다.

이제 업데이트된 콘솔에서 작업을 시작하여 API가 어떻게 작동하는지 살펴보도록 하겠습니다.

Amazon Comprehend Analysis 콘솔

먼저, AWS Management Console로 이동하고 Amazon Comprehend를 엽니다. 다음으로, 새로운 Analysis 콘솔을 선택합니다.

여기서 콘솔의 오른쪽 위에 있는 [Create] 버튼을 클릭하여 새 분석 작업을 생성할 수 있습니다. 개체 감지 작업을 생성하고 [English]를 문서 언어로 선택합니다. 그런 다음 콘솔에서 일부 샘플 데이터를 선택합니다.

이제 출력 데이터 위치를 구성하고 서비스 역할이 해당 S3 버킷에 액세스할 수 있는지 확인합니다. 그런 다음 작업을 시작합니다.

콘솔에서 작업이 시작된 것을 알 수 있습니다. 완료될 때까지 기다리면 세부 결과를 볼 수 있습니다.

작업 페이지에서 작업의 상태와 출력 위치를 볼 수 있습니다. S3 위치에서 결과를 다운로드하면 샘플 텍스트에서 감지된 개체를 볼 수 있습니다.

여기서는 결과가 잘렸지만 대부분의 경우 결과는 다음과 같습니다.

{
  "Entities": [
    {
      "BeginOffset": 875,
      "EndOffset": 899,
      "Score": 0.9936646223068237,
      "Text": "University of California",
      "Type": "ORGANIZATION"
    },
    {
      "BeginOffset": 903,
      "EndOffset": 911,
      "Score": 0.9519965648651123,
      "Text": "Berkeley",
      "Type": "LOCATION"
    },
    {
      "BeginOffset": 974,
      "EndOffset": 992,
      "Score": 0.9981470108032227,
      "Text": "Christopher Monroe",
      "Type": "PERSON"
    },
    {
      "BeginOffset": 997,
      "EndOffset": 1010,
      "Score": 0.9992995262145996,
      "Text": "Mikhail Lukin",
      "Type": "PERSON"
    },
    {
      "BeginOffset": 1095,
      "EndOffset": 1099,
      "Score": 0.9990954399108887,
      "Text": "2017",
      "Type": "DATE"
    }
  ],
  "File": "Sample.txt",
  "Line": 8
}

정말 훌륭합니다. 핵심 구 감지의 감정 감지에 대해서도 유사한 단계를 수행할 수 있습니다. 단일 배치에서 최대 5GB의 데이터를 제출할 수 있으므로 문서를 변환하고 잘라내는 데 소요되는 시간이 줄어듭니다.

제 개인적으로는 AWS Step Functions 같은 도구를 사용하여 작업 상태를 프로그래밍 방식으로 확인할 것을 권장합니다. 이 도구를 사용하면 프로그래밍 분석 파이프라인을 아주 쉽게 설정하고 구축할 수 있습니다.

또한 Roy Hasson 씨의 이 블로그 게시물에 설명된 것과 같이 AWS Glue를 사용하여 일반 ETL 작업 중에 Comprehend를 호출할 수 있습니다.

추가 정보

이 새로운 API에 대한 자세한 내용을 설명서에서 확인하고, 제한 사항 및 모범 사례에 대해 자세히 알아볼 수 있습니다. 앞서 언급했듯이 동기식 배치 API도 계속해서 사용할 수 있습니다. 이러한 동기식 배치 API는 소규모 문서 세트와 크기가 작은 문서에 최적화되어 있습니다.

Randall