شعار زيفيرنت

ترجمة وتحليل النص باستخدام وظائف SQL مع Amazon Athena و Amazon Translate و Amazon Comprehend

التاريخ:

لديك خدمة تخزين أمازون البسيطة (Amazon S3) دلاء مليئة بالملفات التي تحتوي على محادثات العملاء الواردة ، ومراجعات المنتجات ، وموجزات الوسائط الاجتماعية ، بعدة لغات. مهمتك هي تحديد المنتجات التي يتحدث عنها الأشخاص ، وتحديد ما إذا كانوا يعبرون عن أفكار سعيدة أو أفكار حزينة ، وترجمة تعليقاتهم إلى لغة واحدة مشتركة ، وإنشاء نسخ من البيانات لمحللي الأعمال لديك مع إضافة هذه المعلومات الجديدة إلى كل سجل. بالإضافة إلى ذلك ، تحتاج إلى إزالة أي معلومات تعريف شخصية (PII) ، مثل الأسماء والعناوين وأرقام بطاقات الائتمان.

أنت تعرف بالفعل كيفية الاستخدام أمازون أثينا لتحويل البيانات في Amazon S3 باستخدام أوامر SQL البسيطة والوظائف المضمنة في Athena. يمكنك الآن أيضًا استخدام Athena لترجمة وتحليل حقول النص ، وذلك بفضل ترجمة أمازون, فهم الأمازون، وقوة وظائف أثينا المحددة بواسطة المستخدم (UDFs).

Athena هي خدمة استعلام تفاعلية تسهل تحليل البيانات المخزنة في Amazon S3 باستخدام SQL. Amazon Comprehend هي خدمة معالجة اللغة الطبيعية (NLP) التي تسهل الكشف عن الرؤى من النص. Amazon Translate هي خدمة ترجمة آلية عصبية توفر ترجمة لغة سريعة وعالية الجودة وبأسعار معقولة وقابلة للتخصيص. في هذا المنشور ، أوضح لك كيف يمكنك الآن استخدامهما معًا لتنفيذ الإجراءات التالية:

  • كشف اللغة السائدة في حقل النص
  • اكتشف المشاعر السائدة المُعبَّر عنها - إيجابية أو سلبية أو لا أو كليهما
  • كشف الكيانات أو تنقيحها (مثل العناصر أو الأماكن أو الكميات)
  • كشف أو تنقيح معلومات تحديد الهوية الشخصية
  • ترجمة نص من لغة إلى أخرى

هذا المنشور يحقق الأهداف التالية:

  • أوضح لك كيفية إعداد وظائف تحليلات النص بسرعة في حساب 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. انتقل إلى تحليلات النصUDFHandler التطبيق في مستودع تطبيقات AWS Serverless.
  2. في ال إعدادات التطبيق القسم ، احتفظ بالإعدادات في إعداداتها الافتراضية.
  3. أختار أقر بأن هذا التطبيق ينشئ أدوارًا مخصصة لـ IAM.
  4. اختار نشر.

وهذا كل شيء! الآن لديك وظيفة Lambda جديدة تسمى textanalytics-udf. أنت جاهز لتجربة بعض استعلامات تحليلات النص في أثينا.

إذا كنت تفضل الإنشاء والنشر من التعليمات البرمجية المصدر بدلاً من ذلك ، فراجع التوجيهات في نهاية ملف مستودع جيثب README.

قم بتشغيل استعلام تحليلات النص الأول

إذا كنت جديدًا في أثينا ، فقد ترغب في مراجعة ملف كيف تبدأ يرشد.

حتى كتابة هذه السطور ، لا تزال ميزة Athena UDF قيد المعاينة. لتمكينه ، قم بإنشاء مجموعة عمل أثينا المسماة 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 المضمنة في أثينا على هذه النتيجة لاستخراج الحقول لمزيد من التحليل.

كيف يعمل UDF

لمزيد من المعلومات حول إطار عمل Athena UDF ، راجع الاستعلام عن وظائف معرّفة من قبل المستخدم.

فئة جافا تحليلات النصUDFHandler يقوم بتنفيذ معالج دالة UDF Lambda الخاص بنا. كل وظيفة تحليلية نصية لها طريقة عامة مقابلة في هذه الفئة.

تستدعي Athena دالة UDF Lambda الخاصة بنا مع مجموعات من سجلات الإدخال. ال TextAnalyticsUDFHandler يقسم هذه الدُفعات إلى دفعات أصغر تصل إلى 25 صفًا للاستفادة من واجهات برمجة تطبيقات Amazon Comprehend المتزامنة متعددة المستندات حيثما تكون متاحة (على سبيل المثال ، لاكتشاف اللغة والكيانات والمشاعر). في حالة عدم توفر واجهة برمجة تطبيقات متعددة المستندات متزامنة (مثل DetectPiiEntity و TranslateText) ، نستخدم واجهة برمجة التطبيقات ذات المستند الواحد بدلاً من ذلك.

واجهة برمجة تطبيقات فهم أمازون حصص الخدمة توفير حواجز حماية للحد من تعرضك للتكلفة من الاستخدام العالي غير المقصود (نناقش هذا أكثر في القسم التالي). بشكل افتراضي ، تعالج واجهات برمجة التطبيقات متعددة المستندات ما يصل إلى 250 سجلًا في الثانية ، وتعالج واجهات برمجة التطبيقات ذات المستند الواحد ما يصل إلى 20 سجلًا في الثانية. تستخدم UDFs الخاصة بنا التراجع الأسي وإعادة المحاولة لخفض معدل الطلب للبقاء ضمن هذه الحدود. يمكنك طلب زيادات في الحصة النسبية للمعاملات في الثانية لواجهات برمجة التطبيقات باستخدام نموذج طلب الحصة النسبية على وحدة تحكم إدارة AWS.

يفرض كل من Amazon Comprehend و Amazon Translate حدًا أقصى لطول سلسلة الإدخال يبلغ 5,000 utf-8 بايت. يتم اقتطاع الحقول النصية التي يزيد طولها عن 5,000 بايت -8 بايت إلى 5,000 بايت لاكتشاف اللغة والمشاعر ، وتقسيم حدود الجملة إلى كتل نصية متعددة أقل من 5,000 بايت للترجمة والكيان أو الكشف عن معلومات تحديد الهوية الشخصية وتنقيحها. ثم يتم دمج النتائج.

تحسين التكلفة

بالإضافة إلى تكاليف استعلام Athena ، تتكبد تحليلات النص UDF تكاليف الاستخدام من Lambda و Amazon Comprehend و Amazon Translate. المبلغ الذي تدفعه هو عامل من إجمالي عدد السجلات والأحرف التي تعالجها باستخدام UDF. لمزيد من المعلومات، راجع تسعير AWS Lambda, تسعير Amazon Comprehendو تسعير Amazon Translate.

لتقليل التكاليف ، أوصي بتجنب معالجة نفس السجلات عدة مرات. بدلاً من ذلك ، يمكنك تجسيد نتائج تحليل النص UDF باستخدام استعلامات CREATE TABLE AS SELECT (CTAS) لالتقاط النتائج في جدول منفصل يمكنك بعد ذلك الاستعلام بفعالية من حيث التكلفة كلما دعت الحاجة دون تكبد رسوم UDF إضافية. قم بمعالجة السجلات التي تصل حديثًا بشكل متزايد باستخدام INSERT IGNORE INTO ... استعلامات التحديد لتحليل وإثراء السجلات الجديدة فقط وإضافتها إلى الجدول الهدف.

تجنب استدعاء وظائف التحليلات النصية دون داع في السجلات التي ستتجاهلها لاحقًا. اكتب استعلاماتك لتصفية مجموعة البيانات أولاً باستخدام الجداول المؤقتة أو طرق العرض أو الاستعلامات المتداخلة ، ثم قم بتطبيق وظائف تحليلات النص على السجلات المصفاة الناتجة.

قم دائمًا بتقييم التكلفة المحتملة قبل تشغيل استعلامات التحليلات النصية على الجداول التي تحتوي على أعداد كبيرة من السجلات.

في هذا القسم ، نقدم مثالين لتقييم التكلفة.

مثال 1: تحليل لغة ومشاعر التغريدات

لنفترض أن لديك 10,000 سجل تغريدة ، بمتوسط ​​طول 100 حرف لكل تغريدة. يكتشف استعلام SQL الخاص بك اللغة والمشاعر السائدة لكل تغريدة. أنت في السنة الثانية من الخدمة (لم تعد الطبقة المجانية سارية). تفاصيل التكلفة هي كما يلي:

  • حجم كل تغريدة = 100 حرف
  • عدد الوحدات (100 حرف) لكل سجل (الحد الأدنى 3 وحدات) = 3
  • إجمالي الوحدات: 10,000،3 (سجل) × 2 (وحدات لكل سجل) × 60,000 (طلبات Amazon Comprehend لكل سجل) = XNUMX،XNUMX
  • سعر الوحدة = 0.0001 دولار
  • التكلفة الإجمالية لبرنامج Amazon Comprehend = [عدد الوحدات] × [التكلفة لكل وحدة] = 60,000،0.0001 x 6.00 USD = XNUMX دولارات 

مثال 2: ترجمة التغريدات

لنفترض أن 2,000 من تغريداتك ليست بلغتك المحلية ، لذلك تقوم بتشغيل استعلام SQL ثاني لترجمتها. تفاصيل التكلفة كالتالي:

  • حجم كل تغريدة = 100 حرف
  • إجمالي عدد الأحرف: 2,000 (سجل) * 100 (حرف لكل سجل) × 1 (طلبات الترجمة لكل سجل) = 200,000
  • سعر الحرف = 0.000015 دولار
  • التكلفة الإجمالية لـ Amazon Translate = [عدد الأحرف] × [التكلفة لكل حرف] = 200,000 × 0.000015 دولارًا أمريكيًا = 3.00 دولارات أمريكية

تحليل الرؤى من مراجعات العملاء

حان الوقت لاستخدام استفسارات تحليلات النص الجديدة.

للحصول على برنامج تعليمي حول الحصول على رؤى قابلة للتنفيذ من مراجعات العملاء ، راجع البرنامج التعليمي: تحليل الرؤى من مراجعات العملاء باستخدام Amazon Comprehend. يوفر هذا المنشور نهجًا بديلاً لنفس التحدي: استخدام استعلامات SQL التي تدعمها Athena و Amazon Comprehend.

يستغرق البرنامج التعليمي حوالي 10 دقائق لإكماله ، وتكلفته تصل إلى 6 دولارات أمريكية لبرنامج Amazon Comprehend - لا توجد تكلفة إذا كنت مؤهلاً للحصول على المستوى المجاني.

أنشئ قاعدة بيانات جديدة في أثينا

قم بتشغيل الاستعلام التالي في محرر استعلام أثينا:

CREATE DATABASE IF NOT EXISTS comprehendresults;

عند الاتصال بمصدر البيانات ، اختر قاعدة البيانات الجديدة.

قم بإنشاء جدول مصدر يحتوي على بيانات مراجعة العملاء

نستخدم مجموعة بيانات مراجعات عملاء أمازون، تمت استضافتها بشكل ملائم للوصول العام في Amazon S3.

  1. قم بتشغيل الاستعلام التالي في محرر استعلام أثينا:
    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. تحت طاولات الطعام، ابحث عن الجدول الجديد 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 حرف).

كشف لغة كل مراجعة

لاكتشاف لغة كل مراجعة ، قم بتشغيل الاستعلام التالي في محرر استعلام Athena - يستغرق الأمر أكثر من دقيقة واحدة فقط للتشغيل ويكلف 1 دولار:

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 (سجل) × 4 (وحدة لكل سجل) × 1 (طلبات لكل سجل) × 0.0001 دولار أمريكي (سعر استيعاب Amazon لكل وحدة) = 2 دولار أمريكي. 

قم بتشغيل الاستعلام التالي لمعرفة رموز اللغة المكتشفة ، مع عدد المراجعات المقابل لكل لغة:

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

كشف المشاعر والكيانات لكل مراجعة

لاكتشاف المشاعر ، قم بتشغيل الاستعلام التالي في محرر استعلام Athena — يستخدم وظيفتين لتحليل النص ، ويستغرق تشغيله حوالي دقيقة واحدة ، ويكلف 1 دولارات:

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، مع إضافة عمودين إضافيين: sentiment و entities. يقيد بند WHERE مجموعة النتائج على قائمة اللغات التي يدعمها Amazon Comprehend العاطفة واكتشاف الكيان.

يتم احتساب التكلفة على النحو التالي: 5,000 (سجل) × 4 (وحدة لكل سجل) × 2 (طلبات لكل سجل) × 0.0001 دولار أمريكي (سعر استيعاب Amazon لكل وحدة) = 4 دولار أمريكي.

قم بمعاينة الجدول الجديد وافحص بعض القيم الجديدة sentiment و entities الأعمدة. تحتوي على سلاسل JSON ذات الهياكل والحقول المتداخلة.

تظهر لقطة الشاشة التالية sentiment تفاصيل العمود.

تُظهر لقطة الشاشة التالية تفاصيل عمود الكيانات.

بعد ذلك ، نستخدم وظائف 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 (اختياري)

كخطوة اختيارية ، يمكنك تصور نتائجك باستخدام أمازون QuickSight. للحصول على التعليمات ، انظر الخطوة 5: تصور مخرجات Amazon Comprehend في Amazon QuickSight.

يمكنك استخدام النوع المرئي الجديد لسحابة الكلمات للكيانات ، بدلاً من الخريطة المتفرعة. في قائمة مخطط سحابة الكلمات ، حدد إخفاء الفئات "الأخرى".

لديك الآن لوحة معلومات تحتوي على تصورات المشاعر والكيانات التي تشبه لقطة الشاشة التالية.

استكشاف الأخطاء:

إذا فشل الاستعلام الخاص بك ، فتحقق من الأمازون CloudWatch المقاييس والسجلات التي تم إنشاؤها بواسطة وظيفة UDF Lambda.

  1. في وحدة تحكم Lambda ، ابحث عن ملف textanalytics-udf وظيفة.
  2. اختار مراقبة.

يمكنك عرض مقاييس CloudWatch التي توضح عدد مرات تشغيل الوظيفة ، ومدة تشغيلها ، وعدد مرات فشلها ، والمزيد.

  1. اختار عرض السجلات في CloudWatch لفتح تدفقات سجل الوظائف للحصول على رؤى إضافية حول استكشاف الأخطاء وإصلاحها.

لمزيد من المعلومات حول عرض مقاييس CloudWatch عبر Lambda ، راجع استخدام وحدة تحكم Lambda.

حالات استخدام إضافية

هناك العديد من حالات الاستخدام لوظائف تحليل نص SQL. بالإضافة إلى المثال الموضح في هذا المنشور ، ضع في اعتبارك ما يلي:

  • تبسيط خطوط أنابيب ETL باستخدام استعلامات SQL الإضافية لإثراء البيانات النصية بالمشاعر والكيانات ، مثل دفق تدفقات الوسائط الاجتماعية التي يتم استيعابها بواسطة أمازون كينسيس داتا فايرهاوس
  • استخدم استعلامات SQL لاستكشاف المشاعر والكيانات في نصوص دعم العملاء ورسائل البريد الإلكتروني وحالات الدعم
  • قم بإعداد مجموعات بيانات جاهزة للبحث عن طريق تنقيح معلومات تحديد الهوية الشخصية من تفاعلات العملاء أو المرضى
  • توحيد العديد من اللغات في لغة واحدة مشتركة

قد يكون لديك حالات استخدام إضافية لهذه الوظائف ، أو قدرات إضافية تريد رؤيتها مضافة ، مثل ما يلي:

  • وظائف SQL لاستدعاء التعرف على الكيانات المخصصة ونماذج التصنيف المخصصة في Amazon Comprehend
  • دالات SQL لإلغاء التعريف - توسيع وظائف تنقيح الكيان و PII لاستبدال الكيانات بمعرفات فريدة بديلة

بالإضافة إلى ذلك ، فإن التطبيق مفتوح المصدر ، مما يعني أنه يمكنك استنساخ الريبو ، وتعديل الوظائف وتوسيعها كما تراه مناسبًا ، و (نأمل) إرسال طلبات السحب إلينا حتى نتمكن من دمج التحسينات مرة أخرى في المشروع وجعلها أفضل من أجل كل واحد.

تنظيف

بعد إكمال هذا البرنامج التعليمي ، قد ترغب في تنظيف أي موارد AWS لم تعد ترغب في استخدامها. يمكن أن تستمر موارد AWS النشطة في تحمل رسوم في حسابك.

  1. في Athena ، قم بتشغيل الاستعلام التالي لإسقاط قاعدة البيانات وجميع الجداول:
    DROP DATABASE comprehendresults CASCADE

  1. في AWS CloudFormation ، احذف الحزمة serverlessrepo-TextAnalyticsUDFHandler.
  2. قم بإلغاء اشتراكك في QuickSight.

وفي الختام

لقد أوضحت لك كيفية تثبيت نموذج تحليلات النص لوظيفة UDF Lambda في Athena ، بحيث يمكنك استخدام استعلامات SQL بسيطة لترجمة النص باستخدام Amazon Translate ، وإنشاء رؤى من النص باستخدام Amazon Comprehend ، وتنقيح المعلومات الحساسة. أتمنى أن تجد هذا مفيدًا ، وأن تشارك أمثلة حول كيفية استخدامه لتبسيط البنيات الخاصة بك وتنفيذ إمكانات جديدة لعملك.

يرجى مشاركة أفكارك معنا في قسم التعليقات ، أو في قسم القضايا في المشروع مستودع جيثب.

الملحق: مرجع الوظيفة المتاحة

يلخص هذا القسم الوظائف المتوفرة حاليًا. ال README يوفر الملف تفاصيل إضافية.

الكشف عن اللغة

تستخدم هذه الوظيفة برنامج Amazon Comprehend BatchDetectDominantLanguage API لتحديد اللغة السائدة بناءً على أول 5,000 بايت من إدخال النص.

يقوم الكود التالي بإرجاع رمز اللغة ، مثل 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 BatchDetectSentiment API لتحديد المشاعر بناءً على أول 5,000 بايت من إدخال النص.

ترجع الكود التالي شعورًا إيجابيًا أو سلبيًا أو محايدًا أو مختلطًا:

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 كشف الكيانات API لتحديد PII. يؤدي إدخال النص الذي يزيد طوله عن 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

تُرجع التعليمة البرمجية التالية كائنًا بتنسيق JSON يحتوي على مصفوفة من أنواع كيانات PII ، بقيمها ودرجاتها وإزاحات الأحرف الخاصة بها:

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

تستخدم هذه الوظيفة ملف DetectPiiEntities API لتحديد PII. يؤدي إدخال النص الذي يزيد طوله عن 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

تُرجع التعليمة البرمجية التالية كائنًا بتنسيق JSON يحتوي على مصفوفة من أنواع كيانات PII ، مع درجاتها وإزاحات الأحرف الخاصة بها:

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

ترجع الدالة السلسلة المترجمة. اختياريًا ، اكتشف تلقائيًا لغة المصدر (استخدم auto كرمز للغة ، والذي يستخدم Amazon Comprehend) ، وحدد اختياريًا المصطلحات المخصصة (استخدم خلاف ذلك NULL For customTerminologyName).


عن المؤلف

بوب ستراهانبوب ستراهان هو مهندس حلول رئيسي في فريق خدمات الذكاء الاصطناعي للغة AWS.

المصدر: https://aws.amazon.com/blogs/machine-learning/translate-and-analyze-text-using-sql-functions-with-amazon-athena-amazon-translate-and-amazon-comprehend/

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة

الدردشة معنا

أهلاً! كيف يمكنني مساعدك؟