Download Almacenamiento de los tweets en MongoDB

Document related concepts
no text concepts found
Transcript
Extracción y Almacenamiento de Datos para
Análisis de Sentimientos
Ofelia Cervantes
1
Extracción y Almacenamiento de Datos para
Análisis de Sentimientos
1) Extraer datos en tiempo real de Twitter usando Tweepy
( API de Twitter para Python )
captura.py
2) Almacenar en Mongo DB los datos obtenidos al usar Tweepy
almacenar.py
3) Usar el API de MeaningCloud para analizar el sentimiento
de cada tweet almacenado previamente
analisis.py
Ofelia Cervantes
Análisis de Sentimientos
 Estudio computacional de opiniones, sentimientos, y
emociones expresadas en textos.
 Objetivo principal: determinar la actitud de un escritor
ante determinados productos, situaciones, personas u
organizaciones.
 El tipo de información que puede obtenerse empleando AS
incluye:
o
o
o
o
Emoción del mensaje (positivo, negativo, neutro).
Subjetividad del mensaje.
Confianza.
Determinación de la ironía.
Bo Pang and Lilian Lee: Opinion Mining and Sentiment Analysis. Department of Computer Science, Cornell University (2008)
Ofelia Cervantes
Aplicaciones del Análisis de Sentimientos
 Enormes oportunidades pues puede ser aplicada a
diversos temas:
o Analizar o cuantificar el éxito de un partido político o una
asociación.
o Conocer la opinión de los usuarios de cierta marca,
producto o personaje público.
o Realizar predicciones de lo que puede ocurrir en un futuro a
partir de comentarios de usuarios.
o Realizar estudios de tendencia de mercado.
Ofelia Cervantes
Uso del API de Twitter para Extraer Datos
 El Stream API de Twitter permite obtener datos en tiempo
real.
o
o
o
o
Permite descargar un gran volumen de datos.
Sigue temas y usuarios específicos.
Descarga de datos sin límite.
Existe implementación para un gran número de lenguajes.
https://dev.twitter.com/streaming/overview
Ofelia Cervantes
Uso del API de Twitter para Extraer Datos
Tweepy
 Es una librería escrita en Python.
 Permite un fácil uso del Stream API de twitter.
 Ofrece una documentación clara y completa, dispponible en:
o http://tweepy.readthedocs.io/en/v3.5.0/
http://www.tweepy.org
Ofelia Cervantes
Uso de MongoDB para Almacenar Datos
MongoDB
 Desarrollado por la compañía 10gen, iniciando el desarrollo
de MongoDB en 2007.
 Es un una base de datos orientada a documentos.
 Es de tipo no-SQL.
 Es de uso libre y de código abierto.
 Presenta una estructura JSON (Mongo la denomina BSON).
https://www.mongodb.com/
Ofelia Cervantes
Uso de Meaning Cloud para Analizar Datos
MeaningCloud:
https://www.meaningcloud.com/

Es una compañía que brinda productos Saas (Software as Service) enfocados
en el análisis semántico de texto, permitiendo a usuarios embeber el
procesamiento en cualquier aplicación o sistema.
o Análisis de sentimientos: Analiza un texto e indica su polaridad,
subjetividad, ironía y expresión de desacuerdo.
o Extracción de tema: Extrae información relevante de los textos e identifica
apariciones de entidades nombradas y conceptos.
o Clasificación de texto: Realiza una clasificación de texto, basado en una
categorización jerárquica o taxonomía.
o …
Ofelia Cervantes
Extracción y Almacenamiento de Datos para
Análisis de Sentimientos
1) Extraer datos en tiempo real de Twitter usando Tweepy
( API de Twitter para Python )
captura.py
2) Almacenar en Mongo DB los datos obtenidos al usar Tweepy
almacenar.py
3) Usar el API de MeaningCloud para analizar el sentimiento
de cada tweet almacenado previamente
analisis.py
Ofelia Cervantes
Uso de Tweepy – Entorno de trabajo
Requerimientos iniciales: instalar librerías en nuevo
directorio: AnálisisSentimientos
1. Instalar librería Tweepy.
2. Instalar librería Demjson.
3. Instalar librería Pymongo.
Ofelia Cervantes
Uso de Tweepy – Entorno de trabajo
o Abrir un nuevo espacio de trabajo para almacenar los archivos que
serán creados, en una carpeta llamada “AnalisisSentimientos”.
Ofelia Cervantes
Uso de Tweepy – entorno de trabajo
Para instalar librería Tweepy:
 Abrir una ventana de línea de comandos:
o Windows: Presionar la combinación de teclas “Windows+R” e Ingresar
la palabra “cmd” y presionar enter.
o MacOSX: Presionar la combinación de teclas “CMD+Espacio” e
Ingresar la palabra “terminal” y presionar enter.
 Instalar la librería:
o Windows: Ejecutar “python –m pip install tweepy”
o MacOSX: Ejecutar “sudo python –m pip install tweepy”
Ejecución en MacOSX.
Ejecución en Windows.
Ofelia Cervantes
Uso de Tweepy – entorno de trabajo
Para instalar librería Demjson
 Abrir una ventana de línea de comandos:
o Windows: Presionar la combinación de teclas “Windows+R” e Ingresar la
palabra “cmd” y presionar enter.
o MacOSX: Presionar la combinación de teclas “CMD+Espacio” e Ingresar la
palabra “terminal” y presionar enter.
 Instalar la librería:
o Windows: Ejecutar “python –m pip install demjson”
o MacOSX: Ejecutar “sudo python –m pip install demjson”
Ejecución en MacOSX
Ejecución en Windows
Ofelia Cervantes
Uso de Tweepy – entorno de trabajo
Instalar librería Pymongo:
 Abrir una ventana de línea de comandos:
o Windows: Presionar la combinación de teclas “Windows+R” e Ingresar la
palabra “cmd” y presionar enter.
o MacOSX: Presionar la combinación de teclas “CMD+Espacio” e Ingresar la
palabra “terminal” y presionar enter.
 Instalar la librería:
o Windows: Ejecutar “python –m pip install pymongo”
o MacOSX: Ejecutar “sudo python –m pip install pymongo”
Ejecución en MacOSX
Ejecución en Windows
Ofelia Cervantes
Uso de Tweepy – Recuperar Tokens
 Ingresar a la aplicación creada previamente.
o https://apps.twitter.com
Ofelia Cervantes
Uso de Tweepy – Recuperar Tokens
Siempre puede recuperar sus Tokens de API Twitter:
 Ingresar a la pestaña “Keys and Access Tokens”
 Copiar “API key, API secret, Access Token, Access Token
Secret”
Ofelia Cervantes
El script en Python que invoca el API de
Tweepy para capturar datos debe:
1. Crear una clase heredando de la clase
“StreamListener”.
2. Autenticar con credenciales de la aplicación Twitter.
3. Crear un objeto “Stream”
4. Iniciar el Stream.
5. Guardar script.
6. Ejecutar script.
Para luego poderlo ejecutar con:
Ofelia Cervantes
Contenido del script captura.py
1. Crear una clase heredando de la clase
“StreamListener”.
Ofelia Cervantes
Contenido del script captura.py
2. Autenticar con credenciales de la aplicación Twitter.
Ofelia Cervantes
Contenido del script captura.py
3. Crear un objeto “Stream”.
4. Iniciar el Stream - … separar cadenas con coma !
ATENCION !! Colocar las palabras y/o usuarios de los cuales se desea bajar tweets !!!
Ofelia Cervantes
Contenido del script captura.py
5. Guardar script – parte 1
Ofelia Cervantes
Contenido del script captura.py
5. Guardar script – parte 2
•
•
Seleccionar la carpeta “AnalisisSentimientos”.
Nombrar al archivo “captura.py”
Ofelia Cervantes
Una vez creado el archivo … ejecutarlo !
6. Ejecutar código:
o
Abrir una ventana de línea de comandos.
–
–
Windows: Presionar la combinación de teclas “Windows+R” e Ingresar la
palabra “cmd” y presionar enter.
MacOSX: Presionar la combinación de teclas “CMD+Espacio” e Ingresar la
palabra “terminal” y presionar enter.
o
Acceder al directorio “AnalisisSentimiento”
o
Ejecutar el comando “python captura.py”
Ofelia Cervantes
Estructura de los Tweets
 Atributos de cada tweet obtenido con Tweepy:
o text: Texto del tweet
o created_at: Timestamp de la creación del tweet.
o user: Datos del usuario que lo publica.
• id: identificador numerico del usuario en Twitter.
• screen_name: Nombre de usuario.
• description: Descripción del usuario
• followers_count: Número de seguidores.
• friends_count: Número de amigos.
• profile_image_url: Imagen de perfil.
o source: Utilidad empleada para publicar el tweet
o retweeted_status: Información de retweet. Solo está disponible si
es un retweet.
Ofelia Cervantes
Estructura de Tweets
Datos de un tweet
http://r12a.github.io/apps/conversion/
Ofelia Cervantes
Estructura de Tweets
Datos de un retweet
http://r12a.github.io/apps/conversion/
Ofelia Cervantes
Extracción y Almacenamiento de Datos para
Análisis de Sentimientos
1) Extraer datos en tiempo real de Twitter usando Tweepy
( API de Twitter para Python )
captura.py
2) Almacenar en Mongo DB los datos obtenidos al usar Tweepy
almacenar.py
3) Usar el API de MeaningCloud para analizar el sentimiento
de cada tweet almacenado previamente
analisis.py
Ofelia Cervantes
Almacenamiento de los tweets en MongoDB
1. Instalar MongoDB.
2. Crear base de datos.
3. Escribir script para conectar con
Mongodb desde Python.
4. Extraer datos usando Tweepy
5. Almacenar tweets.
6. Guardar código.
7. Ejecutar código.
Ofelia Cervantes
Almacenamiento en MongoDB
Proceso para bajar e instalar MongoDB:
1.
2.
3.
Descargar el instalador.
Ejecutar el instalador.
Activar el Servicio MongoDB
El servidor de MongoDB no es iniciado automáticamente por lo que
es necesario ejecutarlo de forma manual.
Inicio…
Ofelia Cervantes
Fin
Almacenamiento en MongoDB
1. Descargar el instalador (Windows).
o Acceder a página de descarga:
• https://www.mongodb.com/download-center
o Seleccionar Community Server.
o Seleccionar plataforma Windows.
o Seleccionar la arquitectura de la maquina destino
(32/64 bits).
o Presionar “Download”.
Ofelia Cervantes
Almacenamiento en MongoDB
2. Ejecutar el instalador (Windows).
o
o
o
o
o
Entrar al directorio de descargas.
Instalar el ejecutable descargado (lo colocará en Program Files)
Aceptar a licencia.
Seleccionar instalación completa.
Presionar instalar.
Ofelia Cervantes
Almacenamiento en MongoDB
3. Activar el servicio de MongoDB - Windows
o
Crear en C: una carpeta denominada data y al interior que contenga
otra carpeta denominada db. Estas carpetas las usará MongoDB
para guardar los datos.
o
Abrir una ventana de línea de comandos.
–
Windows: Presionar la combinación de teclas “Windows+R” e Ingresar la
palabra “cmd” y presionar enter.
o
Acceder al directorio “bin” de “MongoDB” para iniciar el servicio:
“C:\Program Files\MongoDB\Server\3.2\bin ”
o
Y ejecutar el comando que instalará el servidor de MongoDB
> mongod
Ofelia Cervantes
Almacenamiento en MongoDB
1. Descargar el instalador (MacOSX).
o Acceder a página de descarga:
• https://www.mongodb.com/download-center
o Seleccionar Community Server.
o Seleccionar plataforma Mac OSX.
o Presionar “Download”.
Ofelia Cervantes
Almacenamiento en MongoDB
2. Descomprimir, reubicar el instalador (MacOSX).
o Acceder al directorio de descargas.
o Mover el archivo descargado y descomprimido hacia la carpeta
“AnalisisSentimientos”.
Carpeta descomprimida
Ofelia Cervantes
Almacenamiento en MongoDB
3. Para activar el servicio de Mongo (el mongod) en MacOSX .
o
Abrir una ventana de línea de comandos.
–
Presionar la combinación de teclas “CMD+Espacio” e Ingresar la palabra “terminal” y
presionar enter.
o
Emplear el comando “cd” y posicionarse en la carpeta de MongoDB.
o
Importar una variable de entorno.
o
Iniciar el servicio de MondoDB (mongod).
Ofelia Cervantes
Antes de activar el servicio en MongoDB
 Verificar que antes de levantar el servicio usando el mongod, NO
exista un servicio corriendo en el puerto 27017.
 Para revisar usar:
o Comando para Windows:
• netstat –tan | findstr 27017
o Comando para MacOSX/Linux
• netstat –tan | grep 27017
 Si existiera, cambiar el no. Puerto


en cada script de Python y
al activar el servicio mongod, agregando –port <nuevo no. puerto>
No existe un servicio corriendo
Ofelia Cervantes
Existe un servicio corriendo
Almacenamiento de los tweets en MongoDB
1. Instalar MongoDB.
2. Crear base de datos.
3. Escribir script para conectar con
Mongodb desde Python.
4. Extraer datos usando Tweepy
5. Almacenar tweets.
6. Guardar código.
7. Ejecutar código.
Ofelia Cervantes
Almacenamiento en MongoDB
2. Para crear base de datos, primero ubicarse en
directorio adecuado
o
Abrir una nueva ventana de línea de comandos.
–
–
o
o
Windows: Presionar la combinación de teclas “Windows+R” e Ingresar la
palabra “cmd” y presionar enter.
MacOSX: Presionar la combinación de teclas “CMD+Espacio” e Ingresar
la palabra “terminal” y presionar enter.
Acceder al directorio de “MongoDB”.
Acceder al directorio “bin”.
Directorio Mongodb en MacOSX.
Ofelia Cervantes
Directorio Mongodb en Windows.
Almacenamiento en MongoDB
2. Para crear la base de datos, usando el programa cliente
denominado mongo
o
Ejecutar el cliente de mongodb:
•
Windows: mongo.exe
•
Mac OSX: ./mongo
Así se estará ejecutando el cliente de MongoDB y atenderá peticiones, como la de
crear una base de datos
o
Para crear la base de datos, escribir en la línea de comandos
“use <schema>”.
Ofelia Cervantes
Almacenamiento de los tweets en MongoDB
1. Instalar MongoDB.
2. Crear base de datos.
3. Escribir script para conectar con
Mongodb desde Python.
4. Extraer datos usando Tweepy
5. Almacenar tweets.
6. Guardar código.
7. Ejecutar código.
Ofelia Cervantes
Almacenamiento de los tweets en MongoDB
3. Escribir script en Python para conectarse con
MongoDB
o
o
o
o
Importar librería pymongo.
Configurar conexión.
Seleccionar el esquema.
Inicializar la colección de tweets.
from pymongo import MongoClient#Libreria Mongodb
#Conexion a MongoDB
cliente = MongoClient()#Inicializar objeto
cliente = MongoClient('127.0.0.1', 27017)#Indicar parametros del servidor
bd = cliente.twitter#Seleccionar Schema
tweets = bd.tweets#Seleccionar Coleccion
Ofelia Cervantes
Almacenamiento de los tweets en MongoDB
1. Instalar MongoDB.
2. Crear base de datos.
3. Escribir script para conectar con
Mongodb desde Python.
4. Extraer datos usando Tweepy
5. Almacenar tweets.
6. Guardar código.
7. Ejecutar código.
Ofelia Cervantes
Almacenamiento en MongoDB
4. Extraer los tweets en Python usando Tweepy:
tauth = tweepy.OAuthHandler(consumer_key, consumer_secret)#Autenticar
tauth.set_access_token(access_token, access_secret)#Autenticar
streamListen = MyStreamListener()#Instanciar clase "MyStreamListener"
twStream = tweepy.Stream(auth = tauth, listener = streamListen )#Crear stream
Ofelia Cervantes
Almacenamiento de los tweets en MongoDB
1. Instalar MongoDB.
2. Crear base de datos.
3. Escribir script para conectar con
Mongodb desde Python.
4. Extraer datos usando Tweepy
5. Almacenar tweets.
6. Guardar código.
7. Ejecutar código.
Ofelia Cervantes
Almacenamiento en MongoDB
5. Almacenar los tweets en MongoDB:
o
Modificar el método “on_status”.
Ofelia Cervantes
Almacenamiento de los tweets en MongoDB
1. Instalar MongoDB.
2. Crear base de datos.
3. Escribir script para conectar con
Mongodb desde Python.
4. Extraer datos usando Tweepy
5. Almacenar tweets.
6. Guardar código.
7. Ejecutar código.
Ofelia Cervantes
Almacenamiento en MongoDB
6. Guardar el código generado:
Ofelia Cervantes
Almacenamiento en MongoDB
6. Guardar el código generado:
•
•
•
Seleccionar la carpeta “AnalisisSentimientos”.
Nombrar al archivo “almacenar.py”
Seleccionar en tipo “Todos los archivos (*.*)”
Ofelia Cervantes
Almacenamiento de los tweets en MongoDB
1.
2.
3.
4.
5.
6.
7.
Ofelia Cervantes
Instalar MongoDB.
Crear base de datos.
Conectar con Mongodb desde Python.
Extraer datos usando Tweepy
Almacenar tweets.
Guardar código.
Ejecutar código.
Almacenamiento en MongoDB
7. Ejecutar código:
o
Abrir una nueva ventana de línea de comandos.
–
–
o
o
Windows: Presionar la combinación de teclas “Windows+R” e Ingresar la
palabra “cmd” y presionar enter.
MacOSX: Presionar la combinación de teclas “CMD+Espacio” e Ingresar la
palabra “terminal” y presionar enter.
Acceder al directorio “AnalisisSentimientos”
Ejecutar el comando “python almacenar.py”
Ofelia Cervantes
Extracción y Almacenamiento de Datos para
Análisis de Sentimientos
1) Extraer datos en tiempo real de Twitter usando Tweepy
( API de Twitter para Python )
captura.py
2) Almacenar en Mongo DB los datos obtenidos al usar Tweepy
almacenar.py
3) Usar el API de MeaningCloud para analizar el sentimiento
de cada tweet almacenado previamente
analisis.py
Ofelia Cervantes
Análisis de Sentimientos
1. Crear cuenta de desarrollador en MeaningCloud.
2. Obtener clave de acceso al API de MeaningCloud.
3. Analizar tweets almacenados previamente en MongoDB
Ofelia Cervantes
Análisis de Sentimientos
Crear cuenta de desarrollador – datos generales
o Ingresar a la dirección:
https://www.meaningcloud.com/developer/create-account
o Llenar el formulario.
o Presionar “Create account”
Ofelia Cervantes
Análisis de Sentimientos
Crear cuenta de desarrollador - confirmar registro:
o Acceder a la cuenta de correo.
o Ingresar al correo de Meaning Cloud.
o Ingresar al enlace de confirmación.
Ofelia Cervantes
Análisis de Sentimientos
Obtener clave de acceso al API, para usarla después en el
script de Python:
 Ingresar a la dirección:
o https://www.meaningcloud.com/developer/
Ofelia Cervantes
Análisis de Sentimientos
Listos para analizar tweets !
 Crear función que realice petición http.
 Insertar clave de acceso.
Petición http
Ejemplo de la
respuesta http
desde la consola de
MeaningCloud
Ofelia Cervantes
Estructura del análisis de los datos generados
por MeaningCloud.
Al analizar tweets:
o status: Contiene información acerca del proceso de extracción.
•
•
•
•
code: Número que indica el estado del proceso.
msg: Una cadena de texto que describe el estado del proceso.
credits: Número que indica los créditos consumidos en la petición.
remaining_credits: Número de créditos restantes.
o model: modelo utilizado para la evaluación.
o score_tag: Indica la polaridad encontrada en el texto.
•
•
•
•
•
•
Ofelia Cervantes
P+: strong positive
P: positive
NEU: neutral
N: negative
N+: strong negative
NONE: without sentiment
Estructura del análisis de los datos generados
por MeaningCloud.
Al analizar tweets:
o agreement: Este campo indica el acuerdo entre los
sentimientos detectados en el texto.
• AGREEMENT: Los elementos tienen la misma polaridad.
• DISAGREEMENT: Existe desacuerdo entre la polaridad de los
elementos.
o subjectivity: Indica la subjetividad en el texto.
• OBJECTIVE: El texto no tiene marcas de subjetividad.
• SUBJECTIVE: El texto tiene marcas subjetivas.
o confidence: Representa la confianza asociada con el análisis
de sentimientos realizada al texto.
• Su valor es un numero entero en el rango de 0-100.
o irony: Indica la ironía en el texto.
• NONIRONIC: El texto no tiene marcas de ironía.
• IRONIC: El texto tiene marcas de ironía.
Ofelia Cervantes
Análisis de Sentimientos
Para analizar los tweets almacenados en MongoDB:
 Iterar sobre la colección: Tweets
o Realizar conexión con MongoDB.
o Iterar Tweets no analizados.
Ofelia Cervantes
Análisis de Sentimientos
Enviar a MeaningCloud, para procesar uno por uno:
 Analizar cada Tweet con MeaningCloud.
 Decodificar la respuesta Http.
 Almacenar el análisis de sentimiento.
Ofelia Cervantes
Análisis de Sentimientos
Hemos terminado el script analisis.py
 Ahora, solo falta guardar el script que hemos creado:
Ofelia Cervantes
Análisis de Sentimientos
 Para terminar, guardemos el script denominado analisis.py en
la carpeta de Analisis Sentimientos:
•
•
Seleccionar la carpeta “AnalisisSentimientos”.
Nombrar al archivo “analisis.py”
Ofelia Cervantes
Análisis de Sentimientos – Tweets en Mongo
Para analizar los tweets, con el script analisis.py:

o
Abrir una nueva ventana de línea de comandos.
– Windows: Presionar la combinación de teclas “Windows+R” e
Ingresar la palabra “cmd” y presionar enter.
– MacOSX: Presionar la combinación de teclas “CMD+Espacio” e
Ingresar la palabra “terminal” y presionar enter.
o
o
Acceder al directorio “AnalisisSentimientos”
Ejecutar el comando “python analisis.py”
!Recuerde que tiene que tener corriendo el servidor de MongoDB (mongod)
Ofelia Cervantes
Resumen
Aprendimos a:

Extraer tweets usando Tweppy (API para Python)
 Almacenar los tweets en MongoDB
 Analizar cada tweet almacenado en MongoDB,
usando MeaningCloud
Ofelia Cervantes
Información útil
Twitter API – Error Codes:
https://dev.twitter.com/streaming/overview/connecting
Tweet Structure:
https://dev.twitter.com/overview/api/tweets
Products - Meaning Cloud :
https://www.meaningcloud.com/products
Sentiment analysis en consola – Meaning Cloud:
https://www.meaningcloud.com/developer/sentiment-analysis/console/2.1
Code Errors – Meaning Cloud:
https://www.meaningcloud.com/developer/documentation/error-codes
Ofelia Cervantes
[email protected]
Ofelia Cervantes