Перекладайте та аналізуйте текст за допомогою функцій SQL за допомогою Amazon Athena, Amazon Translate та Amazon Comprehend

Вихідний вузол: 748149

У вас є Служба простого зберігання Amazon (Amazon S3) відра, повні файлів, що містять вхідні чати клієнтів, огляди продуктів і канали соціальних мереж багатьма мовами. Ваше завдання полягає в тому, щоб ідентифікувати продукти, про які говорять люди, визначити, чи висловлюють вони радісні чи сумні думки, перекласти їхні коментарі єдиною загальною мовою та створити копії даних для ваших бізнес-аналітиків, додавши цю нову інформацію до кожен запис. Крім того, вам потрібно видалити будь-яку особисту інформацію (PII), як-от імена, адреси та номери кредитних карток.

Ви вже знаєте, як користуватися Амазонка Афіна перетворювати дані в Amazon S3 за допомогою простих команд SQL і вбудованих функцій в Athena. Тепер ви також можете використовувати Athena для перекладу та аналізу текстових полів, завдяки Amazon Translate, «Амазонка», а також потужність Athena, визначених користувачем функцій (UDF).

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 Lambda реалізувати функціональні можливості. Більше деталей я обговорюю далі в цій публікації, але вам не потрібно розуміти внутрішню роботу, щоб використовувати UDF текстової аналітики, тож почнемо.

Встановіть попередньо зібрану функцію Lambda, виконавши такі дії:

  1. перейдіть до TextAnalyticsUDFHandler застосування в Сховище програм AWS без серверів.
  2. В Налаштування програми розділі, залиште налаштування за замовчуванням.
  3. Select Я визнаю, що ця програма створює власні ролі IAM.
  4. Вибирати Розгортання.

І це все! Тепер у вас є нова лямбда-функція 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 в Афіні за цим результатом, щоб отримати поля для подальшого аналізу.

Як працює UDF

Щоб отримати додаткові відомості про структуру Athena UDF, див Запити з функціями, визначеними користувачем.

Клас Java TextAnalyticsUDFHandler реалізує наш обробник функції UDF Lambda. Кожна функція аналітики тексту має відповідний відкритий метод у цьому класі.

Athena викликає нашу функцію UDF Lambda з пакетами вхідних записів. The TextAnalyticsUDFHandler ділить ці пакети на менші пакети до 25 рядків, щоб скористатися перевагами синхронних пакетних API із кількома документами Amazon Comprehend, де вони доступні (наприклад, для виявлення мови, об’єктів і настрою). Якщо синхронний багатодокументний API недоступний (наприклад, для DetectPiiEntity та TranslateText), замість цього ми використовуємо API для одного документа.

API API розуміння Amazon квоти на обслуговування забезпечте огорожі, щоб обмежити ваші витрати через ненавмисне інтенсивне використання (ми обговоримо це докладніше в наступному розділі). За замовчуванням багатодокументні пакетні API обробляють до 250 записів на секунду, а однодокументні API обробляють до 20 записів на секунду. Наші UDF використовують експоненціальну відмову та повторюють спроби зменшити частоту запитів, щоб залишатися в межах цих обмежень. Ви можете запросити збільшення квоти транзакцій за секунду для API, використовуючи Шаблон запиту на квоту на Консоль управління AWS.

Amazon Comprehend і Amazon Translate забезпечують максимальну довжину вхідного рядка 5,000 utf-8 байт. Текстові поля, які перевищують 5,000 байт utf-8, скорочуються до 5,000 байт для визначення мови та настроїв і розбиваються на кордонах речень на кілька текстових блоків розміром менше 5,000 байт для перекладу та виявлення та редагування сутності або PII. Потім результати об’єднуються.

Оптимізація витрат

Окрім витрат на запити Athena, текстова аналітика UDF несе витрати на використання Lambda, Amazon Comprehend і Amazon Translate. Сума, яку ви сплачуєте, є фактором загальної кількості записів і символів, які ви обробляєте за допомогою UDF. Для отримання додаткової інформації див Ціни AWS Lambda, Ціноутворення Amazon Comprehend та Ціни Amazon Translate.

Щоб мінімізувати витрати, я рекомендую уникати обробки одних і тих самих записів кілька разів. Натомість матеріалізуйте результати текстової аналітики UDF за допомогою запитів CREATE TABLE AS SELECT (CTAS), щоб зафіксувати результати в окремій таблиці, до якої потім можна економно надсилати запити стільки разів, скільки потрібно, без додаткових витрат на UDF. Поступово обробляйте нові записи, використовуючи запити INSERT INTO…SELECT, щоб аналізувати та збагачувати лише нові записи та додавати їх до цільової таблиці.

Уникайте без потреби викликати функції текстової аналітики для записів, які ви згодом відкинете. Напишіть свої запити для фільтрації набору даних, спершу використовуючи тимчасові таблиці, подання або вкладені запити, а потім застосуйте функції текстової аналітики до отриманих відфільтрованих записів.

Завжди оцінюйте потенційну вартість, перш ніж запускати запити текстової аналітики для таблиць із різною кількістю записів.

У цьому розділі ми надаємо два приклади оцінки витрат.

Приклад 1. Проаналізуйте мову та настрої твітів

Припустімо, що у вас є 10,000 100 записів твітів із середньою довжиною XNUMX символів на твіт. Ваш SQL-запит визначає домінуючу мову та настрої для кожного твіту. Ви працюєте другий рік (безкоштовний рівень більше не діє). Деталі вартості такі:

  • Розмір кожного твіту = 100 символів
  • Кількість одиниць (100 символів) на запис (мінімум 3 одиниці) = 3
  • Загальна кількість одиниць: 10,000 3 (записів) x 2 (одиниць на запис) x 60,000 (запитів Amazon Comprehend на запис) = XNUMX XNUMX
  • Ціна за одиницю = 0.0001 $
  • Загальна вартість для Amazon Comprehend = [кількість одиниць] x [вартість за одиницю] = 60,000 0.0001 x 6.00 $ = XNUMX $ 

Приклад 2. Перекладіть твіти

Припустимо, що 2,000 ваших твітів написані не вашою місцевою мовою, тому ви виконуєте другий запит SQL, щоб перекласти їх. Деталі вартості такі:

  • Розмір кожного твіту = 100 символів
  • Загальна кількість символів: 2,000 (записів) * 100 (символів на запис) x 1 (запитів на переклад на запис) = 200,000 XNUMX
  • Ціна за символ = 0.000015 $
  • Загальна вартість для Amazon Translate = [кількість символів] x [вартість за символ] = 200,000 0.000015 x 3.00 $ = XNUMX $

Аналізуйте інформацію з відгуків клієнтів

Настав час використовувати наші нові текстові аналітичні запити.

Навчальний посібник із отримання корисної інформації з відгуків клієнтів див Навчальний посібник: Аналіз статистики з відгуків клієнтів за допомогою Amazon Comprehend. Ця публікація пропонує альтернативний підхід до тієї ж проблеми: використання SQL-запитів на базі Athena та Amazon Comprehend.

Виконання навчального посібника займає приблизно 10 хвилин і коштує до 6 доларів США за Amazon Comprehend — якщо ви маєте право на безкоштовний рівень, оплата не стягується.

Створіть нову базу даних в 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. під таблиці, знайдіть нову таблицю 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з двома додатковими стовпцями: sentiment та entities. Речення WHERE обмежує набір результатів списком мов, які підтримують Amazon Comprehend визначення настроїв і об’єктів.

Вартість розраховується так: 5,000 (записів) x 4 (одиниць на запис) x 2 (запитів на запис) x 0.0001 $ (ціна Amazon Comprehend за одиницю) = 4 $.

Перегляньте нову таблицю та перевірте деякі значення для нової sentiment та entities колонки. Вони містять рядки JSON із вкладеними структурами та полями.

На наступному знімку екрана показано sentiment деталі колонки.

На наступному знімку екрана показано деталі стовпця сутностей.

Далі ми використовуємо функції JSON в Athena, щоб підготувати ці стовпці для аналізу.

Підготуйте почуття до аналізу

Виконайте наведений нижче 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 (необов’язково)

Як додатковий крок ви можете візуалізувати свої результати за допомогою Amazon QuickSight. Інструкції див Крок 5. Візуалізація вихідних даних Amazon Comprehend в Amazon QuickSight.

Ви можете використовувати новий візуальний тип хмари слів для сутностей замість карти дерева. У меню діаграми хмари слів виберіть Сховати «інші» категорії.

Тепер у вас є інформаційна панель із візуалізаціями настроїв і сутностей, схожа на наведений нижче знімок екрана.

Пошук і усунення несправностей

Якщо ваш запит невдалий, перевірте Amazon CloudWatch метрики та журнали, згенеровані функцією UDF Lambda.

  1. На консолі Lambda знайдіть textanalytics-udf функції.
  2. Вибирати Моніторинг.

Ви можете переглянути показники CloudWatch, які показують, як часто функція запускалася, як довго вона працює, як часто виникали збої тощо.

  1. Вибирати Перегляд журналів у CloudWatch щоб відкрити потоки журналу функцій для отримання додаткової інформації щодо усунення несправностей.

Щоб отримати додаткові відомості про перегляд метрик CloudWatch через Lambda, див Використання лямбда-консолі.

Додаткові випадки використання

Існує багато випадків використання функцій аналітики тексту SQL. Окрім прикладу, наведеного в цій публікації, зверніть увагу на таке:

  • Спростіть конвеєри ETL за допомогою інкрементних запитів SQL, щоб збагатити текстові дані настроями та об’єктами, наприклад потокові потоки соціальних мереж, отримані Amazon Kinesis Data Firehose
  • Використовуйте запити SQL, щоб досліджувати настрої та сутності в текстах служби підтримки клієнтів, електронних листах і зверненнях до служби підтримки
  • Підготуйте набори даних, готові для дослідження, видаливши ідентифікаційну інформацію зі взаємодії з клієнтом або пацієнтом
  • Стандартизуйте багато мов до однієї спільної мови

У вас можуть бути додаткові варіанти використання цих функцій або додаткові можливості, які ви хочете бачити, наприклад, такі:

  • Функції SQL для виклику настроюваних моделей розпізнавання сутностей і настроюваних моделей класифікації в Amazon Comprehend
  • Функції SQL для деідентифікації — розширення функцій редагування сутності та ідентифікаційної інформації для заміни сутностей альтернативними унікальними ідентифікаторами

Крім того, реалізація є відкритим вихідним кодом, що означає, що ви можете клонувати репо, змінювати та розширювати функції, як вважаєте за потрібне, і (сподіваємось) надсилати нам запити на отримання, щоб ми могли об’єднати ваші вдосконалення назад у проект і зробити його кращим для кожен.

Очищення

Після завершення цього посібника ви можете очистити всі ресурси AWS, які більше не хочете використовувати. Активні ресурси AWS можуть продовжувати стягуватися з вашого облікового запису.

  1. В Athena виконайте такий запит, щоб видалити базу даних і всі таблиці:
    DROP DATABASE comprehendresults CASCADE

  1. У AWS CloudFormation видаліть стек serverlessrepo-TextAnalyticsUDFHandler.
  2. Скасуйте підписку на QuickSight.

Висновок

Я показав вам, як інсталювати зразок текстової аналітики UDF Lambda для Athena, щоб ви могли використовувати прості SQL-запити для перекладу тексту за допомогою Amazon Translate, генерувати аналітику з тексту за допомогою Amazon Comprehend і редагувати конфіденційну інформацію. Сподіваюся, ви знайдете це корисним і поділіться прикладами того, як ви можете використовувати його, щоб спростити свою архітектуру та реалізувати нові можливості для свого бізнесу.

Будь ласка, поділіться з нами своїми думками в розділі коментарів або в розділі проблем проекту GitHub сховище.

Додаток: Доступна довідка про функції

У цьому розділі підсумовано надані на даний момент функції. The 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 DetectEntities 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 

Наступний код повертає об’єкт у форматі 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 редагувати всі типи.

Виявлення ідентифікаційної інформації

Ця функція використовує DetectPiiEntities 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 

Наведений нижче код повертає об’єкт у форматі 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_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 та цінності customTerminologyName).


Про автора

Боб СтраханБоб Страхан є головним архітектором рішень команди AI Services AI Services.

Джерело: https://aws.amazon.com/blogs/machine-learning/translate-and-analyze-text-using-sql-functions-with-amazon-athena-amazon-translate-and-amazon-comprehend/

Часова мітка:

Більше від Блог машинного навчання AWS