제퍼넷 로고

Amazon Kinesis Data Analytics, Amazon Translate 및 Amazon Comprehend와 함께 SQL 기능을 사용하여 스트리밍 데이터 번역, 수정 및 분석

시간

고객 사례 메모, 제품 리뷰 및 소셜 미디어 메시지가 포함된 레코드로 가득 찬 스트리밍 데이터를 생성하는 응용 프로그램이 여러 언어로 있을 수 있습니다. 당신의 임무는 사람들이 이야기하는 제품을 식별하고, 그들이 긍정적인 감정을 표현하는지 부정적인 감정을 표현하는지 결정하고, 그들의 의견을 공통 언어로 번역하고, 비즈니스 분석가를 위한 풍부한 데이터 복사본을 만드는 것입니다. 또한 이름, 주소 및 신용 카드 번호와 같은 개인 식별 정보(PII)를 제거해야 합니다.

스트리밍 데이터를 수집하는 방법을 이미 알고 있습니다. Amazon Kinesis 데이터 스트림 지속적인 고처리량 워크로드용. 이제 당신도 사용할 수 있습니다 Amazon Kinesis 데이터 분석 스튜디오 에서 제공 아파치 제플린아파치 플 링크 덕분에 텍스트 필드를 대화식으로 분석, 번역 및 수정할 수 있습니다. 아마존 번역아마존 이해 사용자 정의 함수(UDF)를 통해. Amazon Comprehend는 텍스트에서 통찰력을 쉽게 발견할 수 있게 해주는 자연어 처리(NLP) 서비스입니다. Amazon Translate는 빠르고 고품질이며 경제적이며 사용자 지정 가능한 언어 번역을 제공하는 신경 기계 번역 서비스입니다.

이 게시물에서는 이러한 서비스를 사용하여 다음 작업을 수행하는 방법을 보여줍니다.

  • 지배적인 감정 감지(긍정적, 부정적, 둘 다 또는 둘 다)
  • 지배적인 언어 감지
  • 원하는 언어로 번역
  • 항목(예: 항목, 장소 또는 수량) 감지 및 수정
  • PII 엔터티 감지 및 수정

Kinesis Data Analytics Studio에서 UDF를 설정하는 방법, 사용 가능한 기능 및 작동 방식에 대해 설명합니다. 또한 텍스트 분석을 수행하는 자습서를 제공합니다. 아마존 고객 리뷰 데이터 세트.

이 게시물 끝에 있는 부록은 솔루션 기능에 대한 빠른 설명을 제공합니다.

솔루션 개요

Kinesis 데이터 스트림이 축소된 버전의 Amazon 고객 리뷰 데이터 세트로 수집되고 Apache Zeppelin 기반 Kinesis Data Analytics Studio 노트북에서 사용되는 종단 간 스트리밍 분석 환경을 설정했습니다. UDF가 전체 노트북 인스턴스에 연결되어 노트북이 Kinesis 데이터 스트림의 페이로드를 사용하여 Amazon Comprehend 및 Amazon Translate API를 트리거할 수 있습니다. 다음 다이어그램은 솔루션 아키텍처를 보여줍니다.

UDF의 응답은 데이터 스트림의 페이로드를 보강하는 데 사용되며, 이 페이로드는 아마존 단순 스토리지 서비스 (Amazon S3) 버킷. 스키마 및 관련 메타데이터는 전용 AWS 접착제 데이터 카탈로그. S3 버킷의 결과가 기대치를 충족하면 Studio 노트북 인스턴스가 지속적인 스트리밍 분석을 위한 Kinesis Data Analytics 애플리케이션으로 배포됩니다.

UDF의 작동 원리

자바 클래스 TextAnalyticsUDF 각 UDF에 대한 핵심 로직을 구현합니다. 이 클래스는 확장 스칼라 함수 레코드별로 Kinesis Data Analytics for Flink의 호출을 허용합니다. 그런 다음 필요한 평가 방법이 오버로드되어 입력 레코드, 수행할 사용 사례의 식별자 및 사용 사례에 대한 기타 지원 메타데이터를 수신합니다. 그런 다음 eval 메서드 내의 스위치 케이스는 입력 레코드를 해당하는 공개 메서드에 매핑합니다. 이러한 공개 메서드 내에서 Amazon Comprehend 및 Amazon Translate의 사용 사례별 API 호출이 트리거됩니다. 감정 감지, 주요 언어 감지번역텍스트.

아마존 컴프리헨드 API 서비스 할당량 의도하지 않은 높은 사용으로 인한 비용 노출을 제한하기 위해 가드레일을 제공합니다(다음 섹션에서 이에 대해 자세히 설명함). 기본적으로 단일 문서 API는 초당 최대 20개의 레코드를 처리합니다. UDF는 지수 백오프를 사용하고 이러한 제한 내에서 유지되도록 요청 속도를 조절하기 위해 재시도합니다. 다음을 사용하여 API에 대한 초당 트랜잭션 할당량 증가를 요청할 수 있습니다. 할당량 요청 템플릿 를 시청하여 이에 대해 더 많은 정보를 얻을 수 있습니다. AWS 관리 콘솔.

Amazon Comprehend 및 Amazon Translate는 각각 5,000 utf-8 바이트의 최대 입력 문자열 길이를 적용합니다. 5,000 utf-8 바이트보다 긴 텍스트 필드는 언어 및 감정 감지를 위해 5,000 바이트로 잘리고 번역 및 엔티티 또는 PII 감지 및 수정을 위해 문장 경계에서 5,000 바이트 미만의 여러 텍스트 블록으로 분할됩니다. 그런 다음 결과가 결합됩니다.

관련 비용

Kinesis Data Analytics 비용 외에도 텍스트 분석 UDF는 Amazon Comprehend 및 Amazon Translate에서 사용 비용을 발생시킵니다. 지불하는 금액은 UDF로 처리하는 총 레코드 및 문자 수의 인수입니다. 자세한 내용은 Amazon Kinesis Data Analytics 요금, Amazon Comprehend 요금Amazon Translate 요금.

예 1 : 트윗의 언어 및 감정 분석

10,000개의 트윗 레코드가 있고 트윗당 평균 길이가 100자라고 가정해 보겠습니다. SQL 쿼리는 각 트윗에 대한 지배적인 언어와 감정을 감지합니다. 서비스 XNUMX년 차입니다(프리 티어는 더 이상 적용되지 않음). 비용 내역은 다음과 같습니다.

  • 각 트윗의 크기 = 100 자
  • 레코드 당 단위 수 (100 자) (최소 3 단위) = 3
  • 총 단위 = 10,000(레코드) x 3(레코드당 단위) x 2(레코드당 Amazon Comprehend 요청) = 60,000
  • 단위당 가격 = $ 0.0001
  • Amazon Comprehend의 총 비용 = [단위 수] x [단위당 비용] = 60,000 x $ 0.0001 = $ 6.00

예 2 : 트윗 번역

2,000 개의 트윗이 현지 언어가 아니므로 두 번째 SQL 쿼리를 실행하여 번역한다고 가정 해 보겠습니다. 비용 세부 사항은 다음과 같습니다.

  • 각 트윗의 크기 = 100 자
  • 총 문자 = 2,000(레코드) * 100(레코드당 문자) x 1(레코드당 Amazon Translate 요청) = 200,000
  • 캐릭터 당 가격 = $ 0.000015
  • Amazon Translate의 총 비용 = [문자 수] x [문자 당 비용] = 200,000 x $ 0.000015 = $ 3.00

솔루션 리소스 배포

이 게시물을 위해 우리는 AWS 클라우드 포메이션 다음 리소스를 생성하는 템플릿 :

  • 이름이 지정된 S3 버킷 amazon-reviews-bucket-<your-stack-id> 계정 외부의 다른 공개 S3 버킷에서 복사한 아티팩트가 포함된 파일. 이러한 아티팩트에는 다음이 포함됩니다.
    • 축소된 버전 아마존 상품평 데이터세트 개인 생활용품 및 식료품에 대한 2,000개의 탭으로 구분된 리뷰가 포함되어 있습니다. 이 예를 구현하는 비용을 최소화하기 위해 리뷰 수를 줄였습니다.
    • UDF 로직을 지원하는 JAR 파일.
  • 이름이 지정된 Kinesis 데이터 스트림 amazon-kinesis-raw-stream-<your-stack-id> Kinesis Analytics Studio 노트북 인스턴스와 함께 amazon-reviews-studio-application-<your-stack-id> 전용 AWS Glue 데이터 카탈로그, 사전 연결된 UDF JAR 및 배포된 애플리케이션에 대해 사전 구성된 S3 경로를 사용합니다.
  • AWS 자격 증명 및 액세스 관리 적절한 권한이있는 (IAM) 역할 및 정책.
  • AWS 람다 다음 작업을 지원하기 위한 기능:
    • 기존 스택 환경에 따라 Zeppelin 노트북을 사용자 지정하고 S3 버킷에 복사
    • Kinesis Data Analytics Studio 인스턴스 시작
    • S3 사전 서명된 URL을 통한 노트북 가져오기를 허용하도록 S3 버킷의 CORS 정책 수정
    • 스택 삭제 시 S3 버킷 비우기

이러한 리소스를 배포하려면 다음 단계를 완료하세요.

  1. CloudFormation 스택을 시작하십시오.
  2. 스택 이름을 입력하고 다른 매개변수는 기본값으로 둡니다.
  3. 선택 AWS CloudFormation이 사용자 지정 이름으로 IAM 리소스를 생성 할 수 있음을 인정합니다.
  4. 왼쪽 메뉴에서 스택 생성.
  5. 스택이 완료되면 다음을 선택하십시오. 출력 탭을 클릭하여 이 솔루션에 대해 생성된 기본 리소스를 검토합니다.
  6. 에서 S3 버킷 이름을 복사합니다. 출력
  7. 새 브라우저 탭에서 Amazon S3 콘솔로 이동하고 검색 창에 버킷 이름을 입력하여 필터링합니다.
  8. 버킷 이름을 선택하고 아래에서 생성된 모든 객체를 나열합니다. /artifacts/ 접두사.

다음 단계에서는 Amazon S3 사전 서명된 URL을 통해 이 S3 버킷에서 Kinesis Data Analytics Studio 인스턴스로 이러한 사용자 지정 Zeppelin 노트북을 업로드합니다. CloudFormation 스택이 Kinesis Data Analytics Studio 인스턴스가 GET 작업을 수행할 수 있도록 하는 CORS 정책을 S3 버킷에 연결하기 때문에 가져오기가 가능합니다. 확인하려면 S3 버킷의 루트 접두사로 이동하여 권한 탭으로 이동하여 CORS(교차 출처 리소스 공유) 안내

Studio 노트북 설정

노트북을 설정하려면 다음 단계를 완료하십시오.

  1. Kinesis Data Analytics 콘솔에서 Studio 탭.
  2. 생성한 노트북 인스턴스를 필터링하고 노트북 이름을 선택합니다.
  3. 상태가 다음과 같이 표시되는지 확인합니다. Running.
  4. 선택 구성 탭을 누르고 애플리케이션이 다음과 유사한 S3 경로로 연결되어 있는지 확인합니다. s3://amazon-reviews-bucket-<stack-id>/zeppelin-code/ 아래에 애플리케이션 구성으로 배포합니다.
    이 경로는 노트북을 Kinesis Data Analytics 애플리케이션으로 내보내는 동안 사용됩니다.
  5. 또한 다음과 유사한 S3 경로를 확인합니다. s3://amazon-reviews-bucket-<stack-id>/artifacts/text-analytics-udfs-linear-1.0.jar 아래에 존재 사용자 정의 함수.
    이 경로는 UDF JAR을 향한 노트북 인스턴스를 가리킵니다.
  6. 왼쪽 메뉴에서 Apache Zeppelin에서 열기 Zeppelin 콘솔로 리디렉션됩니다.

이제 노트북을 Studio 인스턴스로 가져올 준비가 되었습니다.

  1. 새 브라우저 탭을 열고 Amazon S3 콘솔에서 버킷으로 이동합니다.
  2. 에 대한 하이퍼링크를 선택하십시오. 0-data-load-notebook.json
  3. 왼쪽 메뉴에서 엽니다.
  4. S3 파일의 미리 서명된 URL을 복사합니다.
    브라우저가 새 탭에서 JSON 파일을 구문 분석하지 않지만 선택 시 파일을 다운로드하는 경우 엽니다, 다음을 선택하여 미리 서명된 URL을 생성할 수도 있습니다. 개체 작업 드롭다운 메뉴를 클릭한 다음 미리 서명된 URL로 공유.
  5. Zeppelin 콘솔에서 다음을 선택합니다. 메모 가져오기.
  6. 왼쪽 메뉴에서 URL에서 추가.
  7. 복사한 미리 서명된 URL을 입력합니다.
  8. 왼쪽 메뉴에서 메모 가져오기.
  9. 나머지 노트북 파일에 대해 다음 단계를 반복합니다.
    • 1-UDF-notebook.json
    • 2-base-SQL-notebook.json
    • 3-sentiments-notebook.json

다음 스크린샷은 XNUMX개의 파일을 모두 가져온 후 Zeppelin 콘솔의 보기를 보여줍니다.

간결함을 위해 이 게시물은 감정 분석 및 언어 번역 사용 사례에 대해서만 가져오기 및 실행 프로세스를 단계별로 설명합니다. 우리는 유사한 프로세스를 설명하지 않습니다 4-entities-notebook, 5-redact-entities-notebook6-redact-pii-entities-notebook FBI 증오 범죄 보고서 amazon-reviews-bucket-<your-stack-id> S3 버킷.

즉, 0-UDF-notebook, 1-data-load-notebook2-base-SQL-notebook 모든 사용 사례의 전제 조건 리소스입니다. 이미 전제 조건이 설정되어 있는 경우 이러한 고유한 사용 사례 노트북은 다음과 유사하게 작동할 수 있습니다. 3-sentiments-notebook. 이후 섹션에서는 이러한 사용 사례에 대해 예상되는 결과를 보여줍니다.

스튜디오 노트북 구조

흐름을 더 잘 시각화하기 위해 별도의 사용 사례를 개별 Studio 노트북으로 분리했습니다. XNUMX개의 노트북을 모두 다운로드할 수 있습니다. GitHub 레포. 다음 다이어그램은 감정 감지 사용 사례의 논리적 흐름을 설명하는 데 도움이 됩니다.

워크플로는 다음과 같습니다.

  • 0단계 – 노트북 0-data-load-notebook 로컬 S3 버킷에서 Amazon Product Review 데이터 세트를 읽고 탭으로 구분된 리뷰를 Kinesis 데이터 스트림으로 수집합니다.
  • 1단계 – 노트북 1-UDF-notebook 첨부된 JAR 파일을 사용하여 UDF를 생성합니다. 스트림 테이블 환경. 또한 비 스트리밍 정적 데이터에 대한 UDF 사용 예를 보여주는 다른 셀(#4–14)로 구성됩니다.
  • 2단계 – 노트북 2-base-SQL-notebook AWS Glue 데이터 카탈로그에서 Kinesis 데이터 스트림에 대한 테이블을 생성하고 UDF의 언어 감지 및 번역 기능을 사용하여 추가 열로 스키마를 보강합니다. review_body_detected_languagereview_body_in_french.
  • 3단계 – 노트북 3-감정-노트북은 다음 작업을 수행합니다.
    • 3.1단계 – 2단계에서 생성된 테이블에서 읽습니다.
    • 3.2단계 – UDF와 상호 작용하여 사용 사례별 열(예: detected_sentimentsentiment_mixed_score).
    • 3.3단계 – 스트리밍 데이터를 로컬 S3 버킷으로 덤프합니다.
  • 4 단계 - 스튜디오 인스턴스는 노트북을 Amazon S3 버킷에 zip 내보내기로 저장한 다음 독립형 Amazon Kinesis Data Analytics 애플리케이션을 생성하는 데 사용됩니다.

나머지 단계를 실행하려면 0-2단계가 필수입니다. 3단계는 다른 노트북의 사용 사례에 대해 동일하게 유지됩니다(4-entities-notebook, 5-redact-entities-notebook6-redact-pii-entities-notebook).

Studio 노트북 실행

이 섹션에서는 다음 노트북의 셀을 살펴봅니다.

  • 0-UDF-notebook
  • 1-data-load-notebook
  • 2-base-SQL-notebook
  • 3-sentiments-notebook

0-데이터 로드-노트북

셀 #1은 다음으로 Flink UDF를 등록합니다. 스트림 테이블 환경. 이 셀을 실행하려면 셀 상단의 재생 아이콘을 선택하십시오.셀 #2는 S3Sink(나중에 3-감정 노트북에서 사용)가 예상대로 실행되도록 하는 데 중요한 체크포인트를 활성화합니다.

셀 #3–13은 정적 비 스트리밍 텍스트에서 UDF의 기능을 이해하기 위한 선택 사항입니다. 또한 이 게시물 끝에 있는 부록에서는 솔루션 기능에 대한 간략한 설명을 제공합니다.

1-데이터 로드-노트북

데이터를 Kinesis 데이터 스트림으로 로드하려면 각 셀(#1 및 #2)의 상단에 있는 재생 아이콘을 선택합니다.

셀 #1은 종속성을 런타임으로 가져오고 수집을 위해 Kinesis 데이터 스트림 이름 및 리전을 사용하여 Kinesis 생산자를 구성합니다. 리전 및 스트림 이름 변수는 CloudFormation 스택이 배포된 AWS 계정에 따라 미리 채워집니다.

셀 #2는 Amazon Customer Reviews 데이터 세트의 축소된 버전을 Kinesis 데이터 스트림으로 로드합니다.2-base-SQL-노트북

노트북을 실행하려면 각 셀(#1 및 #2)의 상단에 있는 재생 아이콘을 선택하십시오.

셀 #1은 AWS Glue 데이터 카탈로그에서 Kinesis 데이터 스트림에 대한 테이블 스키마를 생성합니다.

셀 #2는 뷰를 생성합니다. amazon_reviews_enriched 스트리밍 데이터에서 UDF를 실행하여 스키마의 추가 열을 보강합니다(review_body_in_frenchreview_body_detected_language).

셀 #3은 기본 스키마의 수정 사항을 이해하기 위해 선택 사항입니다.

삼감수첩

노트북을 실행하려면 각 셀(#1–3)의 상단에 있는 재생 아이콘을 선택합니다.

셀 #1은 다른 뷰를 생성합니다. sentiment_view 맨 위에 amazon_reviews_enriched 제품 리뷰의 감정을 추가로 확인하려면 보기를 참조하세요.

셀 #2의 의도는 대상 S3 버킷에서 예상되는 행을 빠르게 미리 보는 것이며 해당 Flink 작업을 영원히 실행할 필요가 없기 때문에 셀 #2에서 취소 아이콘을 선택하여 출력으로 충분한 행. 노트북 셀은 약 2-3분 안에 결과로 채워질 것으로 예상할 수 있습니다. 이 기간은 Flink 작업을 시작하기 위한 일회성 투자이며, 그 후 작업은 스트리밍 데이터가 도착할 때 계속해서 처리합니다.

셀 #3은 이라는 테이블을 생성합니다. amazon_reviews_sentiments UDF 수정된 스트리밍 데이터를 S3 버킷에 저장합니다.

셀 #4를 실행하여 S3 대상 버킷으로 감정을 보냅니다. 이 셀은 Kinesis 데이터 스트림에서 데이터 세트 레코드를 읽고, UDF 변환을 적용하고, 수정된 레코드를 Amazon S3에 저장하는 Apache Flink 작업을 생성합니다.

노트북 셀이 약 3분 안에 결과로 S5 버킷을 채울 것으로 예상할 수 있습니다. 이 기간은 Flink 작업을 시작하기 위한 일회성 투자이며, 그 후 작업은 스트리밍 데이터가 도착할 때 계속해서 처리합니다. S3 버킷의 최종 결과를 검토한 후 노트북 셀을 중지하여 이 Flink 작업을 중지할 수 있습니다.

S3 Select를 사용하여 파일을 쿼리하여 내용을 확인합니다.

다음 스크린샷은 쿼리 입력 및 출력 설정을 보여줍니다.

다음 스크린샷은 감정 감지에 대한 쿼리 결과를 보여줍니다.

다음은 동등한 결과입니다. 4-entities-notebook S3 버킷에서.

다음은 동등한 결과입니다. 5-redact-entities-notebook S3 버킷에서.

다음은 동등한 결과입니다. 6-redact-pii-entities-notebook S3 버킷에서.

Studio 노트북을 Kinesis Data Analytics 애플리케이션으로 내보내기

Kinesis Data Analytics에서 Apache Flink 애플리케이션을 실행하는 두 가지 모드가 있습니다.

  • Studio 노트북 내에서 메모를 작성하십시오. 이를 통해 대화식으로 코드를 개발하고, 코드 결과를 실시간으로 보고, 메모 내에서 시각화할 수 있습니다. 우리는 이미 이전 단계에서 이것을 달성했습니다.
  • 메모 배포 스트리밍 모드에서 실행합니다.

스트리밍 모드에서 실행할 메모를 배포한 후 Kinesis Data Analytics는 지속적으로 실행되고, 소스에서 데이터를 읽고, 대상에 쓰고, 장기 실행 애플리케이션 상태를 유지하고, 처리량에 따라 자동으로 확장되는 애플리케이션을 생성합니다. 당신의 소스 스트림.

CloudFormation 스택은 내보낸 애플리케이션 아티팩트를 저장하도록 Kinesis Data Analytics Studio 노트북을 이미 구성했습니다. amazon-reviews-bucket-<your-stack-id>/zeppelin-code/ S3 접두사. 그만큼 SQL 기준 for Studio 노트북 내보내기는 내보낼 노트북의 셀에 간단한 SELECT 문이 있는 것을 방지합니다. 따라서 우리는 수출할 수 없습니다 3-sentiments-notebook 노트북에 셀 아래에 SELECT 문이 포함되어 있기 때문에 #2: 감정 미리보기. 최종 결과를 내보내려면 다음 단계를 완료하십시오.

  1. 노트북 인스턴스의 Apache Zeppelin UI로 이동합니다.
  2. 엽니다 3-sentiments-notebook 마지막 셀의 SQL 쿼리를 복사합니다.
    %flink.ssql(type=update, parallelism=1)
    INSERT INTO
        amazon_reviews_sentiments
    SELECT
        *
    FROM
        sentiments_view;

  3. 새 노트북 만들기( dep_to_kda 이 게시물에서) 복사한 내용을 새 셀에 입력합니다.
  4. 행위 메뉴, 선택 빌드 및 Amazon S3로 내보내기.
  5. 애플리케이션 이름을 입력하고 S3 대상 경로를 확인하고 다음을 선택합니다. 빌드 및 내보내기.

    아티팩트를 빌드하고 내보내는 프로세스는 약 5분 안에 완료됩니다. 콘솔에서 진행 상황을 모니터링할 수 있습니다.
  6. S3 버킷에서 필요한 ZIP 내보내기 생성을 검증합니다.
  7. 노트북 인스턴스에 대한 Apache Zeppelin UI로 돌아가서 새로 생성된 노트북(이름이 dep-to-kda 이 게시물에서).
  8. 행위 메뉴, 선택 Kinesis Analytics 애플리케이션으로 내보내기를 배포합니다.

  9. 왼쪽 메뉴에서 AWS 콘솔을 사용하여 배포 배포를 계속합니다.

    자동으로 Kinesis Data Analytics 콘솔로 리디렉션됩니다.
  10. Kinesis Data Analytics 콘솔에서 다음을 선택합니다. Kinesis Data Analytics가 맡을 수 있는 IAM 역할에서 선택 선택하고 KDAExecutionRole-<stack-id> 역할.
  11. 나머지 구성은 기본값으로 두고 다음을 선택합니다. 스트리밍 애플리케이션 생성.
  12. Kinesis Analytics 애플리케이션으로 돌아가서 다음을 선택합니다. 달리기 응용 프로그램을 실행합니다.
  13. 상태가 다음과 같이 표시될 때 Running선택한다. Apache Flink 대시보드 열기.

이제 실행 중인 Flink 작업의 진행 상황을 검토할 수 있습니다.

문제해결

쿼리가 실패하면 아마존 클라우드 워치 Flink용 Kinesis Data Analytics 애플리케이션에서 생성된 로그:

  1. Kinesis Data Analytics 콘솔에서 이전 단계에서 내보낸 애플리케이션을 선택하고 구성
  2. 아래로 스크롤하여 선택하십시오. 로깅 및 모니터링.
  3. 아래의 하이퍼링크를 선택하십시오. 로그 그룹 추가 문제 해결 통찰력을 위해 로그 스트림을 엽니다.

CloudWatch 로그 보기에 대한 자세한 내용은 다음을 참조하십시오. Apache Flink용 Amazon Kinesis Data Analytics의 로깅 및 모니터링.

추가 사용 사례

논의된 텍스트 분석 기능에 대한 많은 사용 사례가 있습니다. 이 게시물에 표시된 예 외에도 다음을 고려하십시오.

  • 고객 또는 환자 상호 작용에서 PII를 수정하여 연구용 데이터 세트를 준비합니다.
  • 증분 SQL 쿼리를 사용하여 ETL(추출, 변환 및 로드) 파이프라인을 단순화하여 다음에서 수집한 스트리밍 소셜 미디어 스트림과 같은 감정 및 엔터티로 텍스트 데이터를 강화합니다. 아마존 키네 시스 데이터 파이어 호스.
  • SQL 쿼리를 사용하여 고객 지원 텍스트, 이메일 및 지원 사례에서 감정과 엔터티를 탐색합니다.
  • 여러 언어를 하나의 공통 언어로 표준화합니다.

이러한 기능에 대한 추가 사용 사례 또는 다음과 같이 추가하려는 추가 기능이있을 수 있습니다.

  • Amazon Comprehend에서 사용자 지정 엔터티 인식 및 사용자 지정 분류 모델을 호출하는 SQL 함수.
  • 익명화를 위한 SQL 기능 - 엔터티를 확장하고 엔터티를 대체 고유 식별자로 대체하는 PII 수정 기능.

구현은 오픈 소스입니다. 즉, 저장소를 복제하고, 적절하다고 생각하는 대로 기능을 수정 및 확장할 수 있으며, (바라건대) 우리에게 끌어오기 요청을 보내어 개선 사항을 프로젝트에 다시 병합하고 모두를 위해 더 좋게 만들 수 있기를 바랍니다.

정리

이 자습서를 완료 한 후 더 이상 사용하지 않을 AWS 리소스를 정리할 수 있습니다. 활성 AWS 리소스는 계정에서 계속 요금이 발생할 수 있습니다.

배포된 Kinesis Data Analytics 애플리케이션은 CloudFormation 스택과 독립적이므로 애플리케이션을 개별적으로 삭제해야 합니다.

  1. Kinesis Data Analytics 콘솔에서 애플리케이션을 선택합니다.
  2. 행위 드롭 다운 메뉴에서 ..
  3. AWS CloudFormation 콘솔에서 이전에 배포한 스택을 선택하고 다음을 선택합니다. ..

결론

간단한 SQL 쿼리를 사용하여 Amazon Translate를 사용하여 텍스트를 번역하고, Amazon Comprehend를 사용하여 텍스트에서 통찰력을 생성하고, 민감한 정보를 수정할 수 있도록 Kinesis Data Analytics용 샘플 텍스트 분석 UDF 기능을 설치하는 방법을 보여 드렸습니다. 이것이 유용하기를 바라며 이를 사용하여 아키텍처를 단순화하고 비즈니스를 위한 새로운 기능을 구현하는 방법에 대한 예를 공유하십시오.

이 게시물에 설명된 SQL 함수는 다음에도 사용할 수 있습니다. 아마존 아테나아마존 레드 시프트. 자세한 내용은 다음을 참조하십시오. Amazon Athena, Amazon Translate 및 Amazon Comprehend에서 SQL 함수를 사용하여 텍스트 번역, 수정 및 분석Amazon Redshift, Amazon Translate 및 Amazon Comprehend에서 SQL 함수를 사용하여 텍스트 번역 및 분석.

의견 섹션 또는 프로젝트의 문제 섹션에서 귀하의 생각을 공유하십시오. GitHub 저장소.

부록 : 사용 가능한 함수 참조

이 섹션에서는 스트리밍이 아닌 정적 데이터에 대한 예제 쿼리 및 결과를 요약합니다. CloudFormation 배포 환경에서 이러한 기능에 액세스하려면 다음의 셀 #3–13을 참조하십시오. 0-UDF-notebook.

언어를 감지

이 함수는 Amazon Comprehend를 사용합니다. 주요 언어 감지 주요 언어를 식별하고 다음과 같은 언어 코드를 반환하는 API fr 프랑스어 또는 en 영어:

%flink.ssql(type=update)
SELECT
    message,
    TextAnalyticsUDF('detect_dominant_language', message) as detected_language
FROM
	(
	VALUES
        ('I am very happy')
    )AS NameTable(message)
;

         message     | detected_language
=====================================
I am very happy | en

다음 코드는 쉼표로 구분된 언어 코드 문자열과 해당 신뢰도 점수를 반환합니다.

%flink.ssql(type=update)
SELECT
    message,
    TextAnalyticsUDF('detect_dominant_language_all', message) as detected_language
FROM
	(
	VALUES
        ('I am very happy et joyeux')
    )AS NameTable(message)
;

              message     |               detected_language
============================================================================
I am very happy et joyeux | lang_code=fr,score=0.5603816,lang_code=en,score=0.30602336

감정 감지

이 함수는 Amazon Comprehend를 사용합니다. 감정 감지 감정을 식별하고 결과를 다음과 같이 반환하는 API POSITIVE, NEGATIVE, NEUTRALMIXED:

%flink.ssql(type=update)

SELECT
message,
TextAnalyticsUDF(‘detect_sentiment’, message, ‘en’) as sentiment
FROM
	(
	VALUES
               (‘I am very happy’)
)AS NameTable(message)
;

    message     | sentiment
================================
I am very happy | [POSITIVE]

다음 코드는 감지된 감정 및 각 감정 값에 대한 신뢰도 점수를 포함하는 쉼표로 구분된 문자열을 반환합니다.

%flink.ssql(type=update)
SELECT
    message,
    TextAnalyticsUDF('detect_sentiment_all', message, 'en') as sentiment
FROM
	(
	VALUES
        ('I am very happy')
    )AS NameTable(message)
;

    message     | sentiment
=============================================================================================================================================
I am very happy | [sentiment=POSITIVE,positiveScore=0.999519,negativetiveScore=7.407639E-5,neutralScore=2.7478999E-4,mixedScore=1.3210243E-4]

엔티티 감지

이 함수는 Amazon Comprehend를 사용합니다. 엔티티 감지 엔티티 식별을 위한 API:

%flink.ssql(type=update)
SELECT
    message,
    TextAnalyticsUDF('detect_entities', message, 'en') as entities
FROM
	(
	VALUES
        ('I am Bob, I live in Herndon VA, and I love cars')
    )AS NameTable(message)
;

		                     message    |              entities
=============================================================================================
I am Bob, I live in Herndon VA, and I love cars | [[["PERSON","Bob"],["LOCATION","Herndon VA"]]]

다음 코드는 다음을 포함하는 쉼표로 구분된 문자열을 반환합니다. 엔티티 유형 및 값 :

%flink.ssql(type=update)
SELECT
    message,
    TextAnalyticsUDF('detect_entities_all', message, 'en') as entities
FROM
	(
	VALUES
        ('I am Bob, I live in Herndon VA, and I love cars')
    )AS NameTable(message)
;

		       message    |              entities
=============================================================================================
I am Bob, I live in Herndon VA, and I love cars |[score=0.9976127,type=PERSON,text=Bob,beginOffset=5,endOffset=8, score=0.995559,type=LOCATION,text=Herndon VA,beginOffset=20,endOffset=30]

PII 엔터티 감지

이 함수는 DetectPii엔티티 PII 식별을 위한 API:

%flink.ssql(type=update)
SELECT
    message,
    TextAnalyticsUDF('detect_pii_entities', message, 'en') as pii_entities
FROM
	(
	VALUES
        ('I am Bob, I live in Herndon VA, and I love cars')
    )AS NameTable(message)
;

		       message    |              pii_entities
=============================================================================================
I am Bob, I live in Herndon VA, and I love cars | [[["NAME","Bob"],["ADDRESS","Herndon VA"]]]

다음 코드는 점수 및 문자 오프셋과 함께 PII 엔터티 유형이 포함된 쉼표로 구분된 문자열을 반환합니다.

%flink.ssql(type=update)
SELECT
    message,
    TextAnalyticsUDF('detect_pii_entities_all', message, 'en') as pii_entities
FROM
	(
	VALUES
        ('I am Bob, I live in Herndon VA, and I love cars')
    )AS NameTable(message)
;


		       message    |              pii_entities
=============================================================================================
I am Bob, I live in Herndon VA, and I love cars | [score=0.9999832,type=NAME,beginOffset=5,endOffset=8, score=0.9999931,type=ADDRESS,beginOffset=20,endOffset=30]

엔티티 수정

이 함수는 지정된 엔터티 유형에 대한 엔터티 값을 다음으로 바꿉니다. “[ENTITY_TYPE]”:

%flink.ssql(type=update)
SELECT
    message,
    TextAnalyticsUDF('redact_entities', message, 'en') as redacted_entities
FROM
	(
	VALUES
        ('I am Bob, I live in Herndon VA, and I love cars')
    )AS NameTable(message)
;

				         message                 |              redacted_entities
=====================================================================================================
I am Bob, I live in Herndon VA, and I love cars | [I am [PERSON], I live in [LOCATION], and I love cars]

PII 항목 수정

이 함수는 지정된 엔터티 유형에 대한 PII 엔터티 값을 다음으로 바꿉니다. “[PII_ENTITY_TYPE]”:

%flink.ssql(type=update)
SELECT
    message,
    TextAnalyticsUDF('redact_pii_entities', message, 'en') as redacted_pii_entities
FROM
	(
	VALUES
        ('I am Bob, I live in Herndon VA, and I love cars')
    )AS NameTable(message)
;

				         message                 |              redacted_pii_entities
=====================================================================================================
I am Bob, I live in Herndon VA, and I love cars | [I am [NAME], I live in [ADDRESS], and I love cars]

텍스트 번역

이 함수는 원본 언어의 텍스트를 대상 언어로 번역합니다.

%flink.ssql(type=update)
SELECT
message,
TextAnalyticsUDF(‘translate_text’, message, ‘fr’, ‘null’) as translated_text_to_french
FROM
	(
	VALUES
               (‘It is a beautiful day in neighborhood’)
)AS NameTable(message)
;

                 Message                |         translated_text_to_french
==================================================================================
It is a beautiful day in neighborhood   | C'est une belle journée dans le quartier


저자에 관하여

니힐 코하르 하는 솔루션 아키텍트 AWS에서. 그는 2016년에 AWS에 합류했으며 고객이 데이터를 분석하고 가치를 얻는 데 도움이 되는 데이터 스트리밍 솔루션 구축 및 지원을 전문으로 합니다. 여가 시간에는 3D 프린팅 기술을 활용하여 일상적인 문제를 해결합니다.

밥 스트라 한밥 스트라 한 AWS Language AI Services 팀의 수석 솔루션 아키텍트입니다.

spot_img

최신 인텔리전스

spot_img