Zephyrnet Logosu

Amazon Athena, Amazon Translate ve Amazon Comprehend ile SQL işlevlerini kullanarak metni çevirin ve analiz edin

Tarih:

Sen var Amazon Basit Depolama Hizmeti (Amazon S3), birçok dilde gelen müşteri sohbetlerini, ürün incelemelerini ve sosyal medya beslemelerini içeren dosyalarla dolu kovalar. Göreviniz, insanların bahsettiği ürünleri belirlemek, mutlu veya üzücü düşünceler ifade edip etmediklerini belirlemek, yorumlarını tek bir ortak dile çevirmek ve eklenen bu yeni bilgilerle iş analistleriniz için verilerin kopyalarını oluşturmaktır. her kayıt. Ek olarak, adlar, adresler ve kredi kartı numaraları gibi kişisel olarak tanımlanabilir bilgileri (PII) kaldırmanız gerekir.

Nasıl kullanılacağını zaten biliyorsun Amazon Atina basit SQL komutlarını ve Athena'daki yerleşik işlevleri kullanarak Amazon S3'teki verileri dönüştürmek için. Artık metin alanlarını çevirmek ve analiz etmek için Athena'yı da kullanabilirsiniz. Amazon Tercüme, Amazon Kavramakve Athena Kullanıcı Tanımlı İşlevlerin (UDF'ler) gücü.

Athena, Amazon S3'te depolanan verileri SQL kullanarak analiz etmeyi kolaylaştıran etkileşimli bir sorgu hizmetidir. Amazon Comprehend, metinden içgörüleri ortaya çıkarmayı kolaylaştıran bir Doğal Dil İşleme (NLP) hizmetidir. Amazon Translate, hızlı, yüksek kaliteli, uygun fiyatlı ve özelleştirilebilir dil çevirisi sunan bir sinir makinesi çevirisi hizmetidir. Bu yazıda, aşağıdaki eylemleri gerçekleştirmek için bunları birlikte nasıl kullanabileceğinizi size göstereceğim:

  • Bir metin alanının baskın dilini tespit edin
  • Olumlu, olumsuz, hiçbiri veya her ikisi birden ifade edilen hakim duyguyu tespit edin
  • Varlıkları tespit edin veya çıkartın (öğeler, yerler veya miktarlar gibi)
  • PII'yi tespit edin veya çıkartın
  • Metni bir dilden diğerine çevirin

Bu gönderi aşağıdaki hedefleri gerçekleştirir:

  • Metin analizi işlevlerini kendi AWS hesabınızda nasıl hızlı bir şekilde kuracağınızı gösterin (hızlı ve kolaydır!)
  • İşlevlerin nasıl çalıştığını kısaca açıklayın
  • Performans ve maliyeti tartışın
  • Amazon ürün incelemelerinde bazı metin analizi yaptığımız bir eğitim sağlayın
  • Mevcut tüm işlevleri açıklayın

Gönderinin sonuna mevcut tüm işlevlerin bir listesini ekliyoruz; Aşağıdaki kod, birkaç örnek sorgu ve sonucu gösterir:

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

Metin analizi UDF'sini yükleyin

Bir Athena UDF, AWS Lambda fonksiyon yeteneğini uygulamak için. Bu yazının ilerleyen kısımlarında daha fazla ayrıntı tartışacağım, ancak metin analitiği UDF'yi kullanmak için iç işleyişi anlamanıza gerek yok, o yüzden başlayalım.

Önceden oluşturulmuş Lambda işlevini aşağıdaki adımlarla yükleyin:

  1. gidin TextAnalyticsUDFİşleyici uygulamada AWS Sunucusuz Uygulama Deposu.
  2. İçinde Uygulama ayarları bölümünde ayarları varsayılan değerlerinde tutun.
  3. seç Bu uygulamanın özel IAM rolleri oluşturduğunu kabul ediyorum.
  4. Klinik Sürüş.

Ve bu kadar! Artık yeni bir Lambda işlevine sahipsiniz. textanalytics-udf. Athena'da bazı metin analizi sorgularını denemeye hazırsınız.

Bunun yerine kaynak koddan derlemeyi ve dağıtmayı tercih ederseniz, sayfanın sonundaki talimatlara bakın. GitHub deposu README.

İlk metin analizi sorgunuzu çalıştırın

Athena'da yeniyseniz, Başlamak Kılavuz.

Bu yazı itibariyle, Athena UDF özelliği hala önizleme aşamasındadır. Etkinleştirmek için adlı bir Athena çalışma grubu oluşturun AmazonAthenaPreviewFunctionality ve bu çalışma grubundan tüm UDF sorgularını çalıştırın.

Aşağıdaki sorguyu SQL düzenleyicisine girin:

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

Basit olsun POSITIVE sonuç. Şimdi, giriş metnini değiştirerek tekrar deneyin — döndürülen duyarlılık değerinin nasıl değiştiğini görmek için daha az olumlu bir şey deneyin.

Duyarlılığı ve her potansiyel duyarlılık değeri için güven puanlarını almak için, bunun yerine aşağıdaki sorguyu kullanın:

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

Şimdi duyarlılığı ve tüm duygu puanlarını içeren bir JSON dizesi elde edersiniz:

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

Sen kullanabilirsiniz yerleşik JSON çıkarma işlevleri Athena'da bu sonuç üzerine daha fazla analiz için alanları çıkarmak.

UDF nasıl çalışır?

Athena UDF çerçevesi hakkında daha fazla bilgi için bkz. Kullanıcı Tanımlı İşlevlerle Sorgulama.

Java sınıfı TextAnalyticsUDFİşleyici UDF Lambda işlev işleyicimizi uygular. Her metin analizi işlevinin bu sınıfta karşılık gelen bir genel yöntemi vardır.

Athena, girdi kayıtlarının toplu işleriyle UDF Lambda işlevimizi çağırır. TextAnalyticsUDFHandler Amazon Comprehend, eşzamanlı çok belgeli toplu iş API'lerinden (örneğin, dili, varlıkları ve yaklaşımı algılamak için) yararlanmak için bu grupları en fazla 25 satırlık daha küçük gruplar halinde alt bölümlere ayırır. Kullanılabilir eşzamanlı çoklu belge API'si olmadığında (örneğin DetectPiiEntity ve TranslateText), bunun yerine tek belgeli API'yi kullanıyoruz.

Amazon Anlamak API'si hizmet kotaları Kasıtsız yüksek kullanımdan kaynaklanan maliyet maruziyetinizi sınırlandırmak için korkuluklar sağlayın (bunu aşağıdaki bölümde daha fazla tartışacağız). Varsayılan olarak, çok belgeli toplu API'ler saniyede 250'ye kadar kaydı işler ve tek belgeli API'ler saniyede 20'ye kadar kaydı işler. UDF'lerimiz üstel geri çekmeyi kullanır ve bu sınırlar içinde kalmak için istek oranını düşürmek için yeniden deneme yapar. API'ler için saniye başına işlem kotasında artış talep edebilirsiniz. Kota Talep Şablonu üzerinde AWS Yönetim Konsolu.

Amazon Comprehend ve Amazon Translate'in her biri maksimum 5,000 utf-8 baytlık giriş dizesi uzunluğunu zorunlu kılar. 5,000 utf-8 bayttan daha uzun olan metin alanları, dil ve duygu algılaması için 5,000 bayta kesilir ve cümle sınırlarında çeviri ve varlık veya PII algılama ve düzeltme için 5,000 baytın altında çoklu metin bloklarına bölünür. Sonuçlar daha sonra birleştirilir.

Maliyet optimizasyonu

Athena sorgu maliyetlerine ek olarak, metin analizi UDF'si Lambda ve Amazon Comprehend ve Amazon Translate'ten kullanım maliyetlerine neden olur. Ödediğiniz tutar, UDF ile işlediğiniz toplam kayıt ve karakter sayısının bir faktörüdür. Daha fazla bilgi için bakınız AWS Lambda fiyatlandırması, Amazon Comprehend fiyatlandırması, ve Amazon Translate fiyatlandırması.

Maliyetleri en aza indirmek için aynı kayıtları birden çok kez işlemekten kaçınmanızı öneririm. Bunun yerine, sonuçları ayrı bir tabloda yakalamak için CREATE TABLE AS SELECT (CTAS) sorgularını kullanarak metin analitiği UDF'nin sonuçlarını somutlaştırın ve daha sonra ek UDF ücretleri ödemeden gerektiği kadar uygun maliyetli bir şekilde sorgulayabilirsiniz. Yalnızca yeni kayıtları analiz etmek ve zenginleştirmek ve bunları hedef tabloya eklemek için INSERT IGNORE INTO…SELECT sorgularını kullanarak yeni gelen kayıtları aşamalı olarak işleyin.

Daha sonra atacağınız kayıtlarda gereksiz yere metin analizi işlevlerini çağırmaktan kaçının. Önce geçici tablolar, görünümler veya iç içe geçmiş sorgular kullanarak veri kümesini filtrelemek için sorgularınızı yazın ve ardından metin analizi işlevlerini elde edilen filtrelenmiş kayıtlara uygulayın.

Çeşitli kayıtların bulunduğu tablolarda metin analizi sorguları çalıştırmadan önce her zaman potansiyel maliyeti değerlendirin.

Bu bölümde, iki örnek maliyet değerlendirmesi sunuyoruz.

Örnek 1: Tweetlerin dilini ve duyarlılığını analiz edin

Tweet başına ortalama 10,000 karakter uzunluğunda 100 tweet kaydınız olduğunu varsayalım. SQL sorgunuz her tweet için baskın dili ve yaklaşımı algılar. İkinci hizmet yılındasınız (Ücretsiz Kullanım artık geçerli değildir). Maliyet detayları aşağıdaki gibidir:

  • Her tweet'in boyutu = 100 karakter
  • Kayıt başına birim sayısı (100 karakter) (minimum 3 birimdir) = 3
  • Toplam Birimler: 10,000 (kayıt) x 3 (kayıt başına birim) x 2 (kayıt başına Amazon Comprehend istekleri) = 60,000
  • Birim başına fiyat = 0.0001 $
  • Amazon Comprehend için toplam maliyet = [birim sayısı] x [birim başına maliyet] = 60,000 x 0.0001 ABD doları = 6.00 ABD doları 

Örnek 2: Tweet çevirme

2,000 tweet'inizin yerel dilinizde olmadığını varsayalım, bu yüzden onları çevirmek için ikinci bir SQL sorgusu çalıştırırsınız. Maliyet detayları aşağıdaki gibidir:

  • Her tweet'in boyutu = 100 karakter
  • Toplam karakter: 2,000 (kayıt) * 100 (kayıt başına karakter) x 1 (Kayıt başına çeviri istekleri) = 200,000
  • Karakter başına fiyat = 0.000015 USD
  • Amazon Translate'in toplam maliyeti = [karakter sayısı] x [karakter başına maliyet] = 200,000 x 0.000015 USD = 3.00 USD

Müşteri incelemelerinden elde edilen öngörüleri analiz edin

Yeni metin analizi sorgularımızı kullanmak için koymanın zamanı geldi.

Müşteri incelemelerinden eyleme dönüştürülebilir içgörüler elde etme hakkında bir eğitim için bkz. Eğitici: Amazon Comprehend ile Müşteri İncelemelerindeki Öngörüleri Analiz Etme. Bu gönderi, aynı zorluğa alternatif bir yaklaşım sunuyor: Athena ve Amazon Comprehend tarafından desteklenen SQL sorgularını kullanma.

Eğiticinin tamamlanması yaklaşık 10 dakika sürer ve Amazon Comprehend için 6 ABD dolarına kadar maliyeti vardır - Ücretsiz Kullanım için uygunsanız herhangi bir ücret alınmaz.

Athena'da yeni bir veritabanı oluşturun

Athena sorgu düzenleyicisinde aşağıdaki sorguyu çalıştırın:

CREATE DATABASE IF NOT EXISTS comprehendresults;

Veri kaynağınızı bağlarken yeni veritabanınızı seçin.

Müşteri inceleme verilerini içeren bir kaynak tablo oluşturun

Biz kullanın Amazon Müşteri Yorumları Veri Kümesi, Amazon S3'te genel erişim için uygun şekilde barındırılır.

  1. Athena sorgu düzenleyicisinde aşağıdaki sorguyu çalıştırın:
    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. Altında tablolaryeni tabloyu bul amazon“_parquet.
  2. Seçenekler menüsünden şunu seçin: Bölümleri yükle.
  1. Yeni tabloyu önizleyin, amazon_reviews_parquet.
  1. Ortalama inceleme uzunluğunu değerlendirmek için aşağıdaki sorguyu çalıştırın:
    SELECT AVG(LENGTH(review_body)) AS average_review_length FROM amazon_reviews_parquet

Ortalama inceleme uzunluğu yaklaşık 365 karakterdir. Bu, kayıt başına 4 Amazon Comprehend birimine eşittir (1 birim = 100 karakter).

Her incelemenin dilini tespit edin

Her incelemenin dilini tespit etmek için Athena sorgu düzenleyicisinde aşağıdaki sorguyu çalıştırın — çalıştırılması 1 dakikadan biraz fazla sürer ve maliyeti 2 ABD dolarıdır:

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

Bu sorgu yeni bir tablo oluşturur, amazon_reviews_with_language, bir yeni sütun eklendi: language. LIMIT maddesi, kayıt sayısını 5,000 ile sınırlar.

Maliyet şu şekilde hesaplanır: 5,000 (kayıt) x 4 (kayıt başına birim) x 1 (kayıt başına istek) x 0.0001 ABD doları (Amazon Comprehend birim başına fiyat) = 2 ABD doları. 

Algılanan dil kodlarını, her dil için karşılık gelen yorum sayısıyla görmek için aşağıdaki sorguyu çalıştırın:

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

Her inceleme için yaklaşımı ve varlıkları tespit edin

Duyguları tespit etmek için Athena sorgu düzenleyicisinde aşağıdaki sorguyu çalıştırın - iki metin analizi işlevi kullanır, çalıştırılması yaklaşık 1 dakika sürer ve maliyeti 4 ABD dolarıdır:

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')

Bu sorgu yeni bir tablo oluşturur, amazon_reviews_with_text_analysis, iki ek sütun eklendi: sentiment ve entities. WHERE yan tümcesi, sonuç kümesini Amazon Comprehend duyarlılık ve varlık algılama tarafından desteklenen dillerin listesiyle sınırlar.

Maliyet şu şekilde hesaplanır: 5,000 (kayıt) x 4 (kayıt başına birim) x 2 (kayıt başına istek) x 0.0001 ABD doları (Amazon Comprehend birim başına fiyat) = 4 ABD doları.

Yeni tabloyu önizleyin ve yeni tablo için bazı değerleri inceleyin. sentiment ve entities sütunlar. İç içe geçmiş yapılar ve alanlar içeren JSON dizeleri içerirler.

Aşağıdaki ekran görüntüsü sentiment sütun ayrıntıları.

Aşağıdaki ekran görüntüsü varlıklar sütun ayrıntılarını gösterir.

Ardından, bu sütunları analize hazırlamak için Athena'daki JSON işlevlerini kullanıyoruz.

Analiz için duyguları hazırlayın

Ayrı sütunlara genişletilmiş duyarlılık ve duyarlılık puanlarını içeren yeni bir tablo oluşturmak için aşağıdaki SQL sorgusunu çalıştırın:

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

Yeniyi önizleyin sentiment_results_final tablo (aşağıdaki ekran görüntüsüne bakın). Duygu genellikle metnin metni ile uyumlu mu? review_body alan? İle nasıl ilişkilidir? star_rating? Herhangi bir şüpheli duygu ataması görürseniz, duyarlılığın düşük bir güven ile verilip verilmediğini görmek için güven puanlarını kontrol edin.

Varlıkları analiz için hazırlayın

Her alan ayrı bir sütunda (dış sorgu) olacak şekilde, ayrı satırlarda yuvalanmamış algılanan varlıkları (iç alt sorgu) içeren yeni bir tablo oluşturmak için aşağıdaki SQL sorgusunu çalıştırın:

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)
)

Yeni tablonun içeriğini önizleyin, entities_results_final (aşağıdaki ekran görüntüsüne bakın).

Amazon QuickSight'ta görselleştirin (isteğe bağlı)

İsteğe bağlı bir adım olarak, sonuçlarınızı şununla görselleştirebilirsiniz: Amazon QuickSight. Talimatlar için bkz. 5. Adım: Amazon Comprehend Çıkışı Amazon QuickSight'ta Görselleştirme.

Varlıklar için ağaç haritası yerine yeni kelime bulutu görsel türünü kullanabilirsiniz. Kelime bulutu grafik menüsünde, "Diğer" kategorileri gizle.

Artık aşağıdaki ekran görüntüsüne benzeyen duygu ve varlık görselleştirmelerine sahip bir panonuz var.

Sorun giderme

Sorgunuz başarısız olursa, kontrol edin Amazon Bulut İzleme UDF Lambda işlevi tarafından oluşturulan metrikler ve günlükler.

  1. Lambda konsolunda, textanalytics-udf fonksiyonu.
  2. Klinik İzleme.

İşlevin ne sıklıkla çalıştığını, ne kadar süreyle çalıştığını, ne sıklıkla başarısız olduğunu ve daha fazlasını gösteren CloudWatch ölçümlerini görüntüleyebilirsiniz.

  1. Klinik CloudWatch'ta günlükleri görüntüleyin ek sorun giderme bilgileri için işlev günlüğü akışlarını açmak için.

CloudWatch ölçümlerini Lambda aracılığıyla görüntüleme hakkında daha fazla bilgi için bkz. Lambda konsolunu kullanma.

Ek kullanım durumları

SQL metin analizi işlevleri için birçok kullanım durumu vardır. Bu yayında gösterilen örneğe ek olarak, aşağıdakileri de göz önünde bulundurun:

  • Metin verilerini duyarlılık ve varlıklarla zenginleştirmek için artımlı SQL sorguları kullanarak ETL işlem hatlarını basitleştirin Amazon Kinesis Veri İtfaiyesi
  • Müşteri destek metinlerinizdeki, e-postalarınızdaki ve destek vakalarınızdaki duyguları ve varlıkları keşfetmek için SQL sorgularını kullanın
  • Müşteri veya hasta etkileşimlerinden PII'yi çıkararak araştırmaya hazır veri kümeleri hazırlayın
  • Birçok dili tek bir ortak dilde standartlaştırın

Bu işlevler için ek kullanım durumlarınız veya aşağıdakiler gibi eklendiğini görmek istediğiniz ek yetenekleriniz olabilir:

  • Amazon Comprehend'de özel varlık tanıma ve özel sınıflandırma modellerini çağırmak için SQL işlevleri
  • Kimlik gizleme için SQL işlevleri - varlık ve PII redaksiyon işlevlerini, varlıkları alternatif benzersiz tanımlayıcılarla değiştirecek şekilde genişletir

Ek olarak, uygulama açık kaynaklıdır; bu, repo'yu klonlayabileceğiniz, işlevleri uygun gördüğünüz şekilde değiştirebileceğiniz ve genişletebileceğiniz ve (umarız) bize geri çekme istekleri gönderebileceğiniz anlamına gelir, böylece geliştirmelerinizi projeye yeniden birleştirebilir ve herkes.

Temizlemek

Bu öğreticiyi tamamladıktan sonra, artık kullanmak istemediğiniz tüm AWS kaynaklarını temizlemek isteyebilirsiniz. Etkin AWS kaynakları, hesabınızda ücret ödemeye devam edebilir.

  1. Athena'da, veritabanını ve tüm tabloları bırakmak için aşağıdaki sorguyu çalıştırın:
    DROP DATABASE comprehendresults CASCADE

  1. AWS CloudFormation'da yığını silin serverlessrepo-TextAnalyticsUDFHandler.
  2. QuickSight aboneliğinizi iptal edin.

Sonuç

Athena için örnek metin analizi UDF Lambda işlevini nasıl yükleyeceğinizi gösterdim, böylece Amazon Translate kullanarak metin çevirmek için basit SQL sorgularını kullanabilir, Amazon Comprehend kullanarak metinden içgörüler oluşturabilir ve hassas bilgileri redakt edebilirsiniz. Umarım bunu yararlı bulursunuz ve mimarilerinizi basitleştirmek ve işletmeniz için yeni yetenekler uygulamak için onu nasıl kullanabileceğinize dair örnekleri paylaşırsınız.

Lütfen düşüncelerinizi yorum bölümünde veya projenin konular bölümünde bizimle paylaşın. GitHub deposu.

Ek: Kullanılabilir işlev referansı

Bu bölüm şu anda sağlanan işlevleri özetlemektedir. README dosyası ek ayrıntılar sağlar.

dili algıla

Bu işlev Amazon Comprehend'i kullanır BatchDetectDominantDil İlk 5,000 baytlık giriş metnine göre baskın dili tanımlamak için API.

Aşağıdaki kod, Fransızca için fr veya İngilizce için en gibi bir dil kodu döndürür:

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

Aşağıdaki kod, JSON biçimli bir dil kodları dizisi ve karşılık gelen güven puanları döndürür:

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

Duyguları tespit edin

Bu işlev Amazon Comprehend'i kullanır BatchDetectDuygu İlk 5,000 baytlık giriş metnine göre yaklaşımı tanımlayan API.

Aşağıdaki kod POZİTİF, NEGATİF, NÖTR veya KARIŞIK olarak bir duyarlılık döndürür:

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

Aşağıdaki kod, her duyarlılık değeri için algılanan duyarlılık ve güven puanlarını içeren JSON biçimli bir nesne döndürür:

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

Varlıkları algıla

Bu işlev Amazon Comprehend'i kullanır Varlıkları Algıla PII'yi tanımlamak için API. 5,000 bayttan uzun metin girişi, birden çok Amazon Comprehend API çağrısıyla sonuçlanır.

Aşağıdaki kod, bir dizi içeren JSON biçimli bir nesne döndürür. varlık türleri ve değerler:

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

Aşağıdaki kod, değerleri, puanları ve karakter uzaklıklarıyla birlikte bir dizi PII varlık türü içeren JSON biçimli bir nesne döndürür:

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

Varlıkları azaltın

Bu işlev, belirtilen varlık türleri için varlık değerlerini "[ENTITY_TYPE]”. 5,000 bayttan uzun metin girişi, birden çok Amazon Comprehend API çağrısıyla sonuçlanır. Aşağıdaki koda bakın:

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

Komut, giriş dizesinde düzeltilmiş bir sürüm döndürür. Bir veya daha fazla belirtin varlık türleri virgülle ayrılmış geçerli bir liste sağlayarak düzeltmek için types türlerde string parametresi veya ALL tüm türleri yeniden düzenlemek için.

PII'yi algıla

Bu işlev, DetectPiiEntities PII'yi tanımlamak için API. 5,000 bayttan uzun metin girişi, birden çok Amazon Comprehend API çağrısıyla sonuçlanır.

Aşağıdaki kod, bir dizi içeren JSON biçimli bir nesne döndürür. PII varlık türleri ve değerler:

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

Aşağıdaki kod, puanları ve karakter uzaklıklarıyla birlikte bir PII varlık türü dizisi içeren JSON biçimli bir nesne döndürür:

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'yi Redact

Bu işlev, belirtilen PII varlık türleri için PII değerlerini "[PII_ENTITY_TYPE]”. 5,000 bayttan uzun metin girişi, birden çok Amazon Comprehend API çağrısıyla sonuçlanır. Aşağıdaki koda bakın:

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

İşlev, girdi dizesinde düzeltilmiş bir sürüm döndürür. Bir veya daha fazla belirtin PII varlık türleri içinde virgülle ayrılmış geçerli türler listesi sağlayarak düzeltmek için type dize parametresi veya ALL her türden redaksiyon.

Metni çevir

Bu işlev, metni kaynak dilden hedef dile çevirir. 5,000 bayttan uzun metin girişi, birden çok Amazon Translate API çağrısıyla sonuçlanır. Aşağıdaki koda bakın:

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

İşlev çevrilen dizeyi döndürür. İsteğe bağlı olarak, kaynak dili otomatik olarak algılayın (Amazon Comprehend kullanan dil kodu olarak otomatik kullanın) ve isteğe bağlı olarak bir özel terminoloji (aksi takdirde kullanın NULL için customTerminologyName).


Yazar Hakkında

Bob StrahanBob Strahan AWS Dil Yapay Zeka Hizmetleri ekibinde Baş Çözüm Mimarıdır.

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

spot_img

En Son İstihbarat

spot_img

Bizimle sohbet

Merhaba! Size nasıl yardım edebilirim?