Abrir en Google Colab Descargar notebook

Servicios cognitivos de Análisis de Texto

¿Que son los servicios cognitivos?

Crear modelos de Análisis de Texto que tengan gran precisión y funcionen en una variedad de contextos importante no es una tarea sencilla. Requiren grandes cantidades de datos y experencia en la creación de modelos básados en Deep Learning. A medida que el procesamiento de texto se vuelve mas robusto, muchas organizaciones de tecnología han optado por empaquetar estos modelos de alta performance y ofrecerlos como servicios que las organizaciones pueden consumir directamente como un servicio web.

Azure Cognitive Services es uno de estos servicios, el cual cuenta con una API y librerias que se pueden utilizar en multiples lenguajes para ayudarnos a construir aplicaciones inteligentes sin necesidad de tener habilidades de ciencia de datos ni grandes volumenes de información.

En nuestro caso, exploraremos los servicios cognitivos de Análisis de Texto entre los cuales se encuentran:

Nombre del servicio

Descripción

Análisis de sentimiento

El análisis de sentimiento permite averiguar el sentimiento de un texto analizando su contenido.

Extracción de frases principales

Extrae automáticamente frases clave para identificar rápidamente los puntos principales.

Detección del lenguaje

Permite la detección del lenguaje de un texto dado.

Extración de entidades en particular

Named Entity Recognition (NER) puede identificar y clasificar diferentes entidades.

Creación de una cuenta de servicios cognitivos en Azure

Creación de una cuenta en Azure

Hay varias alternativas para utilizar los servicios cognitivos de Azure, pero en nuestro caso crearemos una cuenta de pruebas que tendrá una duracción de 7 días para probar los servicios cognitivos. Esta metodología no requiere de una tarjeta de crédito. Si necesitaran disponer de una cuenta por mayor cantidad de tiempo, es posible crear una cuenta gratuita de Azure que dispone de acceso a los servicios en un Tier Free por 12 meses, sin embargo, este procedimiento requiere la validación del usuario por medio de una tarjeta de crédito.

Para crear una cuenta, utilicen el siguiente link: https://azure.microsoft.com/es-es/try/cognitive-services/

Luego, seleccionaremos la opción para obtener una clave del servicio de Language API:

c7f83d29125a4a968f7effbe879e9bbb

Luego debemos indicar que tipo de cuenta utilizaremos. en nuestro caso, especificaremos una cuente de tipo Trial que durará por 7 dias desde el momento de creación:

45b4f244d96d43dba352a107535a08b9

Luego deberemos aceptar los terminos y condiciones para utilizar el servicio y finalmente iniciar sesión utilizando alguna de las opciones que están disponibles. Si no disponen de una cuenta Microsoft, pueden crearse una desde https://signup.microsoft.com y eligiendo la opción Crear una Cuenta Microsoft.

Obtener las claves de acceso a los servicios

Una vez que activamos nuestra cuenta trial, obtendremos 2 puntos de información importante:

  • Puntos de conexión: Es la URL que deberemos de indicar para acceder al servicio

  • Claves: Estas claves son el mecanismo de autenticación que utilizaremos.

Necesitaremos ambas piezas de información para continuar. Si no pueden encontrar sus claves, pueden acceder al siguiente link y debería llevarlos a una pagina similar a la siguiente donde están especificados ambos valores:

ceeceaf30f9b460eb4926f9a2ad71825

Creación de un cliente para la utilización de la API de NLP

Instalación del SDK

Instalamos las librerias del SDK junto con algunas otras que necesitaremos

[ ]:
!pip install azure-cognitiveservices-language-textanalytics

Importamos las clases con las que vamos a trabajar

[7]:
from azure.cognitiveservices.language.textanalytics import TextAnalyticsClient
from msrest.authentication import CognitiveServicesCredentials

Especificación de las credenciales para operar el servicio. Aquí deberemos utilizar las credenciales que generaron desde la página del portal de Microsoft Azure

[14]:
subscription_key = ""
endpoint = "https://westus.api.cognitive.microsoft.com"

*Noten que endpoint es la URL que obtienen desde el portal, pero sin la parte «/text»

[15]:
client = TextAnalyticsClient(endpoint=endpoint, credentials=CognitiveServicesCredentials(subscription_key))

Analisis de sentimiento

El análisis de sentimiento permite averiguar el sentimiento de un texto analizando su contenido. Esta API devuelve una puntuación entre 0 y 1 para cada documento. Las puntuaciones cercanas a 1 indican un sentimiento positivo, mientras que las puntuaciones cercanas a 0 indican un sentimiento negativo.

[16]:
documents = [{
    'language': 'en',
    'id': 0,
    'text': "I had the best day of my life."
}, {
    'language': 'en',
    'id': 1,
    'text': "This was a waste of my time. The speaker put me to sleep."
}, {
    'language': 'es',
    'id': 2,
    'text': "No tengo dinero ni nada que dar..."
}, {
    'language': 'fr',
    'id': 3,
    'text': "Comme ce n'est pas cher, je n'ai pas confiance"
}]

for document in documents:
    print("Sentimiento '{}' (id: {})".format(document['text'], document['id']))
Sentimiento 'I had the best day of my life.' (id: 0)
Sentimiento 'This was a waste of my time. The speaker put me to sleep.' (id: 1)
Sentimiento 'No tengo dinero ni nada que dar...' (id: 2)
Sentimiento 'Comme ce n'est pas cher, je n'ai pas confiance' (id: 3)
[17]:
response = client.sentiment(
    documents=documents
)
[18]:
for document in response.documents:
    print("Sentimiento en el documento {}, puntuación es: {}:".format(document.id, document.score))
Sentimiento en el documento 0, puntuación es: 0.8668136596679688:
Sentimiento en el documento 1, puntuación es: 0.06479135155677795:
Sentimiento en el documento 2, puntuación es: 0.43635445833206177:
Sentimiento en el documento 3, puntuación es: 0.1989094614982605:

Extracción de frases importantes

Extrae automáticamente frases clave para identificar rápidamente los puntos principales. Por ejemplo, para el texto de entrada «La comida era deliciosa y el personal era maravilloso», la API devuelve los puntos principales de conversación: «comida» y «personal maravilloso».

[5]:
documents = [
    {
        "id": "1",
        "language": "en",
        "text": "My cat might need to see a veterinarian."
    },
    {
        "id": "2",
        "language": "es",
        "text": "A mi me encanta el fútbol!"
    }
]
[ ]:
response = client.key_phrases(documents=documents)
[ ]:
for document in response.documents:
    print("ID del documento: ", document.id)
    print("\tFrases clave:")
    for phrase in document.key_phrases:
        print("\t\t",phrase)