Análisis de fuentes de noticias con análisis casi en tiempo real mediante el procesamiento de imágenes y lenguaje natural

Azure Cosmos DB
Azure Functions
Azure Service Bus
Azure Translator Text
Azure Face

En este escenario de ejemplo se describe una canalización para la ingesta masiva y el análisis casi en tiempo real de documentos que proceden de fuentes de noticias RSS públicas. Se usa Azure Cognitive Services para proporcionar información útil basada en la traducción de texto, el reconocimiento facial y la detección de opiniones. Específicamente, los pasos de procesamiento de imágenes y lenguaje natural se conectan juntos en una canalización de mensajería basada en Azure Service Bus. La salida de la canalización es una notificación que contiene la información o el análisis.

Architecture

Diagrama de arquitectura: ingesta y análisis de fuentes RSS mediante el procesamiento de imágenes y texto y el envío de notificaciones.Descarga un archivo Visio de esta arquitectura.

Flujo de datos

Los datos fluyen por la solución de la siguiente manera:

  1. Una fuente de noticias RSS actúa como generador que obtiene los datos de un documento o un artículo. Por ejemplo, con un artículo, los datos suelen incluir un título, un resumen del cuerpo original del elemento de noticias y, a veces, imágenes.

  2. Un generador o proceso de ingesta inserta el artículo y las imágenes asociadas en una colección de Azure Cosmos DB.

  3. Una notificación desencadena una función de ingesta en Azure Functions que almacena el texto del artículo en Azure Cosmos DB y las imágenes del artículo (si existen) en Azure Blob Storage. A continuación, el artículo se pasa a la siguiente cola.

  4. El evento de la cola desencadena una función de traducción. Usa la API Traducir texto de Azure Cognitive Services para detectar el idioma, traducirlo si es necesario y recopilar la opinión, las frases clave y las entidades del cuerpo y del título. A continuación, pasa el artículo a la siguiente cola.

  5. Una función de detección se desencadena desde el artículo en cola. Usa el servicio Computer Vision para detectar objetos, puntos de referencia y palabras escritas en la imagen asociada y, a continuación, pasa el artículo a la siguiente cola.

  6. Se desencadena una función de detección de caras desde el artículo en cola. Usa el servicio de la API de Azure Face para detectar rostros por sexo y edad en la imagen asociada y luego pasa el artículo a la siguiente cola.

  7. Cuando se completan todas las funciones, se desencadena la función de notificación. Carga los registros procesados para el artículo y los examina para detectar los resultados que desee. Si se encuentra contenido, este se marca y se envía una notificación al sistema de su elección.

En cada paso de procesamiento, la función escribe los resultados en Azure Cosmos DB. En última instancia, los datos se pueden usar como se desee. Por ejemplo, puede utilizarlos para mejorar los procesos empresariales, buscar nuevos clientes o identificar problemas de satisfacción de los clientes.

Componentes

En este ejemplo se usa la siguiente lista de componentes de Azure.

  • Azure Storage se usa para contener archivos de imagen y vídeo sin procesar asociados a un artículo. Se crea una cuenta de almacenamiento secundaria con Azure App Service y se usa para hospedar el código y los registros de Azure Functions.

  • Azure Cosmos DB contiene información sobre el seguimiento de texto, imágenes y vídeos del artículo. Los resultados de los pasos de Cognitive Services también se almacenan aquí.

  • Azure Functions ejecuta el código de las funciones que se utiliza para responder a los mensajes en cola y a transformar el contenido entrante. Azure App Service hospeda el código de las funciones y procesa los registros en serie. Este escenario incluye cinco funciones: ingerir, transformar, detectar objeto, detectar cara y notificar.

  • Azure Service Bus hospeda las colas de Azure Service Bus usadas por las funciones.

  • Azure Cognitive Services ofrece la inteligencia artificial para la canalización en función de las implementaciones del servicio Computer Vision, Face API y el servicio de traducción automática Traducir texto.

  • Azure Application Insights proporciona análisis para ayudarle a diagnosticar problemas y a comprender la funcionalidad de la aplicación.

Alternativas

  • En lugar de usar un patrón basado en la notificación de la cola y Azure Functions, puede usar un patrón de tema y suscripción para este flujo de datos. Se pueden usar temas de Azure Service Bus para procesar las distintas partes del artículo en paralelo, en lugar del procesamiento en serie que se realiza en este ejemplo. Para obtener más información, compare colas y temas.

  • Use Azure Logic Apps para implementar el código de las funciones e implementar el bloqueo de nivel de registro, como el que proporciona el algoritmo Redlock (necesario para el procesamiento en paralelo hasta que Azure Cosmos DB admita actualizaciones parciales de documentos). Para obtener más información, compare Functions y Logic Apps.

  • Implemente esta arquitectura mediante componentes de IA personalizados en lugar de los servicios de Azure existentes. Por ejemplo, extienda la canalización mediante un modelo personalizado que detecte a ciertas personas en una imagen en lugar de los datos del número de personas genéricas, el sexo y la edad recopilados en este ejemplo. Para usar los modelos personalizados de inteligencia artificial o aprendizaje automático con esta arquitectura, cree los modelos como puntos de conexión RESTful para que se puedan llamar desde Azure Functions.

  • Use un mecanismo de entrada diferente en lugar de fuentes RSS. Use varios generadores o procesos de ingesta para alimentar Azure Cosmos DB y Azure Storage.

  • Azure Cognitive Search es una característica de inteligencia artificial de Azure Search que también se puede utilizar para extraer texto de imágenes, blobs y otros orígenes de datos no estructurados.

Detalles del escenario

Este escenario contiene ejemplos de fuentes de noticias en inglés, ruso y alemán, pero se puede ampliar fácilmente a otras fuentes RSS y otros idiomas. La recopilación, el procesamiento y el análisis de datos se basan completamente en los servicios de Azure con el fin de facilitar la implementación.

Posibles casos de uso

Aunque este escenario se basa en el procesamiento de fuentes RSS, es pertinente para cualquier documento, sitio web o artículo en el que necesite:

  • Traducir texto al idioma que desee.
  • Buscar frases clave, entidades y opiniones de usuarios en el contenido digital.
  • Detectar objetos, texto y puntos de referencia en imágenes asociadas a un artículo digital.
  • Detectar personas por su sexo y edad en imágenes asociadas al contenido digital.

Consideraciones

Estas consideraciones implementan los pilares del marco de buena arquitectura de Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad de una carga de trabajo. Para más información, consulte Marco de buena arquitectura de Microsoft Azure.

Para simplificar, en este escenario de ejemplo solo se usan algunas de las API y servicios disponibles de Azure Cognitive Services. Por ejemplo, el texto de las imágenes se puede analizar mediante la API Text Analytics. Se supone que el idioma de destino de este escenario es el inglés, pero puede cambiar la entrada a cualquier idioma admitido.

Escalabilidad

El escalado de Azure Functions depende del plan de hospedaje que use. Esta solución presupone un Plan de consumo, en el que la potencia de proceso se asigna automáticamente a las funciones cuando es necesario. Paga solo cuando se ejecutan las funciones. Otra opción es usar un plan dedicado, que le permite escalar entre niveles para asignar una cantidad de recursos diferente.

Con Azure Cosmos DB, la clave es distribuir la carga de trabajo de manera más o menos uniforme entre una cantidad suficientemente grande de claves partición. No existe ningún límite en la cantidad total de datos que un contenedor puede almacenar ni en la cantidad total de rendimiento que puede admitir un contenedor.

Administración y registro

Esta solución utiliza Application Insights para recopilar información de rendimiento y registro. Se crea una instancia de Application Insights con la implementación en el mismo grupo de recursos que los demás servicios necesarios para esta implementación.

Para ver los registros generados por la solución:

  1. Vaya a Azure Portal y navegue hasta el grupo de recursos creado para la implementación.

  2. Seleccione la instancia de Application Insights.

  3. En la sección Application Insights, vaya a Investigar\Buscar y busque los datos.

Seguridad

La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

Azure Cosmos DB usa una conexión segura y una firma de acceso compartido a través del SDK de C# proporcionado por Microsoft. No hay otras áreas expuestas orientadas al exterior. Más información sobre los procedimientos recomendados de seguridad para Azure Cosmos DB.

Optimización de costos

La optimización de costos trata de buscar formas de reducir los gastos innecesarios y mejorar las eficiencias operativas. Para más información, vea Información general del pilar de optimización de costos.

Azure Cosmos DB es eficaz, pero supone el mayor costo en esta implementación. Puede usar otra solución de almacenamiento mediante la refactorización del código de Azure Functions proporcionado.

Los precios de Azure Functions varían en función del plan en el que se ejecute.

Implementación de este escenario

Nota

Debe tener una cuenta de Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Todo el código para este escenario está disponible en el repositorio de GitHub. Este repositorio contiene el código fuente que se usa para compilar la aplicación de generador que alimenta la canalización para esta demostración.

Pasos siguientes

Arquitecturas de análisis adicionales: