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:
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:
- gidin TextAnalyticsUDFİşleyici uygulamada AWS Sunucusuz Uygulama Deposu.
- İçinde Uygulama ayarları bölümünde ayarları varsayılan değerlerinde tutun.
- seç Bu uygulamanın özel IAM rolleri oluşturduğunu kabul ediyorum.
- 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:
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:
Şimdi duyarlılığı ve tüm duygu puanlarını içeren bir JSON dizesi elde edersiniz:
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:
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.
- Athena sorgu düzenleyicisinde aşağıdaki sorguyu çalıştırın:
- Altında tablolaryeni tabloyu bul amazon“_parquet.
- Seçenekler menüsünden şunu seçin: Bölümleri yükle.
- Yeni tabloyu önizleyin,
amazon_reviews_parquet
.
- Ortalama inceleme uzunluğunu değerlendirmek için aşağıdaki sorguyu çalıştırın:
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:
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:
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:
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:
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:
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.
- Lambda konsolunda,
textanalytics-udf
fonksiyonu. - 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.
- 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.
- Athena'da, veritabanını ve tüm tabloları bırakmak için aşağıdaki sorguyu çalıştırın:
- AWS CloudFormation'da yığını silin
serverlessrepo-TextAnalyticsUDFHandler
. - 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:
Aşağıdaki kod, JSON biçimli bir dil kodları dizisi ve karşılık gelen güven puanları döndürür:
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:
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:
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:
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:
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:
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:
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:
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:
İş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:
İş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 Strahan AWS Dil Yapay Zeka Hizmetleri ekibinde Baş Çözüm Mimarıdır.