Procesamiento de lenguaje natural con Amazon Comprehend - Análisis de sentimiento y extracción de entidades

Explicamos el análisis de sentimiento, la extracción de entidades y la construcción de modelos de clasificación personalizados con Comprehend.

Descripción general de Comprehend

Comprehend es un servicio que proporciona APIs de procesamiento de lenguaje natural (NLP) compatibles con más de 25 idiomas. Al ingresar texto, devuelve resultados de análisis de sentimiento, extracción de entidades, extracción de frases clave, detección de idioma y análisis sintáctico. Puede incorporar funciones de NLP en aplicaciones sin conocimientos especializados en ML. También se adapta a la clasificación de texto específica de la industria con modelos de clasificación personalizados y reconocimiento de entidades personalizadas. Internamente, los modelos preentrenados con aprendizaje por transferencia permiten construir modelos personalizados incluso con pequeñas cantidades de datos etiquetados, lo que representa una ventaja significativa frente a construir un pipeline de ML propio desde cero.

Análisis de sentimiento y modelos personalizados

La API de análisis de sentimiento clasifica el sentimiento del texto en 4 categorías (Positive, Negative, Neutral, Mixed) y devuelve puntuaciones de confianza para cada categoría. Se puede utilizar para análisis de reseñas de sitios de comercio electrónico y análisis de texto de llamadas de centros de contacto. La clasificación personalizada construye modelos que clasifican texto en categorías específicas de la industria preparando datos de entrenamiento etiquetados. Soporta tanto clasificación multiclase (una etiqueta por documento) como clasificación multietiqueta (múltiples etiquetas por documento), aceptando datos de entrenamiento en formato CSV o manifiesto aumentado. Se recomiendan mínimo 50 documentos por clase para el entrenamiento, siendo más de 1000 documentos efectivos para mejorar la precisión. La detección de PII ayuda con el cumplimiento de GDPR y leyes de protección de datos personales, detectando automáticamente información personal en texto y proporcionando funciones de enmascaramiento. Para aprender sobre procesamiento de lenguaje natural y aprendizaje automático, consulte libros en Amazon.

Detección de PII y análisis en tiempo real

La API de detección de PII de Comprehend detecta automáticamente información personal en texto (nombres, direcciones, números de teléfono, direcciones de correo electrónico, números de tarjetas de crédito, números de seguro social) y devuelve información de ubicación y puntuaciones de confianza. La API ContainsPiiEntities determina la presencia de PII, y la API DetectPiiEntities identifica ubicaciones específicas. Al crear un endpoint de análisis en tiempo real, puede mantener modelos de clasificación personalizados o modelos de reconocimiento de entidades personalizadas ejecutándose continuamente, proporcionando resultados de inferencia inmediatos a través de llamadas API. Los trabajos por lotes asíncronos procesan grandes volúmenes de documentos en S3 y envían los resultados a S3. Comprehend Medical se especializa en texto médico, extrayendo nombres de medicamentos, enfermedades y procedimientos.

Mejores prácticas de diseño y errores comunes

Al integrar Comprehend en producción, hay varias consideraciones de diseño importantes. Primero, respecto a los límites de throttling de API, las APIs síncronas tienen un límite predeterminado de 10-20 solicitudes por segundo por cuenta, por lo que manejar alto tráfico requiere cambiar a procesamiento por lotes o solicitar aumentos de cuota a través de Service Quotas. Segundo, el tamaño del texto por solicitud está limitado a un máximo de 5000 bytes (UTF-8) para APIs síncronas, haciendo obligatoria la división en fragmentos para documentos largos. Dividir en los límites de las oraciones ayuda a prevenir la degradación de la precisión de las puntuaciones de sentimiento. Para la operación de modelos personalizados, se recomienda el reentrenamiento continuo usando Flywheel. Flywheel monitorea automáticamente el rendimiento del modelo y ejecuta reentrenamiento con nuevos datos cuando la precisión disminuye. Además, dado que los endpoints en tiempo real se facturan continuamente por unidad de inferencia, una arquitectura basada en Lambda que llame a la API síncrona es más rentable cuando la frecuencia de solicitudes es baja.

Comparación con otros servicios

Además de Comprehend, las opciones de implementación de NLP incluyen construir modelos personalizados con SageMaker y usar modelos de lenguaje grande (LLMs) a través de Bedrock. Comprehend es óptimo para tareas estándar como análisis de sentimiento y extracción de entidades como una API de NLP preconstruida que puede usarse inmediatamente. SageMaker ofrece alta flexibilidad para fine-tuning de modelos Hugging Face Transformers, pero requiere gestionar la infraestructura de entrenamiento y el hosting de modelos. Los LLMs de Bedrock permiten clasificación zero-shot solo con prompts, pero el costo por token es más alto que el precio por carácter de Comprehend, haciéndolo inadecuado para análisis por lotes de grandes volúmenes de texto. Como guía de decisión: Comprehend para tareas NLP estándar que requieren alto rendimiento, SageMaker cuando se necesitan funciones de pérdida o arquitecturas personalizadas, y Bedrock para tareas de clasificación flexibles de bajo volumen. Comparado con Google Cloud Natural Language API y Azure Text Analytics, la integración más fluida de Comprehend con el ecosistema AWS (S3, Lambda, Kinesis) y el control de acceso granular vía IAM son sus diferenciadores clave.

Estructura de precios de Comprehend

Los precios de Comprehend se cobran por el número de caracteres de las llamadas API. El análisis de sentimiento, extracción de entidades y extracción de frases clave se cobran por unidades de 100 caracteres (mínimo 300 caracteres), a aproximadamente 1 USD por cada 100,000 unidades. El entrenamiento de modelos personalizados cuesta aproximadamente 3 USD por hora, y los endpoints en tiempo real cuestan aproximadamente 0.50 USD/hora por unidad de inferencia. El procesamiento por lotes tiene un precio unitario más bajo que la API en tiempo real, siendo adecuado para el análisis de grandes volúmenes de documentos. Los endpoints en tiempo real generan cargos continuos, por lo que eliminar endpoints durante períodos de bajo tráfico y cambiar a trabajos asíncronos reduce costos. Comprehend Flywheel automatiza la mejora continua del modelo, reduciendo la carga operativa del reentrenamiento.

Resumen

Comprehend es un servicio que proporciona funciones de NLP como análisis de sentimiento, extracción de entidades y detección de PII a través de API. Se adapta a la clasificación de texto específica de la industria con modelos de clasificación personalizados, y procesa diversas cargas de trabajo de análisis con procesamiento por lotes y endpoints en tiempo real. También soporta la extracción de nombres de medicamentos y enfermedades de texto médico con Comprehend Medical.