Logotipo de Zephyrnet

Traduzca y analice texto mediante funciones SQL con Amazon Athena, Amazon Translate y Amazon Comprehend

Fecha:

Tiene Servicio de almacenamiento simple de Amazon (Amazon S3) depósitos llenos de archivos que contienen chats de clientes entrantes, reseñas de productos y feeds de redes sociales, en muchos idiomas. Su tarea es identificar los productos de los que habla la gente, determinar si están expresando pensamientos felices o tristes, traducir sus comentarios a un solo lenguaje común y crear copias de los datos para sus analistas de negocios con esta nueva información agregada a cada registro. Además, debe eliminar cualquier información de identificación personal (PII), como nombres, direcciones y números de tarjetas de crédito.

Ya sabes como usar Atenea amazónica para transformar datos en Amazon S3 usando comandos SQL simples y las funciones integradas en Athena. Ahora también puedes usar Athena para traducir y analizar campos de texto, gracias a Traductor de Amazon, Amazon Comprehendy el poder de las funciones definidas por el usuario (UDF) de Athena.

Athena es un servicio de consulta interactivo que facilita el análisis de los datos almacenados en Amazon S3 mediante SQL. Amazon Comprehend es un servicio de procesamiento de lenguaje natural (NLP) que facilita la obtención de información valiosa a partir del texto. Amazon Translate es un servicio de traducción automática neuronal que ofrece una traducción de idiomas rápida, de alta calidad, asequible y personalizable. En esta publicación, te muestro cómo ahora puedes usarlos juntos para realizar las siguientes acciones:

  • Detecta el idioma dominante de un campo de texto
  • Detecta el sentimiento predominante expresado: positivo, negativo, ninguno o ambos
  • Detectar o redactar entidades (como elementos, lugares o cantidades)
  • Detectar o redactar PII
  • Traducir texto de un idioma a otro

Esta publicación logra los siguientes objetivos:

  • Mostrarle cómo configurar rápidamente las funciones de análisis de texto en su propia cuenta de AWS (¡es rápido y fácil!)
  • Explique brevemente cómo funcionan las funciones.
  • Discutir el desempeño y el costo
  • Proporcionar un tutorial donde hacemos algunos análisis de texto sobre las reseñas de productos de Amazon.
  • Describe todas las funciones disponibles

Incluimos una lista de todas las funciones disponibles al final del post; el siguiente código muestra algunos ejemplos de consultas y resultados:

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

Instalar la UDF de análisis de texto

Una UDF de Athena usa AWS Lambda para implementar la capacidad de la función. Discuto más detalles más adelante en esta publicación, pero no es necesario que comprenda el funcionamiento interno para usar la UDF de análisis de texto, así que comencemos.

Instale la función Lambda prediseñada con los siguientes pasos:

  1. Navegue hasta la Análisis de textoUDFHandler aplicación en el Repositorio de aplicaciones sin servidor de AWS.
  2. En el Configuración de la aplicación sección, mantenga la configuración en sus valores predeterminados.
  3. Seleccione Reconozco que esta aplicación crea roles de IAM personalizados.
  4. Elige Despliegue.

¡Y eso es! Ahora tiene una nueva función Lambda llamada textanalytics-udf. Está listo para probar algunas consultas de análisis de texto en Athena.

Si prefiere compilar e implementar desde el código fuente, consulte las instrucciones al final de la README del repositorio de GitHub.

Ejecute su primera consulta de análisis de texto

Si es nuevo en Athena, es posible que desee revisar el Cómo Empezar guía.

Al momento de escribir estas líneas, la función Athena UDF todavía está en versión preliminar. Para habilitarlo, cree un grupo de trabajo de Athena llamado AmazonAthenaPreviewFunctionality y ejecutar todas las consultas UDF de ese grupo de trabajo.

Ingrese la siguiente consulta en el editor 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

Obtienes un simple POSITIVE resultado. Ahora inténtelo de nuevo, variando el texto de entrada; pruebe con algo menos positivo para ver cómo cambia el valor de opinión devuelto.

Para obtener el sentimiento junto con las puntuaciones de confianza para cada valor de sentimiento potencial, utilice la siguiente consulta en su lugar:

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

Ahora obtienes una cadena JSON que contiene el sentimiento y todas las puntuaciones de sentimiento:

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

Puede utilizar el funciones de extracción JSON incorporadas en Athena sobre este resultado para extraer los campos para un análisis más detallado.

Cómo funciona la UDF

Para obtener más información sobre el marco de UDF de Athena, consulte Consulta con funciones definidas por el usuario.

La clase Java Análisis de textoUDFHandler implementa nuestro controlador de funciones UDF Lambda. Cada función de análisis de texto tiene un método público correspondiente en esta clase.

Athena invoca nuestra función UDF Lambda con lotes de registros de entrada. los TextAnalyticsUDFHandler subdivide estos lotes en lotes más pequeños de hasta 25 filas para aprovechar las API de lotes de múltiples documentos síncronos de Amazon Comprehend cuando estén disponibles (por ejemplo, para detectar idiomas, entidades y opiniones). Cuando no hay una API de múltiples documentos síncrona disponible (como para DetectPiiEntity y TranslateText), usamos la API de documento único.

API de Amazon Comprehend cuotas de servicio proporcione barandillas para limitar su exposición a los costos por un uso elevado no intencional (tratamos esto más en la siguiente sección) De forma predeterminada, las API por lotes de varios documentos procesan hasta 250 registros por segundo y las API de un solo documento procesan hasta 20 registros por segundo. Nuestras UDF utilizan un retroceso exponencial y vuelven a intentar reducir la tasa de solicitudes para mantenerse dentro de estos límites. Puede solicitar aumentos en la cuota de transacciones por segundo para las API utilizando el Plantilla de solicitud de cuota en Consola de administración de AWS.

Amazon Comprehend y Amazon Translate aplican cada uno una longitud máxima de cadena de entrada de 5,000 bytes utf-8. Los campos de texto que tienen más de 5,000 utf-8 bytes se truncan a 5,000 bytes para la detección de idiomas y sentimientos, y se dividen en los límites de las oraciones en múltiples bloques de texto de menos de 5,000 bytes para la traducción y la detección y redacción de entidades o PII. Luego se combinan los resultados.

Optimizando costos

Además de los costos de consulta de Athena, la UDF de análisis de texto incurre en costos de uso de Lambda y Amazon Comprehend y Amazon Translate. El monto que paga es un factor del número total de registros y caracteres que procesa con la UDF. Para más información, ver Precios de AWS Lambda, Precios de Amazon Comprehendy Precios de Amazon Translate.

Para minimizar los costos, le recomiendo que evite procesar los mismos registros varias veces. En su lugar, materialice los resultados de la UDF de análisis de texto mediante consultas CREATE TABLE AS SELECT (CTAS) para capturar los resultados en una tabla separada que luego puede consultar de manera rentable con la frecuencia que necesite sin incurrir en cargos adicionales de UDF. Procese los registros recién llegados de forma incremental mediante consultas INSERT IGNORE INTO…SELECT para analizar y enriquecer solo los nuevos registros y agregarlos a la tabla de destino.

Evite llamar innecesariamente a las funciones de análisis de texto en registros que posteriormente descartará. Escriba sus consultas para filtrar el conjunto de datos primero utilizando tablas temporales, vistas o consultas anidadas, y luego aplique las funciones de análisis de texto a los registros filtrados resultantes.

Siempre evalúe el costo potencial antes de ejecutar consultas de análisis de texto en tablas con una gran cantidad de registros.

En esta sección, proporcionamos dos evaluaciones de costos de ejemplo.

Ejemplo 1: analizar el idioma y el sentimiento de los tweets

Supongamos que tiene 10,000 registros de tweets, con una longitud promedio de 100 caracteres por tweet. Su consulta SQL detecta el idioma y el sentimiento dominantes para cada tweet. Estás en tu segundo año de servicio (el nivel gratuito ya no se aplica). Los detalles de los costos son los siguientes:

  • Tamaño de cada tweet = 100 caracteres
  • Número de unidades (100 caracteres) por registro (el mínimo es 3 unidades) = 3
  • Unidades totales: 10,000 (registros) x 3 (unidades por registro) x 2 (solicitudes de Amazon Comprehend por registro) = 60,000
  • Precio por unidad = $ 0.0001
  • Costo total de Amazon Comprehend = [número de unidades] x [costo por unidad] = 60,000 0.0001 x 6.00 USD = XNUMX USD 

Ejemplo 2: traducir tweets

Supongamos que 2,000 de sus tweets no están en su idioma local, por lo que ejecuta una segunda consulta SQL para traducirlos. Los detalles de los costos son los siguientes:

  • Tamaño de cada tweet = 100 caracteres
  • Caracteres totales: 2,000 (registros) * 100 (caracteres por registro) x 1 (solicitudes de traducción por registro) = 200,000
  • Precio por personaje = $ 0.000015
  • Costo total de Amazon Translate = [número de caracteres] x [costo por carácter] = 200,000 x 0.000015 $ = 3.00 $

Analice la información de las opiniones de los clientes

Es hora de poner en práctica nuestras nuevas consultas de análisis de texto.

Para obtener un tutorial sobre cómo obtener información útil a partir de las opiniones de los clientes, consulte Tutorial: análisis de información valiosa a partir de reseñas de clientes con Amazon Comprehend. Esta publicación proporciona un enfoque alternativo para el mismo desafío: el uso de consultas SQL impulsadas por Athena y Amazon Comprehend.

El tutorial tarda aproximadamente 10 minutos en completarse y cuesta hasta $ 6 para Amazon Comprehend; no hay ningún costo si es elegible para la capa gratuita.

Crea una nueva base de datos en Athena

Ejecute la siguiente consulta en el editor de consultas de Athena:

CREATE DATABASE IF NOT EXISTS comprehendresults;

Al conectar su fuente de datos, elija su nueva base de datos.

Cree una tabla de origen que contenga datos de revisión de clientes

Usamos la Conjunto de datos de reseñas de clientes de Amazon, convenientemente alojado para acceso público en Amazon S3.

  1. Ejecute la siguiente consulta en el editor de consultas de 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. under Mesas, busque la nueva tabla amazon billion_parquet.
  2. En el menú de opciones, elija Cargar particiones.
  1. Vista previa de la nueva tabla, amazon_reviews_parquet.
  1. Ejecute la siguiente consulta para evaluar la duración promedio de la revisión:
    SELECT AVG(LENGTH(review_body)) AS average_review_length FROM amazon_reviews_parquet

La longitud media de la reseña es de unos 365 caracteres. Esto equivale a 4 unidades de Amazon Comprehend por registro (1 unidad = 100 caracteres).

Detecta el idioma de cada reseña

Para detectar el idioma de cada reseña, ejecute la siguiente consulta en el editor de consultas de Athena; se tarda poco más de 1 minuto en ejecutarse y cuesta $ 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

Esta consulta crea una nueva tabla, amazon_reviews_with_language, con una nueva columna agregada: language. La cláusula LIMIT limita el número de registros a 5,000.

El costo se calcula como: 5,000 (registros) x 4 (unidades por registro) x 1 (solicitudes por registro) x $ 0.0001 (precio de Amazon Comprehend por unidad) = $ 2. 

Ejecute la siguiente consulta para ver los códigos de idioma detectados, con el recuento correspondiente de revisiones para cada idioma:

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

Detecte opiniones y entidades para cada reseña

Para detectar opiniones, ejecute la siguiente consulta en el editor de consultas de Athena: utiliza dos funciones de análisis de texto, tarda alrededor de 1 minuto en ejecutarse y cuesta $ 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')

Esta consulta crea una nueva tabla, amazon_reviews_with_text_analysis, con dos columnas adicionales agregadas: sentiment y entities. La cláusula WHERE restringe el conjunto de resultados a la lista de idiomas admitidos por Amazon Comprehend sentimiento y detección de entidades.

El costo se calcula como: 5,000 (registros) x 4 (unidades por registro) x 2 (solicitudes por registro) x $ 0.0001 (precio de Amazon Comprehend por unidad) = $ 4.

Obtenga una vista previa de la nueva tabla e inspeccione algunos de los valores de la nueva sentiment y entities columnas. Contienen cadenas JSON con estructuras y campos anidados.

La siguiente captura de pantalla muestra el sentiment detalles de la columna.

La siguiente captura de pantalla muestra los detalles de la columna de entidades.

A continuación, usamos las funciones JSON en Athena para preparar estas columnas para el análisis.

Prepare el sentimiento para el análisis

Ejecute la siguiente consulta SQL para crear una nueva tabla que contenga opiniones y puntuaciones de opiniones expandidas en columnas separadas:

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

Vista previa del nuevo sentiment_results_final tabla (vea la siguiente captura de pantalla). ¿El sentimiento generalmente se alinea con el texto del review_body ¿campo? ¿Cómo se correlaciona con la star_rating? Si detecta alguna asignación de sentimiento dudoso, verifique las puntuaciones de confianza para ver si el sentimiento se asignó con un nivel de confianza bajo.

Preparar entidades para análisis

Ejecute la siguiente consulta SQL para crear una nueva tabla que contenga las entidades detectadas no anidadas en filas separadas (subconsulta interna), con cada campo en una columna separada (consulta externa):

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

Obtenga una vista previa del contenido de la nueva tabla, entities_results_final (ver la siguiente captura de pantalla).

Visualizar en Amazon QuickSight (opcional)

Como paso opcional, puede visualizar sus resultados con Amazon QuickSight. Para instrucciones, vea Paso 5: Visualización de la salida de Amazon Comprehend en Amazon QuickSight.

Puede usar el nuevo tipo visual de nube de palabras para entidades, en lugar del mapa de árbol. En el menú del gráfico de nube de palabras, seleccione Ocultar "otras" categorías.

Ahora tiene un panel con visualizaciones de sentimientos y entidades que se parece a la siguiente captura de pantalla.

Solucionando Problemas

Si su consulta falla, marque la Reloj en la nube de Amazon métricas y registros generados por la función UDF Lambda.

  1. En la consola Lambda, busque el textanalytics-udf función.
  2. Elige Monitoreo.

Puede ver las métricas de CloudWatch que muestran la frecuencia con la que se ejecutó la función, cuánto tiempo se ejecuta, con qué frecuencia falló y más.

  1. Elige Ver registros en CloudWatch para abrir los flujos de registro de funciones para obtener información adicional sobre la solución de problemas.

Para obtener más información sobre cómo ver las métricas de CloudWatch a través de Lambda, consulte Usando la consola Lambda.

Casos de uso adicionales

Hay muchos casos de uso para las funciones de análisis de texto SQL. Además del ejemplo que se muestra en esta publicación, considere lo siguiente:

  • Simplifique las canalizaciones ETL mediante el uso de consultas SQL incrementales para enriquecer los datos de texto con sentimientos y entidades, como la transmisión de transmisiones de redes sociales ingeridas por Manguera de bomberos de datos de Amazon Kinesis
  • Utilice consultas SQL para explorar opiniones y entidades en sus textos de atención al cliente, correos electrónicos y casos de soporte
  • Prepare conjuntos de datos listos para la investigación mediante la redacción de la PII de las interacciones del cliente o del paciente
  • Estandarizar muchos idiomas en un solo idioma común

Es posible que tenga casos de uso adicionales para estas funciones o capacidades adicionales que desee que se agreguen, como las siguientes:

  • Funciones SQL para llamar al reconocimiento de entidades personalizado y modelos de clasificación personalizados en Amazon Comprehend
  • Funciones SQL para la desidentificación: extensión de las funciones de redacción de entidades y PII para reemplazar entidades con identificadores únicos alternativos

Además, la implementación es de código abierto, lo que significa que puede clonar el repositorio, modificar y ampliar las funciones como mejor le parezca y (con suerte) enviarnos solicitudes de extracción para que podamos fusionar sus mejoras en el proyecto y mejorarlo para todos.

Limpiar

Después de completar este tutorial, es posible que desee limpiar los recursos de AWS que ya no desee utilizar. Los recursos activos de AWS pueden seguir generando cargos en su cuenta.

  1. En Athena, ejecute la siguiente consulta para eliminar la base de datos y todas las tablas:
    DROP DATABASE comprehendresults CASCADE

  1. En AWS CloudFormation, elimine la pila serverlessrepo-TextAnalyticsUDFHandler.
  2. Cancele su suscripción a QuickSight.

Conclusión

Le he mostrado cómo instalar la función de análisis de texto de muestra UDF Lambda para Athena, de modo que pueda usar consultas SQL simples para traducir texto con Amazon Translate, generar información a partir de texto con Amazon Comprehend y redactar información confidencial. Espero que le resulte útil y comparta ejemplos de cómo puede usarlo para simplificar sus arquitecturas e implementar nuevas capacidades para su negocio.

Comparta sus pensamientos con nosotros en la sección de comentarios o en la sección de problemas del proyecto. Repositorio GitHub.

Apéndice: referencia de funciones disponibles

Esta sección resume las funciones que se ofrecen actualmente. los README El archivo proporciona detalles adicionales.

detectar idioma

Esta función utiliza Amazon Comprehend BatchDetectDominantLanguage API para identificar el idioma dominante en función de los primeros 5,000 bytes de texto de entrada.

El siguiente código devuelve un código de idioma, como fr para francés o en para inglés:

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

El siguiente código devuelve una matriz de códigos de idioma con formato JSON y las puntuaciones de confianza correspondientes:

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

Detectar sentimiento

Esta función utiliza Amazon Comprehend BatchDetectSentimento API para identificar el sentimiento basado en los primeros 5,000 bytes de texto de entrada.

El siguiente código devuelve un sentimiento como POSITIVO, NEGATIVO, NEUTRO o MIXTO:

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

El siguiente código devuelve un objeto con formato JSON que contiene puntuaciones de confianza y sentimiento detectados para cada valor de sentimiento:

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

Detectar entidades

Esta función utiliza Amazon Comprehend Detectar entidades API para identificar PII. La entrada de texto de más de 5,000 bytes da como resultado varias llamadas a la API de Amazon Comprehend.

El siguiente código devuelve un objeto con formato JSON que contiene una matriz de tipos de entidad y valores:

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

El siguiente código devuelve un objeto con formato JSON que contiene una matriz de tipos de entidad PII, con sus valores, puntuaciones y compensaciones de caracteres:

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

Redactar entidades

Esta función reemplaza los valores de entidad para los tipos de entidad especificados con "[ENTITY_TYPE]”. La entrada de texto de más de 5,000 bytes da como resultado varias llamadas a la API de Amazon Comprehend. Vea el siguiente código:

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

El comando devuelve una versión redactada en la cadena de entrada. Especifique uno o más tipos de entidad para redactar proporcionando una lista separada por comas de types en el parámetro de cadena de tipos, o ALL para redactar todo tipo.

Detectar PII

Esta función utiliza la Detectar entidades Pii API para identificar PII. La entrada de texto de más de 5,000 bytes da como resultado varias llamadas a la API de Amazon Comprehend.

El siguiente código devuelve un objeto con formato JSON que contiene una matriz de Tipos de entidad de PII y valores:

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

El siguiente código devuelve un objeto con formato JSON que contiene una matriz de tipos de entidad PII, con sus puntuaciones y compensaciones de caracteres:

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

Redactar PII

Esta función reemplaza los valores de PII para los tipos de entidad de PII especificados con "[PII_ENTITY_TYPE]”. La entrada de texto de más de 5,000 bytes da como resultado varias llamadas a la API de Amazon Comprehend. Vea el siguiente código:

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

La función devuelve una versión redactada en la cadena de entrada. Especifique uno o más Tipos de entidad de PII para redactar proporcionando una lista separada por comas de tipos válidos en el type parámetro de cadena, o ALL para redactar todo tipo.

Traducir texto

Esta función traduce el texto del idioma de origen al idioma de destino. La entrada de texto de más de 5,000 bytes da como resultado varias llamadas a la API de Amazon Translate. Vea el siguiente código:

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

La función devuelve la cadena traducida. Opcionalmente, detecte automáticamente el idioma de origen (use auto como código de idioma, que usa Amazon Comprehend) y, opcionalmente, especifique un terminología personalizada (de lo contrario use NULL para customTerminologyName).


Sobre la autora

Bob StrahanBob Strahan es arquitecto principal de soluciones en el equipo de AWS Language AI Services.

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

punto_img

Información más reciente

punto_img

Habla con nosotros!

¡Hola! ¿Le puedo ayudar en algo?