Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Azure AI Natural Language Understanding: del texto a insights accionables

By David SpenardFeb 6, 202511 min read

Esta página también está disponible en English, Deutsch, Français, Italiano, 日本語 y Português.

Foto de Elnur en Shutterstock

Introducción

No hay duda de que la IA está transformando la forma en que se desarrollan las aplicaciones y cómo operan las empresas hoy. Mientras las organizaciones compiten por aprovechar las capacidades de IA, Microsoft Azure se ha consolidado como una plataforma potente que democratiza el acceso a servicios avanzados de IA. Con Azure AI Services (antes Cognitive Services), los desarrolladores pueden incorporar funciones sofisticadas de IA —como comprensión del lenguaje natural o reconocimiento de imágenes— sin necesidad de un conocimiento profundo en machine learning ni de grandes recursos de cómputo.

Azure AI Services trae consigo numerosas capacidades de IA. Este artículo muestra una forma de integrar IA en tus aplicaciones para extraer información, clasificar texto, comprender lenguaje conversacional, responder preguntas y mucho más, usando Azure AI Language Service.

Requisitos previos

  1. Cuenta de Azure, disponible gratis durante 30 días si aún no tienes una.
  2. Conocimiento básico de Azure y manejo del portal de Azure.
  3. Para ejecutar el código de ejemplo en Python, se recomienda manejar lo básico de Python y pip, además de tener acceso a Github para descargar el código de ejemplo.
  4. También viene bien algo de experiencia con Docker y la contenerización de aplicaciones.

Pasos generales

  1. Confirmar permisos y acceso a Azure AI Services.
  2. Crear un endpoint gestionado para el Language Service.
  3. Probar la API con los ejemplos de código en Python.
  4. De forma opcional, probar la API alojada localmente en Docker.
  5. Limpiar los recursos.

Recorrido paso a paso

Paso 1: Configuración inicial para confirmar el acceso a AI Services

Abre el portal de Azure en https://portal.azure.com, ve a Microsoft Entra ID (antes Azure Active Directory), busca tu cuenta de usuario y selecciónala; luego elige Azure role assignment. Lo más simple para este ejercicio es asignar el rol Owner o Contributor a nivel de Subscription o Resource Group, para garantizar el acceso adecuado a los recursos de Azure que se van a crear. En mi caso, creé un Resource Group y le asigné a mi usuario el rol Owner sobre ese Resource Group.

Las asignaciones de roles en Azure se explican aquí y, si todavía no tienes un Resource Group, encontrarás una explicación completa de su uso aquí.

Asignaciones de roles de Azure para un usuario específico

En el portal de Azure, ve a Subscriptions y selecciona Resource Providers. Busca Microsoft.CognitiveServices y haz clic en Register si el recurso aún no está registrado.

Este proceso se explica en detalle aquí, en la documentación de Azure Resource Manager.

Resource Providers

Paso 2: Crear un endpoint gestionado para el Language Service

Azure AI Services son servicios gestionados que exponen una API para facilitar su consumo. Existe una opción llamada Azure AI service multi-service account, que da acceso a varios servicios de IA desde un único endpoint, pero requiere despliegue en contenedor para exponer la API. Por eso, en este ejemplo se utiliza el Language Service gestionado: es un recurso dedicado exclusivamente a funciones de lenguaje y resulta más sencillo de configurar.

En el portal de Azure, ve a Azure AI Services, elige Language Service y selecciona Create Language.

El servicio Azure AI para Language incluye varias capacidades preconstruidas, como análisis de sentimiento, extracción de frases clave y otras, suficientes para este ejercicio. Selecciona Continue to create your resource.

Crear el recurso de Language Service

Recorre las páginas del asistente y completa los siguientes campos:

  • Subscription: por defecto, tu suscripción actual.
  • Resource Group: usa uno existente o crea uno para este ejercicio.
  • Region: por defecto, East US.
  • Name: elige un nombre único para el dominio de tu Language Service.
  • Pricing tier: elige el tier gratuito si está disponible.
  • Marca la casilla sobre el uso responsable de la IA.
  • Network: elige todas las redes, salvo que prefieras restringir el acceso a una red específica, un rango de IPs o un endpoint privado. Para este ejemplo elegí acceso público por comodidad, pero no se recomienda para uso a largo plazo.

Me topé con algunos bugs del portal de Azure en los que los mensajes de error no reflejaban la realidad, así que si te pasa lo mismo, asegúrate de haber seguido el paso 1 anterior para confirmar el acceso a AI Services antes de dar por sentado que es un mensaje falso.

En la última página del asistente, revisa la configuración y selecciona Create para crear el recurso.

Pantalla de confirmación de creación del Language Service

El despliegue debería tardar unos minutos; al terminar, selecciona Go to resource para ver su configuración. Allí puedes explorar más a fondo las capacidades del Language Service y sus opciones. Selecciona Keys and Endpoint para obtener los dos datos que necesitas para acceder a la API en el paso 3.

Ten en cuenta que se ofrecen dos llaves para facilitar la rotación cuando haga falta, aunque cualquiera de ellas sirve para acceder a la API. Las mejores prácticas para gestión de secretos en Azure están aquí.

Llave y endpoint del Language Service

Paso 3: Probar la API con los ejemplos de código en Python

Si ya tienes Python y pip instalados localmente, y acceso a Github (como se indica en la sección de Requisitos previos), puedes usar el código de ejemplo de este repositorio, ya sea descargando el zip o clonándolo.

git clone https://github.com/doitintl/azure-ai-services-demo.git

Una vez que tengas el código en tu máquina, modifica el archivo .env para indicar tu llave de API y el endpoint del paso 3. Al momento de escribir este artículo, la versión vigente de text analytics era la 3.1, así que consulta la referencia de la API REST de Language si surge algún problema con esa versión.

COGNITIVE_SERVICES_ENDPOINT=<your endpoint>
COGNITIVE_SERVICES_KEY=<your api key>
SENTIMENT_ANALYSIS_PATH=/text/analytics/v3.1/sentiment?
KEY_PHRASE_EXTRACTION_PATH=/text/analytics/v3.1/keyPhrases
LANGUAGE_DETECTION_PATH=/text/analytics/v3.1/languages?

Hay una dependencia que debes instalar antes de ejecutar el código. Si tienes inconvenientes para instalar esta librería o ejecutar alguno de los archivos de Python, puedes usar un entorno virtual de Python para correr los ejemplos desde cero. Los entornos virtuales se explican aquí y solo requieren unos pocos pasos para configurarse.

pip install python-dotenv

Hay tres archivos de Python disponibles para probar algunas de las capacidades del Language Service: análisis de sentimiento, extracción de frases clave y detección de idioma. Usa solo uno de estos comandos para ejecutar el archivo correspondiente.

python sentiment_analysis.py
python key_phrase_extraction.py
python language_detection.py

En la línea de comandos, ingresa el texto que quieras analizar, como se muestra a continuación para la extracción de frases clave.

david@Mac azure-ai-services-demo % python key_phrase_extraction.py
Enter some text to extract its key phrases. Enter q to quit.

Language detection is one of the features offered by Azure AI Language,
a collection of machine learning and AI algorithms in the cloud for
developing intelligent applications that involve written language.
Language detection is able to detect more than 100 languages in their
primary script.

Request:
 {
  "documents": [\
    {\
      "id": 1,\
      "text": "Language detection is one of the features offered by\
Azure AI Language, a collection of machine learning and AI algorithms\
in the cloud for developing intelligent applications that involve written\
language. Language detection is able to detect more than 100 languages\
in their primary script."\
    }\
  ]
}

Response:
 {
  "documents": [\
    {\
      "id": "1",\
      "keyPhrases": [\
        "Azure AI Language",\
        "AI algorithms",\
        "Language detection",\
        "written language",\
        "machine learning",\
        "intelligent applications",\
        "primary script",\
        "features",\
        "collection",\
        "cloud",\
        "100 languages"\
      ],\
      "warnings": []\
    }\
  ],
  "errors": [],
  "modelVersion": "2022-10-01"
}

Key Phrases:
- Azure AI Language
- AI algorithms
- Language detection
- written language
- machine learning
- intelligent applications
- primary script
- features
- collection
- cloud
- 100 languages

Si quieres probar la API con un comando CURL, este es un ejemplo de análisis de sentimiento. Solo reemplaza my-endpoint y my-key en el comando.

curl -X POST "https://my-endpoint/text/analytics/v3.1/sentiment" \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: my-key" \
-d "{\"documents\":[{\"id\":\"1\",\"text\":\"The performance was amazing! The sound could have been clearer.\"},{\"id\":\"2\",\"text\":\"The food and service were unacceptable. While the host was nice, the waiter was rude and food was cold.\"}]}"
{
    "documents": [\
        {\
            "id": "1",\
            "sentiment": "mixed",\
            "confidenceScores": {\
                "positive": 0.5,\
                "neutral": 0.09,\
                "negative": 0.41\
            },\
            "sentences": [\
                {\
                    "sentiment": "positive",\
                    "confidenceScores": {\
                        "positive": 1.0,\
                        "neutral": 0.0,\
                        "negative": 0.0\
                    },\
                    "offset": 0,\
                    "length": 29,\
                    "text": "The performance was amazing! "\
                },\
                {\
                    "sentiment": "negative",\
                    "confidenceScores": {\
                        "positive": 0.0,\
                        "neutral": 0.17,\
                        "negative": 0.82\
                    },\
                    "offset": 29,\
                    "length": 34,\
                    "text": "The sound could have been clearer."\
                }\
            ],\
            "warnings": []\
        },\
        {\
            "id": "2",\
            "sentiment": "negative",\
            "confidenceScores": {\
                "positive": 0.0,\
                "neutral": 0.0,\
                "negative": 1.0\
            },\
            "sentences": [\
                {\
                    "sentiment": "negative",\
                    "confidenceScores": {\
                        "positive": 0.0,\
                        "neutral": 0.0,\
                        "negative": 1.0\
                    },\
                    "offset": 0,\
                    "length": 40,\
                    "text": "The food and service were unacceptable. "\
                },\
                {\
                    "sentiment": "negative",\
                    "confidenceScores": {\
                        "positive": 0.0,\
                        "neutral": 0.0,\
                        "negative": 1.0\
                    },\
                    "offset": 40,\
                    "length": 63,\
                    "text": "While the host was nice, the waiter was rude and food was cold."\
                }\
            ],\
            "warnings": []\
        }\
    ],
    "errors": [],
    "modelVersion": "2024-03-01"
}

Paso 4: Alojar la API en Docker

Como ejercicio opcional, si te manejas con Docker y quieres alojar la API del Language Service en un contenedor, la configuración es muy sencilla. Para este escenario hay imágenes disponibles para funciones específicas del Language Service, como el análisis de sentimiento.

Despliega el contenedor Docker localmente. Solo reemplaza my-endpoint y my-key en el comando. Los detalles para configurar y ejecutar el contenedor de análisis de sentimiento están aquí.

docker run --rm -it -p 5000:5000 --memory 4g --cpus 1 mcr.microsoft.com/azure-cognitive-services/textanalytics/sentiment:latest Eula=accept Billing=https://my-endpoint ApiKey=my-key

Si tienes inconvenientes con el puerto 5000, elige otro puerto. En Mac OS, es posible que AirPlay Receiver esté usando el 5000; puedes desactivarlo en System Settings > General > AirDrop & Handoff > AirPlay Receiver.

Una vez descargada la imagen y construido el contenedor, puedes confirmar que está corriendo entrando a http://localhost:5000/

Contenedor Docker local en ejecución

También hay una página de estado en http://localhost:5000/status y la documentación completa de los endpoints en http://localhost:5000/swagger

Página de estado del contenedor Docker local

Ahora prueba el contenedor con un comando CURL, similar al que se usa para probar el servicio gestionado en Azure AI Services, salvo que se especifica el puerto y no hace falta incluir la llave de API en el header.

 curl -X POST "http://localhost:5000/text/analytics/v3.1/sentiment" -H "Content-Type: application/json" --data-ascii "{'documents':[{'id':1,'text':'The performance was amazing! The sound could have been clearer.'},{'id':2,'text':'The food and service were unacceptable. While the host was nice, the waiter was rude and food was cold.'}]}"
{
    "documents": [\
        {\
            "id": "1",\
            "sentiment": "positive",\
            "confidenceScores": {\
                "positive": 0.99,\
                "neutral": 0.0,\
                "negative": 0.0\
            },\
            "sentences": [\
                {\
                    "sentiment": "positive",\
                    "confidenceScores": {\
                        "positive": 0.99,\
                        "neutral": 0.0,\
                        "negative": 0.0\
                    },\
                    "offset": 0,\
                    "length": 29,\
                    "text": "The performance was amazing! "\
                },\
                {\
                    "sentiment": "neutral",\
                    "confidenceScores": {\
                        "positive": 0.19,\
                        "neutral": 0.47,\
                        "negative": 0.34\
                    },\
                    "offset": 29,\
                    "length": 34,\
                    "text": "The sound could have been clearer."\
                }\
            ],\
            "warnings": []\
        },\
        {\
            "id": "2",\
            "sentiment": "negative",\
            "confidenceScores": {\
                            "positive": 0.0,\
                "neutral": 0.01,\
                "negative": 0.98\
            },\
            "sentences": [\
                {\
                    "sentiment": "negative",\
                    "confidenceScores": {\
                        "positive": 0.0,\
                        "neutral": 0.01,\
                        "negative": 0.99\
                    },\
                    "offset": 0,\
                    "length": 40,\
                    "text": "The food and service were unacceptable. "\
                },\
                {\
                    "sentiment": "negative",\
                    "confidenceScores": {\
                        "positive": 0.0,\
                        "neutral": 0.02,\
                        "negative": 0.98\
                    },\
                    "offset": 40,\
                    "length": 63,\
                    "text": "While the host was nice, the waiter was rude and food was cold."\
                }\
            ],\
            "warnings": []\
        }\
    ],
    "errors": [],
    "modelVersion": "2022-11-01"
}

Desplegar el contenedor en Azure

Esto queda fuera del alcance principal de este artículo, pero ya que se mostró el alojamiento en Docker, vale la pena mencionar que Azure ofrece numerosas opciones para construir y desplegar aplicaciones nativo de la nube y contenerizadas. Según las necesidades específicas de escalabilidad, costo, alta disponibilidad, preferencias de gestión (si no quieres usar el servicio gestionado de Azure AI) y otros factores, algunas alternativas a considerar son Azure Container Instances, Azure Container Apps o Azure Kubernetes Service. Estas y otras opciones se explican con más detalle aquí.

Paso 5: Limpieza de los recursos de Azure

Limpiar los recursos de Azure usados en este ejercicio es muy sencillo, ya que solo se creó el Language Service. Si creaste un Resource Group exclusivamente para este ejercicio, también puedes eliminarlo si lo prefieres; no genera costo, pues solo sirve para agrupar recursos de Azure.

Ve a Azure AI Services, selecciona Language Service, marca la casilla del servicio que creaste, luego selecciona Delete y procede con la eliminación.

Eliminación del Language Service

Azure AI Language Service les permite a las empresas extraer insights valiosos del texto mediante análisis de sentimiento, extracción de frases clave y detección de idioma. Mostramos lo fácil que resulta integrar estas capacidades en aplicaciones a través de un endpoint gestionado de Azure AI Services o autoalojando un contenedor en Docker o en cualquier entorno donde se pueda desplegar una aplicación contenerizada.

Puntos clave

¿Por qué elegir Azure AI Language Service?

  • Facilidad de uso: con modelos preconstruidos y APIs sencillas, las empresas pueden incorporar rápidamente capacidades avanzadas de procesamiento de lenguaje natural en sus aplicaciones sin necesidad de un conocimiento profundo de machine learning.
  • Integración fluida: Azure AI Language Service se integra sin fricción con otras herramientas de Azure, como Azure Machine Learning, Power BI y Azure Synapse Analytics, lo que habilita un análisis y visualización de datos de extremo a extremo.
  • Costo-efectividad: el modelo de Precios pay-as-you-go y la infraestructura escalable garantizan que las empresas paguen solo por lo que usan, lo que lo hace accesible para organizaciones de cualquier tamaño.
  • Flexibilidad y escalabilidad: ya sea que uses endpoints gestionados para una integración rápida o ejecutes los servicios en contenedores para tener mayor control, Azure AI Language Service ofrece la flexibilidad necesaria para adaptarse a distintas necesidades de negocio. Su escalabilidad asegura que puedan manejar workloads de cualquier tamaño, desde startups pequeñas hasta grandes empresas.
  • Seguridad de nivel empresarial: las robustas funciones de seguridad y cumplimiento de Azure aseguran que tus datos estén protegidos en cada paso.

Casos de uso

  • Análisis de sentimiento: al comprender el sentimiento detrás del feedback de clientes, reseñas o publicaciones en redes sociales, las empresas pueden detectar áreas de mejora, medir la satisfacción del cliente y ajustar sus estrategias para mejorar la experiencia.
  • Extracción de frases clave: extraer frases clave de documentos, correos electrónicos o tickets de soporte ayuda a las empresas a identificar rápidamente los temas principales, las tendencias y los puntos de dolor. Así se agilizan los tiempos de respuesta, se mejora la asignación de recursos y se favorece una toma de decisiones más informada.
  • Detección de idioma: detectar automáticamente el idioma de un texto les permite a las empresas optimizar flujos de trabajo multilingües, mejorar la comunicación con audiencias globales y asegurar que el contenido esté correctamente localizado.

Empieza hoy

Desde la optimización de costos hasta la automatización de infraestructura, y desde el hardening de seguridad hasta el diseño de arquitecturas en la nube, DoiT International cuenta con amplia experiencia en múltiples dominios cloud. Para descubrir cómo DoiT puede ayudarte a implementar IA y modernizar otros aspectos de tu infraestructura cloud, contáctanos aquí y conoce nuestras soluciones de ingeniería en la nube.