Analice el contenido con los portátiles Amazon Comprehend y Amazon SageMaker.

En el mundo conectado de hoy, es importante que las empresas monitoreen los canales de las redes sociales para proteger su marca y las relaciones con los clientes.

Las empresas intentan obtener información sobre sus clientes, productos y servicios a través de las redes sociales, correos electrónicos y otras comunicaciones.

Los modelos de aprendizaje automático (ML) pueden ayudar a abordar algunas de estas necesidades. Sin embargo, el proceso para construir y entrenar su propio modelo puede ser complicado y lento.

La plataforma de aprendizaje automático de Amazon proporciona modelos pre-entrenados a los que se puede acceder desde Amazon SageMaker utilizando un portátil Jupyter.

Amazon SageMaker es una plataforma ML de extremo a extremo totalmente gestionada con diseño modular, pero solo usaremos una instancia de notebook alojada para este ejemplo.

Amazon Comprehend es un servicio de procesamiento de lenguaje natural (PNL) que utiliza el aprendizaje automático para encontrar ideas y relaciones en el texto.

En esta publicación del blog, le mostraremos cómo puede usar Amazon Comprehend para analice el sentimiento de Twitter dentro de un cuaderno.

¿Cómo funciona Amazon Comprehend?

Amazon Comprehend toma sus datos no estructurados, tales como publicaciones en redes sociales, correos electrónicos, páginas web, documentos y transcripciones como entrada. Luego analiza la entrada utilizando el poder de los algoritmos de PNL para extraer frases clave, entidades y sentimientos de forma automática. También puede detectar el idioma de los datos de entrada y encontrar agrupaciones relevantes de los datos utilizando algoritmos de modelado de temas. El siguiente diagrama muestra el flujo de trabajo de Amazon Comprehend.

Usando Amazon Comprehend Custom puede identificar nuevos tipos de entidades que no son compatibles como un tipo de entidad genérica preestablecida, o puede Analice los comentarios de los clientes en busca de términos y frases exclusivos de su negocio. Por ejemplo, puede saber cuándo un cliente va a ceder o cuando mencionan una de sus ID de producto únicas.

Paso 1: configure su computadora portátil Amazon SageMaker

En la Consola de administración de AWS, elija Servicios y luego Amazon SageMaker bajo Machine Learning . Puede hacer esto desde cualquier región de AWS, pero debe asegurarse de que tanto nuestra API global de Amazon como la de Amazon SageMaker se encuentren en la misma región. Tome nota de su región de AWS, necesitará esta información para conectarse a la API global de Amazon. Para el ejemplo en esta publicación de blog, he establecido la Región en EE.UU. Este (Virginia).

En la consola de Amazon SageMaker, en Cuaderno elija Cuaderno de instancias . Ahora elija Crear instancia de cuaderno .

Primero debe establecer un nombre de instancia de cuaderno. Para este ejemplo, usaremos ‘comprehend-nb’. Tenga en cuenta que hay algunas restricciones de nombre para el nombre de instancia de su cuaderno. Estas restricciones incluyen lo siguiente: máximo de 63 caracteres alfanuméricos, se pueden usar guiones pero no espacios, y el nombre de la instancia debe ser único dentro de su cuenta en una región de AWS. Puede asignar al cuaderno el nombre que desee.

El tamaño de instancia predeterminado es suficiente para este ejercicio, al igual que las otras configuraciones predeterminadas. Sin embargo, debe crear una función de IAM con AmazonSageMakerFullAccess, además la función de IAM necesita acceso a todos los depósitos necesarios del Servicio de almacenamiento simple de Amazon (Amazon S3). En la consola, bajo Función IAM elija Crear una nueva función .

Al crear una nueva función IAM, puede especificar los depósitos de Amazon S3 a los que desea que tenga acceso la función Para elegir Cucharones S3 específicos para los Cucharas S3 que especifique . Seleccione Crear rol .

La configuración de la instancia de su portátil debería verse así:

Elija Crear ]. [19659002] Después de unos minutos, su instancia de notebook estará lista. Para acceder a Amazon Comprehend desde la instancia del cuaderno, debe adjuntar la política ComprehendFullAccess a su rol de IAM. Para hacerlo, elija el nombre de la instancia del cuaderno.

Su configuración de la instancia del cuaderno ahora debería verse como la siguiente captura de pantalla. Elija IAM rol ARN para abrir el rol IAM asociado a la instancia del cuaderno.

En el panel de control de IAM, elija Adjuntar políticas .

Puede filtrar políticas escribiendo el nombre de la política. Escriba ComprehendFullAccess y marque en la política tal como aparece en la página. Elija Adjuntar política .

Después de adjuntar la política correctamente, puede cerrar la consola IAM de forma segura y volver a la consola de Amazon SageMaker. Una vez que el estado de la instancia del cuaderno se establece en InService elija el enlace [19459194]

] Paso 19: cree un cuaderno

Después de abrir el instancia de notebook que aprovisionó, desde la consola Jupyter, elija New y luego conda_python3 .

Esto debería abrir un nuevo cuaderno de Jupyter, que se vería como la siguiente captura de pantalla:

Asigne un nombre a su portátil Jupyter seleccionando Sin título y siguiendo las instrucciones para crear y ejecutar los bloques de código. Alternativamente, puede acceder al archivo de código de muestra aquí . Puede cargar el archivo en la instancia del cuaderno para ejecutarlo directamente.

Paso 3: Importe los paquetes necesarios

Puede importar los paquetes necesarios que se requieren para este ejemplo.

 importe pandas como pd
De colecciones importadas OrderedDict
solicitudes de importación

Paso 4: conectarse a Amazon Comprehend

Puede usar el AWS SDK para Python SDK (Boto3) para conectarse a Amazon Comprehend desde su base de código de Python. Con el siguiente comando, puede importar boto3 y conectarse a Amazon Comprehend en una región de AWS específica mediante el cliente de boto3. La región de AWS debe ser la misma región que el cuaderno. Para este ejemplo, he usado la región de us-east-1 porque creé el cuaderno en esa región.

 import boto3
comprehend = boto3.client ('comprehend', region_name = 'us-east-1') 

Paso 5: Analice un tweet utilizando la API de Comprehend de Amazon

Usando la API de comprehend de Amazon, ahora puede analizar un solo tweet . ¡Podrás extraer frases clave, entidades y sentimientos.

 sample_tweet = "Siempre es un gran día en el que puedo hacer un buen uso de mis conocimientos ecuestres en el trabajo! #AWS #BePeculiar"

# Frases clave
phrase = comprehend.detect_key_phrases (Text = sample_tweet, LanguageCode = 'en')

# Entidades
entes = comprehend.detect_entities (Text = sample_tweet, LanguageCode = 'en')

#Sentimentos
sentiments = comprehend.detect_sentiment (Text = sample_tweet, LanguageCode = 'en')


# Imprimir las frases:
imprimir ('------- frases ---------')
para i en rango (0, len (frases ['KeyPhrases'])):
    imprimir ((frases ['KeyPhrases'][i]['Text']))
    

# Imprimir las entidades con tipo de entidad:
imprimir ('------- entidad: tipo de entidad ---------')
para i en el rango (0, len (entidades ['Entities'])):
    imprimir (entidades ['Entities'][i]['Text']  + ':' + entidades ['Entities'][i]['Type'] )
    
# Imprimir el sentimiento:
imprimir ('------- sentimiento ---------')
print (sentimientos ['Sentiment']) 

Paso 6: Use la API de Twitter para buscar tweets que contengan el hashtag #BePeculiar

“Ser peculiar” es uno de los rasgos clave de la cultura amazónica. Extraigamos los tweets que contienen el hashtag #BePeculiar.

Información de la aplicación de Twitter

Para obtener datos de Twitter, necesitará la información de su aplicación de Twitter. Esto se puede encontrar en apps.twitter.com.

Visite apps.twitter.com, si ya tiene una aplicación existente, puede hacer clic en ella o puede elegir el botón Crear nueva aplicación para crear una nueva aplicación.

Complete la información requerida en el formulario cree una aplicación acepte el acuerdo del desarrollador y luego seleccione Cree su aplicación Twitter .

Elija la Claves y fichas de acceso y registre la Clave del consumidor (Clave de la API), Secreto del consumidor (Secreto de la API).

Elija Crear mi token de acceso . Después de que se haya creado, registre el token de acceso y el secreto de token de acceso en Su token de acceso .

Ahora puede volver a su cuaderno de Amazon SageMaker. Guarde la clave de la API de la aplicación de Twitter y acceda a la información del token en su código para que pueda usarla para usar la API de Twitter.

 api_key = '< API key >'
api_secret = '< API secret key >'
access_token = '< Access token >'
access_secret = '< Access secret token >' 

Envoltura de Python para la API de Twitter

Tweepy es una envoltura de Python para la API de Twitter. Se puede importar y usar para conectarse a la API de Twitter usando el siguiente código. Debe instalar Tweepy antes de poder usarlo en el cuaderno.

 %% bash
pip install tweepy 

Ahora puede importar tweepy y crear un objeto controlador de autorización tweepy para extraer tweets.

 importar tweepy
auth = tweepy.OAuthHandler (api_key, api_secret)
auth.set_access_token (access_token, access_secret)
api = tweepy.API (auth) 

Ahora puede guardar el hashtag que desea en una variable de etiqueta y usar el objeto del controlador de autorización tweepy para buscar tweets que contengan el hashtag. En este ejemplo, estoy usando el hashtag “#BePeculiar” y guardo los tweets extraídos en el objeto html llamado “tweets” usando el siguiente comando:

 tag = '#bepeculiar'
tweets = api.search (q = tag, count = 50) 

Nota : agregué count = 50 a este código para limitar la extracción de datos.

Warning : El acceso a los datos desde Twitter puede ser costoso. Consulte las pautas de precios antes de acceder a su API.

Paso 7: analice los datos extraídos del tweet usando la API Comprehend

El tweet individual es un objeto JSON con muchos metadatos en el usuario, su perfil y publique atributos como la marca de tiempo, me gusta, comentarios y el tweet original.

Ahora puede extraer algunos de estos metadatos junto con el contenido del tweet. El contenido del tweet puede analizarse aún más utilizando la API de Amazon Comprehend para comprender el sentimiento de la publicación.

A los efectos de este blog, extraje la marca de tiempo, la ubicación y el tweet, y extraje la puntuación del sentimiento para cada uno de los tweets.

 mensajes = []
marca de tiempo = []
ubicaciones = []
sentimientos = []
positivo = []
negativo = []
neutral = []

para i en rango (len (tweets)):
    d = tweets [i] .text
    ts = tweets [i] .created_at
    l = tweets [i] .user.location
    
    si d! = '':
        res = comprehend.detect_sentiment (Text = d, LanguageCode = 'en')
        s = res.get ('Sentimiento')
        p = res.get ('SentimentScore') ['Positive']
        neg = res.get ('SentimentScore') ['Negative']
        neu = res.get ('SentimentScore') ['Neutral']
    
    timestamp.append (ts)
    posts.append (d)
    locations.append (l)
    sentimientos.append (s)
    positivo.append (p)
    negativo.append (neg)
    neutral.append (neu)

Paso 8: Visualice los datos

Para visualizar los datos, es importante formar los datos correctamente. Combine la información extraída para crear un DataFrame para que pueda organizar los datos en un formato tabular.

Cree un DataFrame

Usando la biblioteca de Python Pandas, puede crear un DataFrame para organizar la información extraída en una forma tabular para Fácil consumo.

 importa pandas como pd
De colecciones importadas OrderedDict

result = pd.DataFrame (OrderedDict ({
            'tweets': mensajes
         , 'ubicación': pd.Series (ubicaciones) .str.wrap (15)
         , 'timestamp': timestamp
         , 'sentimiento': sentimientos
         , 'positiveScore': positivo
         , 'negativeScore': negativo
         , 'neutralScore': neutral
         }))

Realizar análisis de datos exploratorios

Puede realizar análisis de datos exploratorios en el conjunto de datos de resultados para responder preguntas comerciales importantes.

Por ejemplo, para averiguar la ubicación que generó sentimientos más positivos, puede ejecutar el siguiente bloque de código :

 print ("Ubicaciones que generaron sentimientos positivos en el orden descendente:")
result.groupby (by = 'location') ['positiveScore'] .mean (). sort_values ​​(ascendente = False) 

El siguiente bloque de código puede ayudarnos a averiguar qué ubicaciones han twitteado más.

 result.groupby (por = 'ubicación', sort = Verdadero) ['tweets'] .count (). sort_values ​​(ascendente = False) 

Del mismo modo, también puede aprender si hay una cierta hora del día que genera más sentimientos positivos que otras veces por rompiendo el campo de marca de tiempo aún más.

Guarde los datos en Amazon S3

Finalmente, puede guardar los resultados en un archivo separado por comas (CSV) en Amazon S3. Esto le permite reutilizar los resultados del análisis de sentimientos de la API comprehend de Amazon para crear un panel de inteligencia empresarial (BI) o para construir otros modelos de aprendizaje automático relevantes utilizando los algoritmos nativos de Amazon SageMaker.

 # Función para cargar en S3
desde io import StringIO
importar boto3

def write_pd_s3_csv (df, bucket, filepath):
    csv_buffer = StringIO ()
    df.to_csv (csv_buffer)
    s3_resource = boto3.resource ('s3')
    s3_resource.Object (bucket, filepath) .put (Body = csv_buffer.getvalue ())
    imprimir ("Los datos se escriben correctamente en la ruta S3:", bucket + "/" + filepath)

# Escribir a S3
s3_bucket = ''
file_path = 'comprehend-blog-example / tweet_data.csv'
write_pd_s3_csv (resultado, s3_bucket, file_path)

Conclusión

En esta publicación del blog, aprendiste cómo extraer tweets utilizando la API de Twitter para obtener datos relevantes de las redes sociales. También aprendió a usar la API de Comprehend de Amazon para analizar el feed de Twitter y extraer información útil. Además, puede utilizar los resultados de Amazon Comprehend como una entrada a los algoritmos relevantes de Amazon SageMaker y crear inferencia. Para obtener más información sobre Amazon Comprehend, consulte la documentación de AWS .

También puede consultar Construir un panel de medios sociales utilizando el aprendizaje automático y los servicios de BI una publicación de blog donde Ben Snively y Viral Desai ilustran cómo construir un panel de medios sociales usando tecnología sin servidor. El panel de medios sociales lee tweets con un hashtag #AWS, utiliza servicios de aprendizaje automático como Amazon Translate y Amazon Comprehend para hacer la traducción, y procesamiento de lenguaje natural (NLP) para extraer temas, entidades y sentimientos. Al final, agrega la información usando Amazon Athena y crea un panel de control de Amazon QuickSight para visualizar la información capturada de los tweets.

 

Dejá un comentario