제퍼넷 로고

Amazon Athena, Amazon Translate 및 Amazon Comprehend에서 SQL 함수를 사용하여 텍스트 번역 및 분석

시간

현재 아마존 단순 스토리지 서비스 (Amazon S3) 다양한 언어로 수신되는 고객 채팅, 제품 리뷰 및 소셜 미디어 피드가 포함 된 파일로 가득 찬 버킷. 당신의 임무는 사람들이 말하는 제품을 식별하고, 그들이 행복한 생각을 표현하는지 슬픈 생각을 표현하는지 결정하고, 그들의 의견을 하나의 공통 언어로 번역하고,이 새로운 정보가 추가 된 비즈니스 분석가를위한 데이터의 사본을 만드는 것입니다. 각 기록. 또한 이름, 주소 및 신용 카드 번호와 같은 개인 식별 정보 (PII)를 제거해야합니다.

당신은 이미 사용법을 알고 있습니다. 아마존 아테나 간단한 SQL 명령과 Athena의 내장 함수를 사용하여 Amazon S3의 데이터를 변환합니다. 이제 Athena를 사용하여 텍스트 필드를 번역하고 분석 할 수 있습니다. 아마존 번역, 아마존 이해, 그리고 Athena 사용자 정의 함수 (UDF)의 힘.

Athena는 SQL을 사용하여 Amazon S3에 저장된 데이터를 쉽게 분석 할 수있는 대화 형 쿼리 서비스입니다. Amazon Comprehend는 텍스트에서 통찰력을 쉽게 찾을 수있게 해주는 자연어 처리 (NLP) 서비스입니다. Amazon Translate는 빠르고 고품질이며 경제적이며 사용자 지정 가능한 언어 번역을 제공하는 신경 기계 번역 서비스입니다. 이 게시물에서는 이제 함께 사용하여 다음 작업을 수행하는 방법을 보여줍니다.

  • 텍스트 필드의 주요 언어 감지
  • 긍정적, 부정적, 둘 다 또는 둘 다 표현 된 우세한 감정을 감지합니다.
  • 엔티티 (예 : 품목, 장소 또는 수량) 감지 또는 수정
  • PII 감지 또는 수정
  • 한 언어에서 다른 언어로 텍스트 번역

이 게시물은 다음 목표를 달성합니다.

  • 자신의 AWS 계정에서 텍스트 분석 기능을 빠르게 설정하는 방법을 보여줍니다 (빠르고 쉽습니다!).
  • 기능이 어떻게 작동하는지 간략하게 설명
  • 성능 및 비용 논의
  • Amazon 제품 리뷰에 대한 텍스트 분석을 수행하는 자습서를 제공하십시오.
  • 사용 가능한 모든 기능 설명

게시물 끝에 사용 가능한 모든 기능 목록이 포함되어 있습니다. 다음 코드는 몇 가지 예제 쿼리 및 결과를 보여줍니다.

USING FUNCTION detect_sentiment(text_col VARCHAR, lang VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf') SELECT detect_sentiment('I am very happy', 'en') as sentiment sentiment POSITIVE USING FUNCTION detect_pii_entities(text_col VARCHAR, lang VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf') SELECT detect_pii_entities('I am Bob, I live in Herndon VA, and I love cars', 'en') as pii pii [["NAME","Bob"],["ADDRESS","Herndon VA"]] USING FUNCTION redact_pii_entities(text_col VARCHAR, lang VARCHAR, type VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf') SELECT redact_pii_entities('I am Bob, I live in Herndon VA, and I love cars', 'en', 'NAME,ADDRESS') as pii_redacted pii_redacted I am [NAME], I live in [ADDRESS], and I love cars USING FUNCTION translate_text(text_col VARCHAR, sourcelang VARCHAR, targetlang VARCHAR, terminologyname VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf') SELECT translate_text('It is a beautiful day in the neighborhood', 'auto', 'fr', NULL) as translated_text translated_text C'est une belle journée dans le quartier

텍스트 분석 UDF 설치

Athena UDF는 AWS 람다 기능 기능을 구현합니다. 이 게시물의 뒷부분에서 자세한 내용을 논의하지만 텍스트 분석 UDF를 사용하기 위해 내부 작업을 이해할 필요가 없으므로 시작하겠습니다.

다음 단계에 따라 미리 빌드 된 Lambda 함수를 설치합니다.

  1. 로 이동 TextAnalyticsUDF핸들러 응용 프로그램 AWS 서버리스 애플리케이션 리포지토리.
  2. 에서 응용 프로그램 설정 섹션에서 설정을 기본값으로 유지하십시오.
  3. 선택 이 앱이 사용자 지정 IAM 역할을 생성 함을 인정합니다..
  4. 왼쪽 메뉴에서 배포.

그리고 그게 다야! 이제 새로운 Lambda 함수가 있습니다. textanalytics-udf. Athena에서 몇 가지 텍스트 분석 쿼리를 시도 할 준비가되었습니다.

대신 소스 코드에서 빌드하고 배포하려는 경우 마지막에있는 지침을 참조하십시오. GitHub 저장소 README.

첫 번째 텍스트 분석 쿼리 실행

Athena를 처음 사용하는 경우 다음을 검토 할 수 있습니다. 시작 가이드 안내서.

이 글을 쓰는 시점에서 Athena UDF 기능은 아직 미리보기로 제공됩니다. 이를 활성화하려면 Athena 작업 그룹을 생성하십시오. AmazonAthenaPreviewFunctionality 해당 작업 그룹에서 모든 UDF 쿼리를 실행합니다.

SQL 편집기에 다음 쿼리를 입력합니다.

USING FUNCTION detect_sentiment(text_col VARCHAR, lang VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf') SELECT detect_sentiment('I am very happy', 'en') as sentiment

당신은 간단합니다 POSITIVE 결과. 이제 입력 텍스트를 변경하여 다시 시도하십시오. 덜 긍정적 인 것을 시도하여 반환 된 감정 값이 어떻게 변경되는지 확인하십시오.

각 잠재적 감정 값에 대한 신뢰도 점수와 함께 감정을 얻으려면 대신 다음 쿼리를 사용합니다.

USING FUNCTION detect_sentiment_all(text_col VARCHAR, lang VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf') SELECT detect_sentiment_all('I am very happy', 'en') as sentiment

이제 감정과 모든 감정 점수가 포함 된 JSON 문자열을 얻습니다.

{"sentiment":"POSITIVE","sentimentScore":{"positive":0.999519,"negative":7.407639E-5,"neutral":2.7478999E-4,"mixed":1.3210243E-4}}

당신은을 사용할 수 있습니다 내장 JSON 추출 기능 이 결과에 대해 Athena에서 추가 분석을 위해 필드를 추출합니다.

UDF의 작동 원리

Athena UDF 프레임 워크에 대한 자세한 내용은 사용자 정의 함수를 사용하여 쿼리.

자바 클래스 TextAnalyticsUDF핸들러 UDF Lambda 함수 핸들러를 구현합니다. 각 텍스트 분석 함수에는이 클래스에 해당하는 공용 메서드가 있습니다.

Athena는 입력 레코드 배치와 함께 UDF Lambda 함수를 호출합니다. 그만큼 TextAnalyticsUDFHandler 이러한 배치를 최대 25 개 행의 작은 배치로 세분화하여 사용 가능한 Amazon Comprehend 동기식 다중 문서 배치 API를 활용합니다 (예 : 언어, 엔터티 및 감정 감지). 사용 가능한 동기식 다중 문서 API가없는 경우 (예 : DetectPiiEntityTranslateText) 대신 단일 문서 API를 사용합니다.

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

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

비용 최적화

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

비용을 최소화하려면 동일한 레코드를 여러 번 처리하지 않는 것이 좋습니다. 대신 CREATE TABLE AS SELECT(CTAS) 쿼리를 사용하여 텍스트 분석 UDF의 결과를 구체화하여 별도의 테이블에 결과를 캡처한 다음 추가 UDF 요금을 발생시키지 않고 필요할 때마다 비용 효율적으로 쿼리할 수 있습니다. INSERT IGNORE INTO…SELECT 쿼리를 사용하여 새로 도착하는 레코드를 점진적으로 처리하여 새 레코드만 분석 및 보강하고 대상 테이블에 추가합니다.

나중에 폐기 할 레코드에 대해 불필요하게 텍스트 분석 기능을 호출하지 마십시오. 먼저 임시 테이블, 뷰 또는 중첩 된 쿼리를 사용하여 데이터 세트를 필터링하는 쿼리를 작성한 다음 필터링 된 결과 레코드에 텍스트 분석 함수를 적용합니다.

레코드 수가 다양한 테이블에서 텍스트 분석 쿼리를 실행하기 전에 항상 잠재적 비용을 평가하십시오.

이 섹션에서는 두 가지 예시 비용 평가를 제공합니다.

예 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 (레코드 당 번역 요청) = 200,000
  • 캐릭터 당 가격 = $ 0.000015
  • Amazon Translate의 총 비용 = [문자 수] x [문자 당 비용] = 200,000 x $ 0.000015 = $ 3.00

고객 리뷰에서 통찰력 분석

새로운 텍스트 분석 쿼리를 사용할 때입니다.

고객 리뷰에서 실행 가능한 통찰력을 얻는 방법에 대한 자습서는 다음을 참조하십시오. 자습서 : Amazon Comprehend를 사용하여 고객 리뷰의 통찰력 분석. 이 게시물은 Athena 및 Amazon Comprehend에서 제공하는 SQL 쿼리를 사용하여 동일한 문제에 대한 대체 접근 방식을 제공합니다.

이 자습서는 완료하는 데 약 10 분이 걸리며 Amazon Comprehend의 경우 최대 $ 6의 비용이 듭니다. 프리 티어를 사용할 자격이있는 경우에는 비용이 들지 않습니다.

Athena에서 새 데이터베이스 생성

Athena 쿼리 편집기에서 다음 쿼리를 실행합니다.

CREATE DATABASE IF NOT EXISTS comprehendresults;

데이터 소스를 연결할 때 새 데이터베이스를 선택하십시오.

고객 리뷰 데이터를 포함하는 소스 테이블 생성

우리는을 사용하여 Amazon 고객 리뷰 데이터 세트, Amazon S3에서 공개 액세스를 위해 편리하게 호스팅됩니다.

  1. Athena 쿼리 편집기에서 다음 쿼리를 실행합니다.
    CREATE EXTERNAL TABLE amazon_reviews_parquet( marketplace string, customer_id string, review_id string, product_id string, product_parent string, product_title string, star_rating int, helpful_votes int, total_votes int, vine string, verified_purchase string, review_headline string, review_body string, review_date bigint, year int)
    PARTITIONED BY (product_category string)
    ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
    LOCATION 's3://amazon-reviews-pds/parquet/'
    

  1. $XNUMX Million 미만 테이블에서 새 테이블 amazon_reviews_parquet를 찾습니다.
  2. 옵션 메뉴에서 파티션로드.
  1. 새 테이블을 미리보고 amazon_reviews_parquet.
  1. 다음 쿼리를 실행하여 평균 검토 길이를 평가합니다.
    SELECT AVG(LENGTH(review_body)) AS average_review_length FROM amazon_reviews_parquet

평균 리뷰 길이는 약 365 자입니다. 이는 레코드 당 4 개의 Amazon Comprehend 단위에 해당합니다 (1 단위 = 100 자).

각 리뷰의 언어 감지

각 리뷰의 언어를 감지하려면 Athena 쿼리 편집기에서 다음 쿼리를 실행하세요. 실행하는 데 1 분이 조금 넘게 걸리며 비용은 $ 2입니다.

CREATE TABLE amazon_reviews_with_language WITH (format='parquet') AS
USING FUNCTION detect_dominant_language(col1 VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf')
SELECT *, detect_dominant_language(review_body) AS language
FROM amazon_reviews_parquet
LIMIT 5000

이 쿼리는 새 테이블을 생성합니다. amazon_reviews_with_language, 하나의 새 열이 추가되었습니다. language. LIMIT 절은 레코드 수를 5,000 개로 제한합니다.

비용은 5,000 (레코드) x 4 (레코드 당 단위) x 1 (레코드 당 요청) x $ 0.0001 (Amazon Comprehend 단위당 가격) = $ 2로 계산됩니다. 

다음 쿼리를 실행하여 감지 된 언어 코드와 각 언어의 해당 리뷰 수를 확인합니다.

SELECT language, count(*) AS count FROM amazon_reviews_with_language GROUP BY language ORDER BY count DESC

각 리뷰에 대한 감정 및 엔터티 감지

감정을 감지하려면 Athena 쿼리 편집기에서 다음 쿼리를 실행하세요. 두 개의 텍스트 분석 기능을 사용하고 실행하는 데 약 1 분이 걸리며 비용은 4 달러입니다.

CREATE TABLE amazon_reviews_with_text_analysis WITH (format='parquet') AS
USING FUNCTION detect_sentiment_all(col1 VARCHAR, lang VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf'), FUNCTION detect_entities_all(col1 VARCHAR, lang VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf')
SELECT *, detect_sentiment_all(review_body, language) AS sentiment, detect_entities_all(review_body, language) AS entities
FROM amazon_reviews_with_language
WHERE language IN ('ar', 'hi', 'ko', 'zh-TW', 'ja', 'zh', 'de', 'pt', 'en', 'it', 'fr', 'es')

이 쿼리는 새 테이블을 생성합니다. amazon_reviews_with_text_analysis, 두 개의 추가 열이 추가되었습니다. sentimententities. WHERE 절은 결과 집합을 Amazon Comprehend 감정 및 엔터티 감지에서 지원하는 언어 목록으로 제한합니다.

비용은 5,000 (레코드) x 4 (레코드 당 단위) x 2 (레코드 당 요청) x $ 0.0001 (Amazon Comprehend 단위당 가격) = $ 4로 계산됩니다.

새 테이블을 미리보고 새 테이블의 일부 값을 검사합니다. sentimententities 열. 여기에는 중첩 된 구조 및 필드가있는 JSON 문자열이 포함됩니다.

다음 스크린 샷은 sentiment 열 세부 정보.

다음 스크린 샷은 엔터티 열 세부 정보를 보여줍니다.

다음으로 Athena의 JSON 함수를 사용하여 분석을 위해 이러한 열을 준비합니다.

분석을위한 감정 준비

다음 SQL 쿼리를 실행하여 별도의 열로 확장 된 감정 및 감정 점수가 포함 된 새 테이블을 만듭니다.

CREATE TABLE sentiment_results_final WITH (format='parquet') AS
SELECT review_date, year, product_title, star_rating, language, CAST(JSON_EXTRACT(sentiment,'$.sentiment') AS VARCHAR) AS sentiment, CAST(JSON_EXTRACT(sentiment,'$.sentimentScore.positive') AS DOUBLE ) AS positive_score, CAST(JSON_EXTRACT(sentiment,'$.sentimentScore.negative') AS DOUBLE ) AS negative_score, CAST(JSON_EXTRACT(sentiment,'$.sentimentScore.neutral') AS DOUBLE ) AS neutral_score, CAST(JSON_EXTRACT(sentiment,'$.sentimentScore.mixed') AS DOUBLE ) AS mixed_score, review_headline, review_body
FROM amazon_reviews_with_text_analysis

새로운 미리보기 sentiment_results_final 테이블 (다음 스크린 샷 참조). 감정이 일반적으로 review_body 들? 그것은 어떻게 관련이 있습니까? star_rating? 의심스러운 감정 할당을 발견하면 신뢰도 점수를 확인하여 감정이 낮은 신뢰도로 할당되었는지 확인합니다.

분석을위한 엔터티 준비

다음 SQL 쿼리를 실행하여 각 필드가 별도의 열 (외부 쿼리)에있는 별도의 행 (내부 하위 쿼리)으로 중첩되지 않은 감지 된 항목을 포함하는 새 테이블을 만듭니다.

CREATE TABLE entities_results_final WITH (format='parquet') AS
SELECT review_date, year, product_title, star_rating, language, CAST(JSON_EXTRACT(entity_element, '$.text') AS VARCHAR ) AS entity, CAST(JSON_EXTRACT(entity_element, '$.type') AS VARCHAR ) AS category, CAST(JSON_EXTRACT(entity_element, '$.score') AS DOUBLE ) AS score, CAST(JSON_EXTRACT(entity_element, '$.beginOffset') AS INTEGER ) AS beginoffset, CAST(JSON_EXTRACT(entity_element, '$.endOffset') AS INTEGER ) AS endoffset, review_headline, review_body
FROM
( SELECT * FROM ( SELECT *, CAST(JSON_PARSE(entities) AS ARRAY(json)) AS entities_array FROM amazon_reviews_with_text_analysis ) CROSS JOIN UNNEST(entities_array) AS t(entity_element)
)

새 테이블의 내용을 미리 봅니다. entities_results_final (다음 스크린 샷 참조).

Amazon QuickSight에서 시각화 (선택 사항)

선택적인 단계로 다음을 사용하여 결과를 시각화 할 수 있습니다. 아마존 퀵 사이트. 지침은 5 단계 : Amazon QuickSight에서 Amazon Comprehend 출력 시각화.

트리 맵 대신 엔터티에 새 단어 구름 시각적 유형을 사용할 수 있습니다. 워드 클라우드 차트 메뉴에서 "기타"카테고리 숨기기.

이제 다음 스크린 샷과 유사한 감정 및 엔터티 시각화가 포함 된 대시 보드가 있습니다.

문제해결

쿼리가 실패하면 아마존 클라우드 워치 UDF Lambda 함수에 의해 생성 된 지표 및 로그.

  1. Lambda 콘솔에서 textanalytics-udf 기능.
  2. 왼쪽 메뉴에서 모니터링.

함수 실행 빈도, 실행 시간, 실패 빈도 등을 보여주는 CloudWatch 지표를 볼 수 있습니다.

  1. 왼쪽 메뉴에서 CloudWatch에서 로그보기 추가 문제 해결 통찰력을 위해 기능 로그 스트림을 엽니 다.

Lambda를 통해 CloudWatch 지표를 보는 방법에 대한 자세한 내용은 Lambda 콘솔 사용.

추가 사용 사례

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

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

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

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

또한 구현은 오픈 소스이므로 repo를 복제하고, 적절하다고 생각되는대로 기능을 수정 및 확장 할 수 있으며, 개선 사항을 프로젝트에 다시 병합하여 개선 할 수 있도록 풀 요청을 보낼 수 있습니다. 여러분.

청소

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

  1. Athena에서 다음 쿼리를 실행하여 데이터베이스와 모든 테이블을 삭제합니다.
    DROP DATABASE comprehendresults CASCADE

  1. AWS CloudFormation에서 스택을 삭제합니다. serverlessrepo-TextAnalyticsUDFHandler.
  2. QuickSight 구독 취소.

결론

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

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

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

이 섹션에서는 현재 제공되는 기능을 요약합니다. 그만큼 README 파일은 추가 세부 사항을 제공합니다.

언어를 감지

이 함수는 Amazon Comprehend를 사용합니다. BatchDetectDominantLanguage(주요 언어) 입력 텍스트의 처음 5,000 바이트를 기반으로 주요 언어를 식별하는 API입니다.

다음 코드는 프랑스어의 경우 fr, 영어의 경우 en과 같은 언어 코드를 반환합니다.

USING FUNCTION detect_dominant_language(text_col VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf') SELECT detect_dominant_language('il fait beau à Orlando') as language

다음 코드는 JSON 형식의 언어 코드 배열과 해당 신뢰도 점수를 반환합니다.

USING FUNCTION detect_dominant_language_all(text_col VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf') SELECT detect_dominant_language_all('il fait beau à Orlando') as language_all

감정 감지

이 함수는 Amazon Comprehend를 사용합니다. BatchDetect감정 입력 텍스트의 처음 5,000 바이트를 기준으로 감정을 식별하는 API입니다.

다음 코드는 감정을 POSITIVE, NEGATIVE, NEUTRAL 또는 MIXED로 반환합니다.

USING FUNCTION detect_sentiment(text_col VARCHAR, lang VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf') SELECT detect_sentiment('Joe is very happy', 'en') as sentiment

다음 코드는 각 감정 값에 대해 감지 된 감정 및 신뢰도 점수를 포함하는 JSON 형식의 개체를 반환합니다.

USING FUNCTION detect_sentiment_all(text_col VARCHAR, lang VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf') SELECT detect_sentiment_all('Joe is very happy', 'en') as sentiment_all

엔티티 감지

이 함수는 Amazon Comprehend를 사용합니다. 엔티티 감지 PII를 식별하는 API. 5,000 바이트보다 긴 입력 텍스트는 여러 Amazon Comprehend API 호출을 발생시킵니다.

다음 코드는 배열을 포함하는 JSON 형식의 객체를 반환합니다. 엔티티 유형 및 값 :

USING FUNCTION detect_entities(text_col VARCHAR, lang VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf') SELECT detect_entities('His name is Joe, he lives in Richmond VA, he bought an Amazon Echo Show on January 5th, and he loves it', 'en') as entities

다음 코드는 값, 점수 및 문자 오프셋과 함께 PII 엔터티 유형의 배열을 포함하는 JSON 형식의 개체를 반환합니다.

USING FUNCTION detect_entities_all(text_col VARCHAR, lang VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf') SELECT detect_entities_all('His name is Joe, he lives in Richmond VA, he bought an Amazon Echo Show on January 5th, and he loves it', 'en') as entities_all

엔티티 수정

이 함수는 지정된 엔티티 유형의 엔티티 값을 "[ENTITY_TYPE]”. 5,000 바이트보다 긴 입력 텍스트는 여러 Amazon Comprehend API 호출을 발생시킵니다. 다음 코드를 참조하십시오.

USING FUNCTION redact_entities(text_col VARCHAR, lang VARCHAR, types VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf') SELECT redact_entities('His name is Joe, he lives in Richmond VA, he bought an Amazon Echo Show on January 5th, and he loves it', 'en', 'ALL') as entities_redacted

이 명령은 입력 문자열에서 수정 된 버전을 반환합니다. 하나 이상 지정 엔티티 유형 쉼표로 구분 된 유효한 목록을 제공하여 types 유형 문자열 매개 변수에서 또는 ALL 모든 유형을 수정합니다.

PII 감지

이 함수는 DetectPii엔티티 PII를 식별하는 API. 5,000 바이트보다 긴 입력 텍스트는 여러 Amazon Comprehend API 호출을 발생시킵니다.

다음 코드는 배열을 포함하는 JSON 형식의 객체를 반환합니다. PII 엔티티 유형 및 값 :

USING FUNCTION detect_pii_entities(text_col VARCHAR, lang VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf') SELECT detect_pii_entities('His name is Joe, his username is joe123 and he lives in Richmond VA', 'en') as pii

다음 코드는 점수 및 문자 오프셋과 함께 PII 엔터티 유형의 배열을 포함하는 JSON 형식의 개체를 반환합니다.

USING FUNCTION detect_pii_entities_all(text_col VARCHAR, lang VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf') SELECT detect_pii_entities_all('His name is Joe, his username is joe123 and he lives in Richmond VA', 'en') as pii_all

PII 수정

이 함수는 지정된 PII 엔티티 유형의 PII 값을 "[PII_ENTITY_TYPE]”. 5,000 바이트보다 긴 입력 텍스트는 여러 Amazon Comprehend API 호출을 발생시킵니다. 다음 코드를 참조하십시오.

USING FUNCTION redact_pii_entities(text_col VARCHAR, lang VARCHAR, types VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf') SELECT redact_pii_entities('His name is Joe, his username is joe123 and he lives in Richmond VA', 'en', 'ALL') as pii_redacted

이 함수는 입력 문자열에 대해 수정 된 버전을 반환합니다. 하나 이상 지정 PII 엔티티 유형 쉼표로 구분 된 유효한 유형 목록을 type 문자열 매개 변수 또는 ALL 모든 유형을 수정합니다.

텍스트 번역

이 함수는 원본 언어의 텍스트를 대상 언어로 번역합니다. 5,000 바이트보다 긴 입력 텍스트는 여러 Amazon Translate API 호출을 발생시킵니다. 다음 코드를 참조하십시오.

USING FUNCTION translate_text(text_col VARCHAR, sourcelang VARCHAR, targetlang VARCHAR, customterminologyname VARCHAR) RETURNS VARCHAR TYPE LAMBDA_INVOKE WITH (lambda_name = 'textanalytics-udf') SELECT translate_text('It is a beautiful day in the neighborhood', 'auto', 'fr', NULL) as translated_text

이 함수는 번역 된 문자열을 반환합니다. 선택적으로 소스 언어를 자동 감지 (Amazon Comprehend를 사용하는 언어 코드로 auto 사용)하고 선택적으로 사용자 정의 용어 (그렇지 않으면 NULL 아시아인 대상 customTerminologyName).


저자에 관하여

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

출처 : https://aws.amazon.com/blogs/machine-learning/translate-and-analyze-text-using-sql-functions-with-amazon-athena-amazon-translate-and-amazon-comprehend/

spot_img

최신 인텔리전스

spot_img