Reporte Final PT2
Reporte Final PT2
Reporte Final PT2
Academia Telemática
PROYECTO TERMINAL I
Presenta:
Asesoras:
Julio 2022
CONTENIDO
Índice
Resumen..............................................................5
Palabras clave:..................................................5
Abstract.............................................................5
Capítulo 1. Introducción.............................................5
Propuesta de solución................................................9
Alcances............................................................12
Justificación.......................................................13
Objetivo general....................................................14
Objetivos específicos...........................................14
Twitter.........................................................22
Líder de opinión................................................23
Minería de datos................................................23
Análisis de texto...............................................24
Aprendizaje automático..........................................24
Clasificación...................................................26
Página | 65
Teoría de grafos................................................29
Capítulo 4 Análisis.................................................31
Requerimientos..................................................31
Requerimientos Funcionales......................................31
Requerimientos no funcionales...................................32
Análisis de Herramientas........................................33
Capítulo 5 Diseño...................................................47
Diagrama de clases..............................................47
Diagrama de Actividades.........................................55
Diagrama de secuencia...........................................57
Implementación......................................................59
Conclusiones........................................................64
Referencias.........................................................69
Página | 65
Índice de ilustraciones
ILUSTRACIÓN 1 GRAFICA DE LA DISTRIBUCIÓN DE USUARIOS EN TWITTER...............6
ILUSTRACIÓN 2. PREFERENCIAS DE PRIVACIDAD DE LOS USUARIOS EN TWITTER....6
ILUSTRACIÓN 3. TIPOS DE USUARIOS EN TWITTER..................................................................7
ILUSTRACIÓN 4 DIAGRAMA DE BLOQUES DEL SISTEMA.................................................11
ILUSTRACIÓN 5 TÉCNICAS USADAS EN MINERÍA DE DATOS...........................................25
ILUSTRACIÓN 6 EJEMPLO DE ENCONTRAR EL CENTRO DE UN GRAFO POR
ALGORITMO DE FLOYD....................................................................................................30
ILUSTRACIÓN 7. DIAGRAMA CASO DE USO..........................................................................32
ILUSTRACIÓN 8 MAPA DE LA ZONA A ESTUDIAR...............................................................44
ILUSTRACIÓN 9 DIAGRAMA DE CLASES...............................................................................53
ILUSTRACIÓN 10 DIAGRAMA DE ACTIVIDADES PARTE DEL SISTEMA...............54
ILUSTRACIÓN 11 DIAGRAMA DE ACTIVIDADES MODULO WEB......................55
ILUSTRACIÓN 12 DIAGRAMA DE ACTIVIDADES PARTE DEL SISTEMA...............56
ILUSTRACIÓN 13 DIAGRAMA DE ACTIVIDADES PARTE WEB.......................57
ILUSTRACIÓN 14 BASE DE DATOS EN GRAFO......................................................................58
Índice de tablas
TABLA 1 COSTOS DE HASHTRACKING...................................................................................16
TABLA 2 COSTOS DEL USO DE LA HERRAMIENTA AUDIENSE DE SOCIALBRO...........18
TABLA 3 TABLA COMPARATIVA DE LOS TRABAJOS ENCONTRADOS Y PARECIDOS.21
TABLA 4. CASO DE USO "CONSULTAR TEMA DE TENDENCIA"........................................33
TABLA 5 TABLA CASO DE USO "HACER CLASIFICACIÓN"................................................33
TABLA 6 TABLA CASO DE USO "VISUALIZAR"....................................................................35
TABLA 7 TABLA DE CASO DE USO "DESCARGAR TUITS Y PERFILES"...........................36
TABLA 8 TABLA DE CASO DE USO "GENERAR GRAFO".....................................................37
TABLA 9 TABLA DE CASO DE USO "OBTENER CENTROIDES Y ORIGEN DE LA
INFORMACIÓN"...................................................................................................................38
TABLA 10 TABLA COMPARATIVA DE LAS LIBRERÍAS QUE ADMINISTRAN LAS API´S
DE TWITTER.........................................................................................................................42
TABLA 11. CONTENIDO DE UN NODO.....................................................................................59
TABLA 12. CRONOGRAMA DE ACTIVIDADES PT2...............................................................62
Página | 65
Resumen
Este proyecto tiene como finalidad realizar la ponderación y
evaluación de la relación que existe entre temas de tendencia,
fuente y líderes de opinión en la red social Twitter. A través de
un análisis temporal de los temas de tendencia y la obtención de
los líderes de opinión mediante el uso de procesamiento de
lenguaje natural, minería de datos y análisis de grafos.
Palabras clave:
Twitter, grafos, minería de datos, aprendizaje automático.
Abstract
The purpose of this project is to assess and evaluate the
relationship between trends, sources and opinion leaders in the
social network Twitter. Through a temporal analysis of the themes
of tendency and the obtaining of opinion leaders using natural
language processing, data mining and graph analysis.
Capítulo 1. Introducción
En los últimos años las redes sociales se han convertido en un
importante medio de comunicación.
Página | 65
El símbolo #, conocido como hashtag, es utilizado en redes sociales
para marcar las palabras clave de las publicaciones.
Enriqueciéndose en la web, el hashtag es una forma de etiquetar
o clasificar los mensajes de Twitter, de tal forma que se puedan
agrupar alrededor de un tema en común. Si es una frase ésta tiene
que escribirse junta y sin espacios. Un seguidor en Twitter es un
usuario que recibe las actualizaciones de los estados que publicas,
entonces cuantos más seguidores tenga un usuario mayor alcance
tendrán las publicaciones que emita.
USUARIOS DE TWITTER
MujeresHombresInstituciones
15%
26%
59%
Página | 65
También nos indica que porcentaje de los usuarios prefieren
mantener sus perfiles privados como se muestra en la ilustración 2.
PREFERENCIAS DE PRIVACIDAD
PrivadoPublico
23%
77%
Comunidad en Twitter
No reconocida 18.8%
Politicos3%
Futbolistas 1%
Funcionarios publicos5%
Academicos 1%
Medios de comunicación4%
Periodistas
33%
Artistas 35%
Los líderes de opinión no sólo son aquellos que tienen más número
de seguidores, sino además de los que surgen las ideas. Por
ejemplo, el miembro más importante de un grupo criminal no suele
ser el que tiene la mayor cantidad de contactos ya que vulneraría
su seguridad, pero seguramente tiene conexión con el elemento que
tiene más enlaces.
Página | 65
un estudio que relacione la información y los elementos que la
generan.
Página | 65
Por lo señalado anteriormente surge la siguiente pregunta de
investigación:
Propuesta de solución
Teniendo en cuenta que ya existen varios trabajos relacionados con
la clasificación de tuits a partir del análisis de texto, esta
solución se enfoca en analizar la relación que existe entre los
usuarios y los tuits haciendo un análisis estructural de la red.
Extracción
Página | 65
información de usuario. La primera se refiere a los tuits de los
usuarios en la
Página | 65
Ciudad de México y la segunda a los seguidores y retweets que
obtuvo cada tuit. La extracción será hará por medio de un script
que busque los temas de tendencia por día para proceder a
descargar los tuits por tema de tendencia. Esta información se irá
almacenando en una base de datos de tipo NoSQL.
Filtrado
Transformación de datos
Análisis
Página | 65
Presentación
Página | 65
Alcances
El resultado final del análisis de los líderes de opinión se verá
representada con gráficas por tema de tendencia, como primer
limitante se encuentran las contracciones de palabras que utilizan
los usuarios, al no poder delimitar los parámetros se debe
considerar qué palabras son importantes dentro de cada tuit para
obtener la información esencial del que habla sin perder el sentido
de la oración, como área de trabajo se decidió que la zona de
estudio será la ciudad de México al tener la mayor cantidad de
usuarios activos en la red social, delimitado en el centro
histórico con un radio de
35 km a la redonda.
Página | 65
Como primeros resultados presentables en proyecto terminal 1 serán
todos los datos almacenados descargados por los robots de al menos
3 meses, debido a que el sistema para el análisis se estará
implementando y probando durante proyecto terminal 2 para
presentar sus resultados completos.
Justificación
De acuerdo con el artículo ¿Por qué los líderes de opinión
influyen ahora más que nunca? [29] las discusiones que antes se
limitaban a un puñado de personas alrededor de una mesa, ahora es
a escala global a través de Facebook, Twitter, wiki y miles de
redes. Cualquier persona puede opinar, pero los más influyentes
son aquellos a los que la gente escucha, aprende de ellos y
adoptan medidas en función de sus opiniones.
Objetivo general
Realizar un sistema que sea capaz de identificar a los líderes de
opinión en temas de tendencia en Twitter y de rastrear el origen
de la información con técnicas de minería de datos.
Objetivos específicos
Página | 65
• Generar un subgrafo para cada tema de tendencia, donde cada
usuario que haya participado en el tema de tendencia será un nodo
y los arcos serán la relación entre los usuarios.
Página | 65
• Se medirá la influencia de un usuario por el número de
seguidores, la cantidad de favoritos que tengan sus tuits y las
conexiones que tenga con otros tuits. Las conexiones podrán ser
retweets o respuestas.
Página | 65
Los costos de esta herramienta Hashtracking se muestran en la
tabla 1:
Seguidores 3 6 15 40 100
Pared de
Básica Básica Básica Básica Moderada
transmisión
Cantidad de
Ilimitados Ilimitados Ilimitado Ilimitado Ilimitado
archivos
Página | 65
de Twitter a un ambiente de TV interactiva”, se utiliza la red social
Página | 65
aplicada con una programación de TV, esto para mostrar tuits con
información del programa, del elenco, menciones o por usos de
hashtags [6].
Página | 65
final separa a los usuarios por la forma en la que interactuación
con la información buscada siendo espectador, comentador,
comisario, emprendedor y difusor. El difusor es el de interés ya
que son los que gozan de mayor popularidad e influencia. Este
análisis por esta aplicación es obteniendo información de la
audiencia, se califica la audiencia y la relación con los segmentos
del cliente de la aplicación, tratando de entender las actitudes,
comportamientos y hábitos, contenido de la información (usando
técnicas de investigación elaboran comunicaciones altamente
dirigidas, controlan a dónde va la información y los mensajes, como
se comparte y como entra a grupos de usuarios más cerrados),
contexto (comprenden el entorno de mercado del cliente para poder
identificar como implementar la información a divulgar, logrando
esto, evitan audiencia que genere ruido o estorbe la propagación de
la información) e impacto (por medio de modelos estadísticos
demuestran el impacto comercial y la recompensa financiera del
programa frente al costo, cambios, progreso y el nuevo impacto en
la comunidad), los costos de esta aplicación no están disponibles.
Página | 65
es la más conocida debido a que tiene dos segmentos. Social Media
Marketing
Página | 65
la cual planifica, ejecuta y analiza campas en una sola plataforma
de red social y el segmento Social Costumer Service la cual hace
que los usuarios se involucren en la campaña en el momento que se
les imponga. Esta herramienta usa una fuente de inteligencia
artificial y aprendizaje automático, lo que facilita la gestión,
control de la comunidad y mensajería de las redes sociales. La
herramienta proporciona un puntaje el cual es proporcional a su
nivel de influencia, este puntaje se basa en diversas variables
como son número de seguidores, calidad y cantidad de interacción
con los demás usuarios, las menciones que se hacen, los precios de
uso no son públicos, se solicitan los datos del usuario/empresa
para hacer una cotización personalizada, se divide en dos paquetes
1.- Comunidades y 2.- Gestión de redes sociales, esta última se
divide en publicación social o respuesta social, la publicación
social es cuando se publica el contenido para impulsar un tema y
la respuesta social administra y analiza cómo responde la
comunidad a las publicaciones o a los temas indicados.
Página | 65
Tabla 3 Tabla comparativa de los trabajos encontrados y parecidos.
Análisis automático de
opiniones de productos ✅ ❌ ✅ ❌ ❌
en redes sociales
Extracción y
clasificación de la ❌ ✅ ❌ ❌ ✅
información del tráfico
vehicular a través de
twitter y su
visualización en Google
Maps
Integración de la red
social de Twitter a un ❌ ✅ ❌ ❌ ✅
ambiente de TV
interactiva
Hashtracking
✅ ✅ ❌ ❌ ✅
Estudio de tendencias
diarias en Twitter ❌ ✅ ❌ ❌ ✅
Sistema de análisis
para la ponderación de ✅ ✅ ❌ ✅ ✅
usuarios de twitter en
temas de tendencia
✅ ✅ ❌ ❌ ✅
Followerwonk
SocialBro
❌ ✅ ❌ ✅ ✅
Tweetlevel
❌ ✅ ❌ ❌ ✅
Topsy
❌ ✅ ✅ ❌ ✅
✅ ✅ ❌ ❌ ✅
Lithium/Klout
Página | 65
Capítulo 3 Marco teórico
En esta sección damos una breve explicación de los recursos,
conceptos, herramientas y tecnologías a usar a lo largo del
proyecto.
Página | 65
Líder de opinión
Minería de datos
Página | 65
modelos y análisis de datos (minería de datos), evaluación,
difusión y la presentación y/o utilización de los modelos.
Página | 65
Además, el proceso de extracción de conocimiento incorpora muy
diferentes técnicas como, árboles de decisión, regresión lineal
redes neuronales, técnicas bayesianas, etc., de diversos campos
como el aprendizaje automático y la inteligencia artificial
[11].
Análisis de texto
Aprendizaje automático
Clustering
Reglas de asociación
Predicción
Clasificación
Página | 65
Redes neuronales
Página | 65
base de datos no relacional que utiliza un método simple de
clave- valor para almacenar datos, almacena datos como un
conjunto de pares clave-valor en los que una clave sirve como un
identificador único [34]. Por ejemplo: Google BigTable, Amazon
Dynamo, Cassandra, Voldemort, HBase.
Teoría de grafos
Página | 65
Subgrafo
Centro de un Grafo
Página | 65
Ilustración 6 Ejemplo de encontrar el Centro de un Grafo por algoritmo de Floyd
Página | 65
Capítulo 4 Análisis
Es este capítulo se muestran los requerimientos identificados,
tanto funcionales como no funcionales. Posteriormente se hace el
análisis de las herramientas a emplear, así como de los algoritmos
necesarios para la elaboración de este proyecto.
Requerimientos
Requerimientos Funcionales
Funcionales:
RF1 El sistema debe tener una propiedad o clase para descargar los
tuits y almacenarlos.
Página | 65
Requerimientos no funcionales
Análisis de Herramientas
Página | 65
administrar usuarios y seguidores, solicitar información
sobre actividad de una cuenta.
Productos de datos
API de anuncios
Página | 65
Tabla 10 Tabla comparativa de las librerías que administran las API´s de Twitter
Métodos
Métodos para Métodos de Métodos de
Lenguaje Librería de
obtener Trends Usuarios timeline
búsqueda
Tiene distintos Permite
métodos que realizar Nos permite ver
permiten obtener búsqueda la lista de Permite ver
C++ Twitcurl los trends en un por frases seguidores y a el timeline
día específico, además de quien sigue el de un usuario
de una semana o guardarlas usuario
los actuales búsquedas
Searchres
Usersresource Timelinesres
Trendsresources ource(med
Java Twitter4J s(mediante ources(media
(mediante http) iante
http) nte http)
http)
Realiza
la
Se pueden Accede al
búsqueda Permite
obtener los timeline de
de tweets acceder a la
trends en un un usuario y
por frase información
Tweepy periodo de devuelve los
y en un de un usuario
tiempo resultados
periodo siempre que
especificado en formato
de tiempo sea pública
por el usuario json
específic
o
Tiene una
Devuelve el
Tiene una clase Realiza clase que se
Python timeline de
que se encarga búsqueda encarga de
Python Twitter un usuario
del manejo de por obtener
Tools en formato
los trends hashtag información
json
de usuarios
Realiza
la
Se pueden Accede al
búsqueda Permite
obtener los timeline de
de tuits acceder a la
trends en un un usuario y
por frase información
Birdy periodo de devuelve los
y en un de un usuario
tiempo resultados
periodo siempre que
especificado en formato
de tiempo sea pública
por el usuario json
específic
o
Se puede ver que todas las librerías son muy parecidas y esto es
por que acceden a la API de Twitter así que se decidió usar la
librería tweepy debido a que cuenta con mayor documentación y su
comunidad es más grande, además también tomamos en cuenta que
Python es un lenguaje muy usado en la comunidad de análisis de
datos en redes sociales.
Página | 65
Descarga y análisis de datos descargados de Twitter
Página | 65
Ilustración 8 Mapa de la zona a estudiar
Página | 65
in_reply_to_status_id: Indica si el tuit actual es respuesta
de algún otro emitido con anterioridad.
user:
Página | 65
De acuerdo con una publicación de IBM “Introducción a la ciencia de
datos” [19], en una encuesta del 2016 se descubrió que los
científicos de datos dedican el 80% de su tiempo a recolectar,
limpiar y preparar datos para su uso en el aprendizaje automático.
El 20% restante gasta datos de minería o modelado mediante el uso
de algoritmos de aprendizaje automático. Debido a esto, mientras
más alto sea el nivel de datos se pueden clasificar los datos en
tres categorías: Estructurado, semiestructurado y no estructurado
(figura 1). Los datos estructurados son datos altamente organizados
que existen dentro de un contenedor como puede ser una base de
datos o hasta un archivo de valores separados por comas (CSV). Los
datos no estructurados carecen de cualquier estructura de contenido
(por ejemplo, una secuencia de audio o texto en lenguaje natural).
En el medio se encuentran los datos de semiestructura, que pueden
incluir metadatos o datos que pueden procesarse más fácilmente que
los no estructurados usando etiquetado semántico.
Modelo Geométrico
Página | 65
Minimalidad: δ(a,b) ≥ δ(a,a) = 0
•Teoría de conjuntos
Sim(a,b) = f(a ∩ b, a – b, b – a )
Página | 65
La distancia entre dos cadenas, no se expresa exactamente de la
similitud entre ellas ya que una magnitud puede calcularse a
partir
Página | 65
de la otra. Una distancia real d ϵ [0,1], donde 0 indica que
ambas cadenas son idénticas y 1 que no tienen ni un solo
carácter en común, equivalente a una similitud s= 1-d, lo que
quiere decir que a mayor distancia menor es la similitud y
viceversa.
Página | 65
Algoritmos de difusión en grafos y búsqueda de centroides en grafos dirigidos
Algoritmo de Prim del árbol de expansión
Página | 65
Teniendo un grafo dirigido ponderado de N nodos no aislados, sea X
el nodo inicial. Un vector D de tamaño N guardará al final del
algoritmo las distancias desde X hasta el resto de los nodos.
2.- Se iguala a con X para indicar que es el nodo actual que trabajar.
Página | 65
Algoritmo de Floyd
observar que el camino mínimo para ir del vértice i al vértice j o bien no usa el vértice k en
cuyo caso. Dk[i,j] = Dk-1[i,j] o bien lo usa en cuyo caso Dk[i,j] = Dk-1[i,k]+ Dk-1[i,k]. Es
decir Dk[i,j]= minimo(Dk-1[i,j], Dk-1[i,k]+Dk-1[k,j]). La matriz Dn será la matriz de
caminos mínimos del grafo.
Algoritmo K-Means.
Página | 65
Capítulo 5 Diseño
A continuación, se muestra el diseño del sistema a través del diagramado UML, compuesto por
diagramas de clases, actividades y secuencia.
Diagrama de clases
P á g i n a 56 | 102
Diagrama de casos de uso
P á g i n a 57 | 102
Tabla 4. Caso de uso "Consultar tema de tendencia"
Descripción:
Permite al usuario seleccionar el tema de interés en la página web.
Actores:
Usuario final.
Precondiciones:
El usuario debe abrir página web del sistema.
Flujo Normal:
1.-El actor introduce la página web.
2.-Cuando se carga la página se mostrarán los temas de tendencia
de análisis.
3.-El actor selecciona un tema de tendencia que sea de su interés
4.-Se envía la información al caso “Hacer clasificación” y se
espera respuesta.
5.-Recibida la información del caso “Hacer clasificación” se
solicita el proceso de “Visualizar” y se espera respuesta.
6.-Con las respuestas se le muestra al actor los resultados de una
manera gráfica en la página web.
Flujo Alternativo:
1.-Si no hay respuesta del caso “hacer clasificación” se avisa al
actor y se guarda un registro del intento.
2.-Se comprueba que los datos recibidos por el proceso
“Visualizar” sean correctos, si no lo son, se avisa al actor y se
da un tiempo para volver a intentarlo.
P á g i n a 58 | 102
Tabla 5 tabla caso de uso "Hacer clasificación"
Descripción:
Realiza la clasificación de los temas de tendencia por tópicos
Actores:
Caso de uso “Consultar tema de tendencia”.
Precondiciones:
Se debe haber realizado el análisis de los tuits por cada tema de
tendencia.
Flujo Normal:
1. Obtener título del tema de tendencia.
2. Mediante algoritmos de análisis de textos se asignará una
etiqueta al tema de tendencia.
3. De acuerdo con la etiqueta asignada se asignará a una categoría.
4. De no existir una categoría se podrá decidir si crear una nueva
categoría o dejar el tema en la categoría sin clasificar. Esto se
definirá en la etapa de entrenamiento del sistema.
Flujo Alternativo:
1. Si el título del tema de tendencia no se puede reconocer se
solicitará nuevamente.
2. Si aún no es reconocible se enviará un informe al administrador
y el tema pasara a la sección sin clasificar.
P á g i n a 59 | 102
Tabla 6 Tabla caso de uso "Visualizar"
Nombre: Visualizar
Descripción:
Permite al usuario visualizar los resultados obtenidos de nuestro
análisis del tema de interés en la página web.
Actores:
Usuario final.
Precondiciones:
El usuario debe abrir página web del sistema.
Flujo Normal:
Se reciben datos del caso “Consultar tema de tendencia”.
Se realiza una conexión con la base de datos.
Se realiza l búsqueda de la información a partir de los datos obtenidos
del caso “Consultar tema de tendencia”.
Se presenta el grafo del tema de tendencia, el o los líderes de opinión
en ese tema y el origen de la información.
Flujo Alternativo:
1.-Si no hay respuesta de la base de datos se avisa al actor y se
guarda un registro del intento.
2.-Se comprueba que los datos recibidos por el proceso “Consultar tema
de tendencia” sean correctos, si no lo son, se avisa al actor y se da
un tiempo para volver a intentarlo.
P á g i n a 60 | 102
Tabla 7 Tabla de caso de uso "Descargar tuits y perfiles"
Descripción:
Realiza la descarga de los tuits relacionados con un tema de tendencia
y el perfil de los usuarios que participaron en el.
Actores:
Objeto del sistema
Precondiciones:
Debe haberse autenticado en el API de Twitter.
Debe tener un tema de tendencia para la búsqueda.
Flujo Normal:
Establecer la zona geográfica para la búsqueda y descarga.
Buscar y guardar, los tuits relacionados con el tema de tendencia en
cuestión.
Obtener una lista de los usuarios que participaron en el tema a partir
los tuits guardados.
Obtener el perfil de cada usuario que se tiene en la lista anterior.
Flujo Alternativo:
Si no hay respuesta del servidor de Twitter se espera 15 minutos y se
vuelve a intentar 3 veces más en intervalos de 1 minuto.
Después de esperar si aún no hay respuesta se manda un aviso al
administrador para verificar que no existan otros errores que el
sistema no puede corregir por él mismo.
P á g i n a 61 | 102
Tabla 8 Tabla de caso de uso "Generar grafo"
Descripción:
Genera el grafo a partir de los tuits y lista de usuarios obtenidos en
el caso “Descargar tuits y perfiles”
Actores:
Objeto del sistema
Precondiciones:
Necesita la lista de tuits y usuarios que participaron en cada tema de
tendencia.
Flujo Normal:
Realiza una conexión con el gestor Neo4j.
Genera los nodos a partir de los tuits.
Genera las conexiones a partir de los retweets, favoritos y lista de
seguidores (cada uno es un tipo de arista distinto).
Flujo Alternativo:
Si existiera error en la conexión con el gestor de la base de datos, se
realizarán 2 intentos más de conexión en intervalos de 1 minuto.
De no poderse realizar la conexión con el gestor Neo4j se enviará un
reporte del fallo al administrador del sistema.
P á g i n a 62 | 102
Tabla 9 Tabla de caso de uso "Obtener centroides y origen de la información"
Descripción:
Realiza un análisis sobre cada grafo para obtener los líderes de
opinión y el origen de la información de cada tema de tendencia.
Actores:
Objeto del sistema
Precondiciones:
Requiere de una conexión con el gestor Neo4j y que existan en él grafos
de los temas de tendencia.
Flujo Normal:
Realiza un análisis mediante algoritmos de recorrido en grafos para
encontrar a los nodos más relevantes dentro del tema de tendencia.
A partir de los nodos más relevantes obtiene al o los usuarios que
serán clasificados como líder de opinión dentro de ese grafo.
Mediante algoritmos de difusión en grafos se quiere encontrar el origen
de la información en cada tema de tendencia.
Flujo Alternativo:
De no obtenerse un resultado convincente se recorrerá el grafo usando
otros algoritmos.
Página 54 | 65
Diagrama de Actividades
Página 55 | 65
El usuario final accederá a una interfaz web que servirá para
presentar los resultados del análisis realizado por nuestro
sistema a los temas de tendencia en la Ciudad de México, la figura
5 muestra el diagrama de actividades para la interfaz web.
Página 56 | 65
Diagrama de secuencia
Página 56 | 65
Ilustración 13 Diagrama de actividades parte web
Página 57 | 65
● Arista Follows: Indica que el usuario que emitió ese tweet
es seguidor del nodo al que apunta.
● Arista Retweet_to: Indica que ese nodo es un retweet (copia)
del nodo al que apunta.
● Arista Anwser_to: Indica que ese nodo es una respuesta del
nodo al que apunta.
Página 58 | 65
del archivo json que nos da Twitter con su API de descarga. Estos
campos clave nos ayudarán a asignarle un peso a cada nodo para que
el sistema defina cuales son los nodos con mayor influencia dentro
del grafo.
{"tweet_id": "1054997435662123008",
"user_id": 2946980076,
"text": "RT @mario_delgado1: La #ConsultaNAICM es el inicio de una nueva forma de tomar las decisiones más im
"RT_id": "1054937160086806528",
"favorite_count": 0,
"retweet_count": 124 "zone": "C1",}
Implementación
Datos generales
Página 59 | 65
Ilustración 15 Nuevas subzonas para la descarga de tuits
Página 60 | 65
Ilustración 16 Registros del 2018 para acceder a la API de Twitter
Página 61 | 65
de licenciatura por lo que solo cubríamos los requisitos de la
cuenta básica, cabe mencionar que para obtener esta cuenta fue
necesario mandar documentos y explicar detalladamente como y que
funciones son las que estábamos por utilizar, también aclarar con
que fines queríamos hacer el análisis de la información que nos
brindarían y si había una compañía o corporación involucrada.
Descarga de tuits
Página 62 | 65
1.-Por medio de las keys se identifica ante la API y
empieza a consumir sus funciones para obtener los
recursos de los tuits.
consumer_key ='9VkHwII39Rsm6gRNW7WEfocYP'
consumer_secret='k37XqkCvQBIENvO0TDoHK284X8ae3hdCkPH9lE5LsAiMJ7Aao0'
access_token='1486853876292542464-FMa0uYCCjiRSRCvYGel3vmzUICbxpH'
access_token_secret='MGReUSafE6tpzTKekLWty3tR73iy6BeUJeoWzKErDx067'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth, wait_on_rate_limit=True)
Página 65 | 65
barrido del arreglo tuit por tuit y limpiamos la propiedad “Text”
de emojis y caracteres especiales.
Base de datos
Página 66 | 65
Ilustración 19 Nuevos términos de servicio y política de privacidad
Página 67 | 65
Ilustración 20 Nuevas características en las cuentas de Neo4J
Página 68 | 65
Ilustración 21 Correo al dar de alta la cuenta en Azure DB
Página 69 | 65
Ilustración 22 Creación de una base de datos en Azure Cosmos DB - Gremlin
Página 70 | 65
Al momento de rediseñar la base de datos para implementarla en
Azure faltaban datos clave para implementar las aristas de retuit y
principalmente si un usuario seguía a otro cuando tenía relación
sus tuits, para esto necesitábamos si un tuit era un tuit original,
si era un retuit o respuesta a otro tuit.
2.- Por medio de una función, hacemos que cada que cambiemos de
tema de tendencia, se cambie también la instancia en la que debe
guardar los datos. Usando la función client.Client para generar
el objeto con el que nos identificaremos en Azure, donde “n”
corresponde a valores de 0 a 9.
cliente = client.Client('wss://prueba2022.gremlin.cosmos.azure.com:443/', 'g',
username="/dbs/tendencias/colls/tendencia"+ str(n) +"",
password="pTxq2nEit9Ce2nVBmumD9FQfsw6ytcYcWHCVwoJsKoZueQcOqhKYrWm5yCbjwPHwFiSmCA
5eqcQZYYEoOKbtAQ==",
message_serializer=serializer.GraphSONSerializersV2d0())
else:
data.append("g.addV('tuit').property('id', '"+ str(tuit['id'])
+"').property('creado','"+tuit['created_at']+"').property('text','"+tuit['text']
+"').property('user_id','"+ str(tuit['user']['user_id'])
+"').property('user_nombre','"+tuit['user']['name']
+"').property('user_followers',"+str(tuit['user']['followers_count'])
+").property('pk', '1')")
Página 73 | 65
elif (tuit['idTipo'] ==2):
data2.append("g.V('"+ str(tuit['id']) +"').addE('retuit_de').to(g.V('"+
str(tuit['retweeted_status']['id']) +"'))")
if (relac != {}):
if (relac['following']):
data2.append("g.V('"+ relac['idTuit'] +"').addE('sigue').to(g.V('"+
relac['idApunta'] +"'))")
if (relac['followed_by']):
data2.append("g.V('"+ relac['idApunta'] +"').addE('sigue').to(g.V('"+
relac['idTuit'] +"'))")
Página 74 | 65
y 30 min.
20 días y 20
30 mil tuits 150*4 = 600 50 horas
hrs.
Página 76 | 65
Página 77 | 65
Página 78 | 65
Página 79 | 65
sdfsdfsdfsdf
dSubifsdfsdfsdfsdfsdf
sd
Página 80 | 65
asd
Página 81 | 65
Conclusiones
Para poder hacer uso de la API de Twitter se tiene que realizar un
registro de aplicación, donde se detalle el uso que se le dará a la
información obtenida de la red social, aun teniendo algunas
limitaciones en el servicio gratuito ha sido suficiente para
comenzar el proyecto. Se utilizarán las categorías “Cuentas y
usuarios” y “Tweets” para obtener la información de los usuarios
con respecto a sus publicaciones y para acceder a los tuits
públicos disponibles en la plataforma Twitter, se filtrarán por dos
parámetros, localización y tema de tendencia para realizar una base
de datos con la información a analizar en un futuro.
Página 83 | 65
hace fácil un desarrollo al no tener que usar toda la herramienta
de no ser necesario.
Página 84 | 65
Cronograma de actividades Proyecto terminal II
Tabla 12. Cronograma de actividades PT2
Nombre de la Resultados
No. Objetivos Responsable
actividad esperados
1 Limpieza de Implementar un sistema que Sistema para la Alan
texto realice la extracción de extracción de Sánchez
atributos clave de cada atributos clave.
tuit en los temas de
tendencia.
2 Normalización Implementar un sistema que Sistema para la Arturo
de texto normalice el texto de cada normalización de Ortiz
tuit, además de pasar el texto.
texto a su representación
matricial.
3 Información Implementar un sistema que Sistema para la Alan
de usuarios obtenga la lista de obtención de lista Sánchez
seguidores de cada usuario de seguidores y
y genere un archivo con usuarios que
los usuarios que participaron en
participaron en cada tema cada tema.
de tendencia.
4 Generar Implementar un sistema que Sistema para Alan
subgrafos genere un subgrafo con generar subgrafos. Sánchez
todos los tuits Arturo
descargados de cada tema Ortiz
de tendencia.
5 Obtención de Implementar un algoritmo Sistema para Alan
líderes de que recorra cada subgrafo encontrar al o los Sánchez
opinión y encuentre el o los líderes de opinión
líderes de opinión en cada en cada tema de
uno de los temas de tendencia.
tendencia y guarde los
resultados.
6 Origen de la Implementar un sistema que Sistema para Arturo
información recorra cada subgrafo para encontrar el origen Ortiz
encontrar el origen de la de la información
información y guarde los en cada tema.
resultados.
7 Conjuntar los Conjuntar los sistemas Sistema conjunto Alan
sistemas antes implementados para que realice las Sánchez
que realicen sus funciones tareas de forma Arturo
de forma automática. automática. Ortiz
8 Interfaz web Implementar un sistema web Interfaz web. Arturo
para presentar la Ortiz
información obtenida del
análisis.
Página 85 | 65
Referencias
1. Carlos Arcila Calderón, Elias Said Hung, Diciembre (2012).
Factores que inciden en la variación de seguidores en los
usuarios top20 más vistos en twitter en américa latina y medio
oriente. Venezuela. Revista Interciencia 2012 vol. 37.
2. Notimex. (16 de 03 de 2016). Twitter tiene 35.3 millones de
usuarios en México. El universal.
3. A.L. Ortiz, O.E Pérez, E. Vargas, Estudio de tendencias diarias
en twitter,Trabajo de fin del Grado de Ingeniería Informática,
Madrid,España: Universidad Complutense Madrid, 2014-2015.
4. B. Sriram, D. Fuhry, E. Demir, H. Ferhatosmanoglu, and M.
Demirbas, Short text classification in twitter to improve
information filtering, in Proceeding of the 33rd international
ACM SIGIR conference on Research and development in information
retrieval, 2010
5. Bautista Ruiz Agustín, Julio (2012). Extracción y clasificación
de información del tráfico vehicular a través de Twitter y su
visualización en Google Maps. Ciudad de México. UPIITA.
6. Saul Padilla Maya, Diciembre (2013). Integración de la red
social de Twitter a un ambiente de TV interactiva. Ciudad de
México, UPIITA.
7. H. Librado, Enero (2016),Análisis automático de opiniones de
productos en redes sociales, Ciudad de México, CIC.
8. «hashtracking,» 2010. [En línea]. Disponible:
https://www.hashtracking.com/. [Último acceso: 02 11 2017].
9. Castañeda, L. & Gutiérrez, I. (2010). Redes sociales y otros
tejidos online para conectar personas. Aprendizaje con Redes
Sociales. Tejidos educativos en los nuevos entornos. Sevilla:
MAD Eduforma
10. Martínez-Cámara, E., García-Cumbreras, M.A., Villena-Román,
J., & García-Morera, J. (2016). TASS 2015 - The The Evolution
of the Spanish Opinion Mining Systems. Procesamiento del
Lenguaje Natural, 56.
http://journal.sepln.org/sepln/ojs/ojs/index.php/pln/issue/view
/218.
11. C. Pérez López y D. Santín González, Minería de datos
técnicas y herramientas, Madrid,España: Thomson, 2007.
12. Wirth, N., Fagoaga, J. C. V., & Vieyra, G. Q. (1987).
Algoritmos y estructuras de datos (No. 04; QA76. 6, W56.).
Prentice-Hall Hispanoamericana.
Página 86 | 65
13. J. García Herrero y J. M. Molina López,2012 , «Técnicas de
análisis de datos,» Universidad Carlos III de Madrid, Madrid,
España.
14. Martín, S. Chávez , N. Rodríguez, A. Valenzuela y M. Murazzo,
«Bases de Datos NoSql en Cloud Computing,» de XV Workshop de
Investigadores en Ciencias de la Computación, Paraná,Argentina,
2013.
15. <<Algoritmos de Búsqueda en Anchura (BFS) y Búsqueda en
Profundidad (DFS) >> [En línea]. Disponible:
http://www.bibliadelprogramador.com/2014/04/algoritmos-de-
busqueda-en-anchura-bfs-y.html [Último acceso: 05 11 2017]
16. J. G. A. Figueroa. (2012 marzo 19)<<CAMINO MÁS CORTO:
ALGORITMO DE DIJKSTRA>> [En
línea]. Disponible:
https://jariasf.wordpress.com/2012/03/19/camino-mas-corto-
algoritmo-de-dijkstra/ [Último acceso: 05 11 2017]
17. J. A. MONDRAGÓN, L. A. HERRERA, C. F. FERNANDEZ. (2010
noviembre 23)<<ALGORITMO DE BELLMAN- FORD>> [En
linea] Disponible:
https://upcanalisisalgoritmos.wikispaces.com/file/view/BELLMAN-
FORD_GRUPO_5.pdf [Último acceso: 05 11 2017]
18. D. Pérez. <<Análisis y Diseño de Algoritmos>> [En linea]
Disponible:
http://delta.cs.cinvestav.mx/~adiaz/anadis/Graph2.pdf [Último
acceso: 05 11 2017]
19. Twiiter <<Información sobre las API de Twitter>> 2018 [En
línea] https://help.twitter.com/es/rules-and-policies/twitter-
api [Ultimo acceso: 30/08/2018]
20. M. T. Jones, «IBM Developer,» IBM, 01 FEBRERO 2018. [En
línea]. Disponible:
https://www.ibm.com/developerworks/library/ba- intro-data-
science-1/. [Último acceso: septiembre 2018].
21. M. C. V. y. A. S. M.D. Riba, «Aplicación de la Teoría de
Conjuntos Borrosos»
22. M. F. A. L. S. G. I. Z. M. Luis Joyanes Aguilar, Estructuras
de datos en C, Madrid: McGraw-Hill, 2005
23. Neo4j, «Neo4j,» 2018. [En línea]. Disponible:
https://neo4j.com/developer/get-started/. [Último acceso:
septiembre 2018].
24. <<Followerwonk>> 2018 [En linea] Disponible:
https://followerwonk.com/analyze [Ultimo acceso: 24/08/2018]
25. <<Audiense>> [En linea] Disponible:
https://audiense.com/solutions/ [Ultimo acceso: 25/08/2018]
Página 87 | 65
26. <<Edelman intelligence>> 2018 [En linea] Disponible:
https://www.edelmanintelligence.com/ [Ultimo acceso:
26/08/2018]
Página 88 | 65
27. <<Topsy>> 2013 [En línea] Disponible:
http://topsy.thisisthebrigade.com/ [Ultimo acceso: 29/08/2018]
28. <<Lithium>> 2018 [En línea] Disponible:
https://www.lithium.com/company/pricing/ [Ultimo acceso:
29/08/2018]
29. << ¿Por qué los líderes de opinión influyen ahora más que nunca?
>> 2011 [En línea] Disponible:
https://www.puromarketing.com/42/11072/lideres-opinion-
influyen-ahora-nunca.html [Ultimo acceso: 23/11/2018]
30. << ¿Cuánto contenido se genera por minuto en Twitter y Facebook?
>> 2014 [En línea] Disponible:
https://www.luismaram.com/cuanto- contenido-se-genera-por-
minuto-en-twitter-y-facebook/ [Ultimo acceso: 23/11/2018]
31. << ¿Cuáles son las redes sociales más usadas en México? >>
2017 [En línea] Disponible:
https://lifeandstyle.mx/tech/2017/05/30/cuales-son-las-redes-
sociales-mas-usadas-en-mexico [Ultimo acceso: 24/11/2018]
32. << ¿Cuánto cuesta un “trending topic” ?: la investigación de
la BBC que revela cómo hacen las empresas para manipular
“hashtags” y crear tendencias en Twitter >> 2018 [En línea]
Disponible: https://www.publimetro.com.mx/mx/bbc-
mundo/2018/03/05/cuanto-cuesta-un-trending-topic-la-
investigacion-de-la-bbc-que-revela-como-hacen-las-empresas-
para-manipular-hashtags-y-crear-tendencias-en-twitter.html
[Ultimo acceso: 24/11/2018]
33. << ¿Qué es MapReduce? >> 2012 [En línea] Disponible:
https://blogs.solidq.com/es/big-data/que-es-mapreduce/ [Ultimo
acceso: 25/11/2018]
34. << ¿Qué es una base de datos clave-valor? >>2018 [En línea]
Disponible: https://aws.amazon.com/es/nosql/key-value/ [Ultimo
acceso: 25/11/2018]
35. << ¿Qué es una base de datos de gráficos? >>2018 [En línea]
Disponible: https://aws.amazon.com/es/nosql/graph/ [Ultimo
acceso: 25/11/2018]
36. T. W. V. a. R. L. Davies, «Accelerating the Diffusion of
innovation using opinion leaders» JSTOR, 1999.
37. <<Lo que siempre quiso saber del API de Twitter y nunca se
atrevió a preguntar (actualizado en 2017)>> 2022 [En línea]
Disponible: https://www.barriblog.com/2017/10/lo-siempre-quiso-
saber-del-api-twitter-nunca-se-atrevio-preguntar-actualizado-
2017/ [Ultimo acceso: 28/02/2022]
38. << Twitter también vendió datos personales al investigador de
Cambridge Analytica >> 2018 [En línea] Disponible:
https://www.trecebits.com/2018/04/30/twitter-tambien-vendio-
datos-personales-al-investigador-relacionado-cambridge-
analytica/
Página 89 | 65
39. << Introducción a Gremlin API de Azure Cosmos DB >>
10/06/2022 [En línea] Disponible:
https://docs.microsoft.com/es-es/azure/cosmos-db/graph/graph-
introduction
40. << Inicio rápido: Creación de una base de datos de grafos en
Azure Cosmos DB mediante Python y Azure Portal >> 10/06/22 [En
línea]:https://docs.microsoft.com/es-es/azure/cosmos-db/graph/c
reate-graph-python
41.
42.
Página 90 | 65