recopilacion de´ tweets y medicion de la relevancia´

57
ESCOLA T` ECNICA SUPERIOR D’ENGINYERIA I NFORM ` ATICA Universitat Polit` ecnica de Val` encia Recopilaci ´ on de tweets y medici ´ on de la relevancia basada en la topolog´ ıa Trabajo Fin de Grado Grado en Ingenier´ ıa Inform´ atica Alumno: Daniel Duato Catal ´ an Tutores: Llu´ ıs Felip Hurtado Oliver y Ferran Pla Santamar´ ıa 2014-2015

Upload: others

Post on 18-Jul-2022

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Recopilacion de´ tweets y medicion de la relevancia´

ESCOLA TECNICA SUPERIOR D’ENGINYERIA INFORMATICA

Universitat Politecnica de Valencia

Recopilacion de tweets y medicion de la relevanciabasada en la topologıa

Trabajo Fin de Grado

Grado en Ingenierıa Informatica

Alumno: Daniel Duato Catalan

Tutores: Lluıs Felip Hurtado Olivery Ferran Pla Santamarıa

2014-2015

Page 2: Recopilacion de´ tweets y medicion de la relevancia´
Page 3: Recopilacion de´ tweets y medicion de la relevancia´

Resumen

En este proyecto se ha creado una base de datos MongoDB y una aplicacion en Pythonque utiliza la API de Twitter para obtener tuits e informacion de las cuentas de usuarios. Seha obtenido una coleccion de tuits relacionados con polıtica espanola. Se han implementadolos algoritmos PageRank y HITS usando matrices obtenidas a partir tanto de las relacio-nes de seguimiento entre cuentas como de las relaciones de retuits y se han empleado paraordenar a los autores de los tuits recogidos segun su relevancia. La calidad de las distintas or-denaciones se ha estudiado y comparado con metricas mas triviales. El algoritmo PageRankha dado los mejores resultados. Se ha empleado el algoritmo de clusterizacion k-medoids yse ha estudiado la relevancia y la polaridad con respecto a distintos partidos polıticos de losdiferentes clusteres creados.

Palabras clave relevancia, Twitter, PageRank, HITS, cluster

Page 4: Recopilacion de´ tweets y medicion de la relevancia´

Resum

En aquest projecte s’ha creat una base de dades MongoDB i una aplicacio en Pythonque utilitza la API de Twitter per a obtenir tuits i informacio dels comptes d’usuaris. S’haobtingut una col·leccio de tuits relacionats amb polıtica espanyola. S’han implementat elsalgorismes PageRank i HITS usant matrius obtingudes a partir tant de les relacions de se-guiment entre comptes com de les relacions de retuits i s’han emprat per a ordenar als autorsdels tuits recollits segon la seua rellevancia. La qualitat de les diferents ordenacions s’haestudiat i comparat amb metriques mes trivials. L’algorisme PageRank ha donat els millorsresultats. S’ha emprat l’algorisme de clusteritzacio k-medoids i s’ha estudiat la rellevancia ila polaritat pel que fa a diferents partits polıtics dels diferents clusters creats.

Paraules clau rellevancia, Twitter, PageRank, HITS, cluster

Page 5: Recopilacion de´ tweets y medicion de la relevancia´

Abstract

In this project a MongoDB database and a Python application which uses Twitter’s APIto obtain tweets and information of the user accounts have been created. A collection oftweets related with spanish politics has been obtained. The algorithms PageRank and HITShave been implemented using matrixes created using both the following and the retweetingrelationships between user accounts. The results have been used to sort the authors of theobtained tweets according to their relevance. The quality of the different sortings has beenstudied and compared with more trivial metrics. The PageRank algorithm has showed thebest results. The clustering algorithm k-medoids has been applied. The relevance and pola-rities relating various political parties of the clusters created have been studied.

Keywords relevance, Twitter, PageRank, HITS, cluster

Page 6: Recopilacion de´ tweets y medicion de la relevancia´

Indice general

1. Introduccion 1

1.1. Motivacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2. Situacion y problematica actual . . . . . . . . . . . . . . . . . . . . . . . . 3

1.3. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.4. Estructura del Trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2. Conceptos previos 6

2.1. Twitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.2. Relevancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.3. Analisis de sentimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3. Tecnologıas usadas 9

3.1. Twitter REST API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.2. MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.3. Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4. Recopilacion de datos 14

4.1. Recopilacion de tuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4.2. Recopilacion de informacion de los usuarios . . . . . . . . . . . . . . . . . 15

5. Algoritmos de ordenacion 17

5.1. El algoritmo PageRank . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

5.2. Implementacion del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . 19

5.3. El algoritmo HITS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

I

Page 7: Recopilacion de´ tweets y medicion de la relevancia´

INDICE GENERAL

5.4. Implementacion del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . 22

6. Evaluacion de los resultados 236.1. Coeficiente de correlacion de Spearman . . . . . . . . . . . . . . . . . . . 23

6.2. Ganancia Acumulada Descontada (DCG) . . . . . . . . . . . . . . . . . . 25

6.3. Analisis de representatividad de polaridad de los tuits . . . . . . . . . . . . 28

7. Analisis de clusteres 337.1. Estudio de la conectividad . . . . . . . . . . . . . . . . . . . . . . . . . . 33

7.2. Algoritmo de Floyd-Warshall . . . . . . . . . . . . . . . . . . . . . . . . . 35

7.3. Algoritmo k-medoids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

8. Conclusiones 42

Bibliografıa 44

A. Ordenaciones 47

II

Page 8: Recopilacion de´ tweets y medicion de la relevancia´

Capıtulo 1

Introduccion

Estamos rodeados de pruebas de la importancia de Internet en el mundo moderno, unaimportancia que cada dıa crece mas. El numero de usuarios de Internet sigue subiendo,actualmente se estima que el 40.4% [27] de la poblacion mundial lo son. Una parte de estosusuarios son creadores de contenido, que incrementan la informacion existente en la webanadiendo contenido a paginas webs o creando paginas nuevas. El presidente ejecutivo deGoogle, Eric Schmidt, dijo en 2010 que cada dos dıas se esta creando tanta informacioncomo se creo desde el inicio de la civilizacion hasta el 2003 [8]. Hoy esta velocidad es aunmucho mayor.

Figura 1.1: Crecimiento en el numero de paginas web[17].

Con tanta informacion a nuestro alcance, ha sido fundamental la existencia de medioscapaces de dar orden y facil acceso a tantas paginas y datos. Es por eso que directorios deenlaces y motores de busqueda que pretendıan hacer la web mas accesible a todo el mundofueron una parte esencial de Internet. Empezando por Archie ya en el 1990, antes aun dela World Wide Web, y continuando con otros servicios como Yahoo!, Lycos, AltaVista oGoogle. Ademas de estas empresas, muchas otras aparecieron y desaparecieron [31]. Losmotores de busqueda han ido perfeccionandose rapidamente, tratando de seguir el ritmo alque crecıa la Web. Finalmente hemos llegado a gigantes como Google, siendo la pagina web

1

Page 9: Recopilacion de´ tweets y medicion de la relevancia´

CAPITULO 1. INTRODUCCION

mas visitada, que en el ano 2014 ha realizado aproximadamente 2,1 billones de busquedas[12].

Otra parte importante de Internet durante los ultimos anos han sido las redes sociales.Estas permiten a las personas conectar entre ellas y compartir informacion de manera senci-lla. Son servicios como Facebook, LinkedIn, Twitter o Google+, entre otros. Por supuesto,como en el caso de los motores de busqueda, muchos de estos han sido olvidados. Sus usua-rios cada vez comparten mas datos en estas paginas, convirtiendose ellas tambien en unasustancial fuente de datos.

Toda la informacion disponible gracias a estas redes sociales es abrumadora e inabarca-ble para una persona. Tratar de alcanzarla y comprenderla toda es una ambicion imposible,por lo que sera necesario poder distinguir que informacion de esta es realmente util o rele-vante y cual no le interesa al usuario, por ello es natural tratar de automatizar esta seleccionde informacion esencial y delegarla a algoritmos y mecanismos que pueden ser mucho maseficientes que nosotros. Para ello, se han usado tecnicas de minerıa de datos o han sido adap-tadas tecnicas propias de los motores de busqueda, dadas las similitudes existentes entre lastopologıas de estas redes sociales con la de Internet. Por ejemplo, en el caso de Twitter, larelacion de una cuenta que sigue a otra cuenta equivale a un enlace que apunta desde unapagina web a otra.

1.1. Motivacion

Figura 1.2: Crecimiento de usuarios activos de Twitter [26].

La discusion creada en Twitter puede llegar a tener un gran impacto en diversos sectoresde la vida real, como se ha podido comprobar en multiples ocasiones [23][5][16]. La inme-diatez de las comunicaciones por Twitter hace de este un mecanismo ideal para hacer llegar

2

Page 10: Recopilacion de´ tweets y medicion de la relevancia´

1.2. SITUACION Y PROBLEMATICA ACTUAL

informacion de manera veloz a grandes cantidades de personas. Esto hace que muchas em-presas y organizaciones se interesen en Twitter como herramienta de mercadotecnia, creandoprofesiones tales como community manager. Tambien se puede ver en Twitter un reflejo dela sociedad, aunque no exacto, sı bastante aproximado. Por ello interesa utilizar Twitter co-mo una gran fuente de opiniones que pueden ser analizadas para poder conocer la reputaciongeneral de una persona, producto o entidad.

Para facilitar estas funciones son necesarios sistemas que puedan analizar el contenidode los tuits. Una medida posible para lograr esto es analizar la relevancia de las cuentas quepubliquen los tuits, que es lo que se tratara de calcular en este proyecto, aprovechando laexistencia de algunas tecnicas de medicion de relevancia ya existentes para su uso en la red.

1.2. Situacion y problematica actual

Actualmente existen multiples herramientas que tratan de asignar relevancia a distintoselmentos de las redes sociales. Se han investigado metodos de recomendacion de usuariospara las redes sociales [25] y muchas de ellas ya tienen sistemas de este estilo puestos enpractica: Facebook y Google+ tiene sistemas de recomendacion de personas que quizas co-nozcas, mientras que Twitter tiene uno que recomienda que cuentas seguir (Who To Follow,ver figura 1.3).

Figura 1.3: Recomendacion de cuentas de Twitter

Para medir la relevancia de una cuentade Twitter no basta con observar atributostriviales como el numero de seguidores, de-bido a cuentas follow-back (“sıgueme y tesigo”), que crean comunidades con usuariosque se siguen mutuamente entre ellos pu-diendo llegar a numeros muy grandes de se-guidores sin tener ninguna relevancia real, ya practicas como las de las llamadas granjasde clicks (click farms), que han alcanzadolas redes sociales [1]. Las granjas de clicksson empresas que venden (en el caso de las

redes sociales) grandes cantidades de likes, amigos o seguidores desde cuentas falsas, paraaumentar la popularidad de una cuenta. Por ello es necesario el uso de tecnicas mas sofis-ticadas para poder calcular la relevancia de cuentas de Twitter. Si se tienen en cuenta losseguidores de una cuenta, habrıa que comprobar tambien la relevancia de estos seguidores,para asegurarnos de que no sean cuentas falsas y de que estas relaciones sean significativas.

Algoritmos disenados para motores de busqueda como HITS y PageRank, que puedenaprovechar la topologıa de seguidores de Twitter, tienen esto en cuenta. Estos algoritmosya se han usado con anterioridad para medir relevancia de cuentas de Twitter en [3] y unavariante de un algoritmo basado en ellos, SALSA (del ingles: Stochastic Approach for Link-

3

Page 11: Recopilacion de´ tweets y medicion de la relevancia´

CAPITULO 1. INTRODUCCION

Structure Analysis), es empleado por Twitter en su sistema Who To Follow [9].

Twitter se esta usando como fuente de analisis de la sociedad en todo tipo de areas: desdeopiniones sobre el cambio climatico [13] o deportivas [32], hasta opiniones gastronomicas [30],incluyendo analisis de opiniones de la polıtica espanola [4], tema con el que se trabajara du-rante el proyecto. Dadas tantas investigaciones realizadas a partir de datos de Twitter, esinnegable la importancia de utilizar buenos metodos de extraccion de informacion relevante.

1.3. Objetivos del proyecto

Como hemos visto, ya existen estudios que calculan la relevancia de Twitter usandoalgoritmos propios de motores de busqueda, sin embargo, existen muchos aspectos a inves-tigar referentes a estos o nuevos algoritmos para determinar la relevancia de los tuits. Eneste proyecto se tratara de poner a prueba estos algoritmos de nuevas maneras. Ademas,se empleara un nuevo enfoque no muy estudiado: se analizaran clusteres de usuarios y lassimilitudes en relevancia u opiniones dentro de ellos.

Sera necesario crear una aplicacion que, usando la API (del ingles: Application Pro-gramming Interface) proporcionada por Twitter, recopile tuits segun una palabra o palabrasclave y los almacene en una base de datos. Usando esta aplicacion, se obtendra una canti-dad de tuits suficientemente grande relacionados con un tema en concreto: en nuestro caso,partidos polıticos espanoles.

Se implementaran los algoritmos PageRank y HITS. A partir de las cuentas obtenidas, secrearan grafos segun las relaciones direccionales de que usuario sigue a quien y de que usua-rio retuitea a quien. Los algoritmos implementados se ejecutaran sobre estos grafos y seasignaran puntuaciones de relevancia a cada una de las cuentas.

Estas puntuaciones se compararan con una metrica mas trivial (el numero de seguidoresde cada cuenta), y se evaluaran de distintas maneras:

Usando los coeficientes de correlacion de Spearman.

Etiquetando una muestra de las cuentas con un valor de relevancia y calculando laganancia acumulada descontada (DCG).

Se usara un detector de polaridad para calcular la polaridad de toda la coleccion decuentas obtenidas y se estudiara la representatividad de los usuarios mas relevantes.

Se espara obtener mejores puntuaciones tanto en el calculo del DCG como en el analisisde representatividad para los algoritmos HITS y PageRank que para los numeros de segui-dores.

Finalmente se analizaran los usuarios usando tecnicas de clusterizacion. Primero se com-probara la conectividad y luego se empleara el algoritmo k-medoids. Se analizaran las dife-rencias entre la alineacion polıtica y la relevancia entre los distintos clusteres.

4

Page 12: Recopilacion de´ tweets y medicion de la relevancia´

1.4. ESTRUCTURA DEL TRABAJO

Se espera ver diferencias entre clusteres en estos campos. Esto podrıa ayudar a seleccio-nar mejor aquellas cuentas que sean mas representativas y a inferir la relevancia o alineacionpolıtica de una cuenta segun el cluster al que pertenezca.

1.4. Estructura del Trabajo

Este documento estara dividido en 8 capıtulos:

Introduccion - exposicion de la situacion actual, algunos trabajos relacionados, lamotivacion y los objetivos del proyecto.

Conceptos previos - explicacion de algunos conceptos que seran necesarios entender.

Tecnologıas usadas - se exploraran las distintas herramientas y tecnologıas usadasdurante el proyecto.

Recopilacion de datos - se detallara el proceso de adquisicion de tuits e informacionde las cuentas de Twitter.

Algoritmos de ordenacion - explicacion de los algoritmos y su implementacion.

Evaluacion de los resultados - se evaluaran de distintas maneras los resultados obte-nidos en el capıtulo anterior.

Analisis de clusteres - se detallara la creacion de clusteres y los resultados obtenidosa partir de ellos.

Conclusiones - repaso del trabajo realizado y los resultados obtenidos y propuestaspara trabajos futuros.

Apendice - listas de las primeras 30 cuentas segun cada ordenacion de relevancia.

5

Page 13: Recopilacion de´ tweets y medicion de la relevancia´

Capıtulo 2

Conceptos previos

2.1. Twitter

Twitter es una red social creada en 2006 que permite publicar cortos mensajes de hasta140 caracteres. Es una de las webs que han vivido un mayor crecimiento en su numero deusuarios, llegando a tener actualmente mas de 500 millones de usuarios. Tal ha sido su exitoque hasta la Real Academia Espanola (RAE) ha incorporado palabras como ‘tuit’ o ‘tuitero’a su diccionario (ver figura 2.1)[22].

Figura 2.1: Definiciones de las palabras ‘tuit’,‘tuitear’ y ‘tuiteo’ en la RAE.

Funciona de manera similar a un serviciode blogs personales, donde cada usuario tieneuna pagina con un muro en el que puede pu-blicar estos mensajes cortos, llamados tuits (delingles: tweet). Los usuarios pueden suscribirse, alo que tambien se le llama “seguir”, a otras cuen-tas (cuenta y usuario se usaran de manera practi-camente intercambiable) para que ası aparezcanlos tuits de estas cuentas en su pagina principal,convirtiendose ası en su seguidor (del ingles: follower). En el caso opuesto, las cuentas a lasque sigue un usuario seran llamadas sus amigos (del ingles: friends); este termino esta saca-do de la documentacion de la API de Twitter, pero a diferencia del resto, no se suele usar enconversaciones normales sobre Twitter.

Un usuario puede compartir en su muro y a la vez con todos sus seguidores cualquiertuit de otra cuenta. A esta accion se le llama retuitear y al tuit compartido retuit.

Existen mas funcionalidades en Twitter, como enviar mensajes directos, responder aotro tuit, el uso de hashtags, etc. Pero para este proyecto solo sera necesario comprender losconceptos ya explicados.

La topologıa de Twitter se puede ver como un gran grafo dirigido, siendo los nodos lascuentas de usuario y las aristas dirigidas las relaciones de un usuario siguiendo a otro. Otramanera manera menos trivial de construir un grafo a patir de Twitter sera usando los retuits,

6

Page 14: Recopilacion de´ tweets y medicion de la relevancia´

2.2. RELEVANCIA

en este caso las aristan indicaran que un usuario retuitea tuits de otro. Ambos tipos de grafose han usado durante este trabajo.

2.2. Relevancia

La relevancia es una propiedad que interesa a la hora de recoger informacion. De acuerdoa Hjørland y Sejer Christensen, un documento es relevante si ayuda en cierta tarea o inves-tigacion a completar cierto objetivo [10]. Por lo tanto algo unicamente puede ser relevantesi es en relacion a un objetivo dado. Es decir, un documento muy relevante dentro de ciertocampo, puede no ser nada relevante en otro. Se puede diferenciar tambien entre relevanciatopica y situacional. Si algo tiene relevancia topica, significa que esta relacionado de algunamanera con la tarea, por ejemplo, se engloba dentro del mismo campo que se estaba investi-gando en la tarea. Pero sin embargo puede no tener ninguna relevancia situacional, es decir,no ser util para la concreta situacion y el concreto objetivo que se deseaba cumplir.

La medicion de la relevancia puede ser algo muy complicado. Para dos personas dis-tintas, aunque esten realizando la misma investigacion con el mismo objetivo, debido a losdistintos conocimientos e ideas de cada uno, un mismo documento puede tener distinta rele-vancia percibida.

Esto hara muy difıcil la comparacion de los distintos metodos de asignacion de relevan-cia, ya que no existe una solucion completamente objetiva, pero mas adelante explicaremoslas diferentes maneras en las que este problema puede ser abordado.

Puesto que es necesario un contexto para la medicion de la relevancia, se ha decidido es-coger el de la polıtica espanola, coincidiendo con las elecciones autonomicas y municipalesde Espana. Se tomaran dos enfoques ligeramente distintos a la hora de realizar las distintaspruebas:

En la seccion 6.2 se tomara el papel de un votante indeciso, cuya tarea sera la de obtenerla mejor informacion posible sobre polıtica espanola desde Twitter con el objetivo de realizarla mejor eleccion posible a la hora de votar en las elecciones autonomicas y municipalesde 2015. Para obtener esta informacion el votante querra seguir a un numero limitado decuentas de Twitter, por lo que la funcion de los sistemas de asignacion de relevancia que seusaran sera la de poder indicar a este votante que cuentas son las mas relevantes en cuanto ainformacion sobre polıtica espanola.

En la seccion 6.3 de este trabajo, el objetivo sera otro: conocer la opinion general sobrepolıtica de los usuarios de Twitter. Para ello las cuentas mas relevantes seran aquellas masrepresentativas de las opiniones de todos los usuarios de Twitter.

La relevancia topica de cada cuenta deberıa ser la misma en ambos casos (polıtica es-panola), mientras que la situacional puede ser diferente, ya que el objetivo de la investigaciones distinto.

7

Page 15: Recopilacion de´ tweets y medicion de la relevancia´

CAPITULO 2. CONCEPTOS PREVIOS

2.3. Analisis de sentimiento

Para las pruebas que se realizaran en la seccion 6.3 sera necesario entender este concepto.Analisis de sentimiento es el uso de tecnicas como las del procesamiento de lenguaje naturalpara poder extraer a partir de algun recurso informacion acerca de la actitud de su autor. Deesta actitud se pueden detectar opiniones o estados de animo.

Se puede considerar este problema como uno de clasificacion, en el que se trata de clasi-ficar cada documento en una categorıa de acuerdo a la opinion o estado de animo detectado.Por ejemplo, aquellos sistemas que detectan opiniones a menudo las clasifican como po-sitivas, neutrales o negativas. A esta clasificacion, en una unica dimension, se le llama depolaridad y es la que ha sido empleada para este trabajo.

Dada la creciente popularidad de las redes sociales, metodos de este tipo se estan em-pleando cada vez mas sobre estas redes como modo alternativo de sondeo a la poblacion.Sobre todo Twitter es una gran fuente de recursos para estas investigaciones, ya que disponede una gran cantidad de usuarios que publican opiniones de manera publica a las que es muyfacil acceder.

8

Page 16: Recopilacion de´ tweets y medicion de la relevancia´

Capıtulo 3

Tecnologıas usadas

En este capıtulo se describiran brevemente las diferentes tecnologıas que se usaran du-rante el proyecto.

3.1. Twitter REST API

A los pocos meses de su creacion, Twitter lanzo una interfaz de programacion de apli-caciones o API (del ingles: Application Programming Interface) oficial al ver que desarro-lladores independientes empezaban a idear otras maneras de acceder a sus datos y ası podercrear distintos tipos de aplicaciones [28]. Esta nueva API permitıa acceder a una lista detuits publicos o, si uno se autentificaba mediante una autenticacion de acceso basica, a lostuits propios, de tus amigos o de tus seguidores. Estas operaciones seguıan una arquitecturaREST (Transferencia de Estado Representacional), intercambiando los datos directamentemediante HTTP. Esta API rapidamente fue creciendo anadiendo mas opciones y mejorandosu seguridad.

A la vez se fueron ofreciendo mas recursos para desarrolladores que quisieran apro-vecharse de la tecnologıa de Twitter; como la Streaming API, que permite recibir tuits entiempo real, o mas recientemente Fabric, un entorno de desarrollo para aplicaciones movilesdesarrollado por Twitter. Pero a nosotros nos interesara unicamente la REST API: trabajare-mos siempre sobre la misma coleccion de tuits, sobre la que haremos distintas pruebas, por loque obtener tuits en tiempo real no nos sera de mucha utilidad; y Fabric es algo que no tieneninguna relacion con el objetivo de este proyecto. A continuacion se explicara como obteneracceso a la REST API de Twitter (version 1.1), profundizaremos en su funcionamiento ymencionaremos brevemente las operaciones que nos seran utiles durante el proyecto.

Para realizar cualquier operacion con la API se requiere crear una aplicacion que usara unaautentificacion de tipo OAuth. Estas aplicaciones pueden ser de dos tipos: conectada a unaunica cuenta de usuario o independiente de ella, de manera que varios usuarios puedan usarla misma aplicacion. Las aplicaciones se crean desde la pagina https://apps.twitter.com/, paralo que es necesario tener una cuenta de Twitter. Una vez creada, tendremos acceso a la pagi-

9

Page 17: Recopilacion de´ tweets y medicion de la relevancia´

CAPITULO 3. TECNOLOGIAS USADAS

na de la aplicacion, en la que obtendremos una clave de autentificacion Oauth (ConsumerKey) y su clave secreta asociada (Consumer Secret). Estas claves son las que usara la aplica-cion para conectarse con la API y, en el caso de que la aplicacion a crear vaya a ser publicay usada por multiples cuentas, nunca deberıa ser visible a dichos usuarios. Sin embargo laaplicacion no esta asociada todavıa a ninguna cuenta y es incapaz de realizar peticiones ala API, para ello es necesario un token de acceso (Access Token) con su respectivo secreto(Access Token Secret). El token de acceso se puede obtener por alguno de los siguientesmetodos de autenticacion:

Inicio de sesion con Twitter - pensado para aplicaciones basadas en web. El usuariopodra iniciar sesion en la aplicacion con su cuenta de Twitter por medio de un boton,que indicara los permisos que esta concediendo, tras lo cual la aplicacion obtendra untoken de acceso y podra realizar peticiones a la API en su nombre.

3-legged Oauth - similar al metodo anterior, pero se pedira permiso al usuario antesde hacer cada peticion, aun cuando ya se le hubiese dado antes.

PIN-based Oauth - pensado para aplicaciones que no tengan acceso a la web. Laaplicacion muestra al usuario un enlace al que podra acceder desde cualquier explora-dor web. Este enlace devolvera un codigo PIN que el usuario debera introducir en laaplicacion para que esta obtenga el token de acceso.

Tokens de dev.twitter.com - si solo se necesita que el desarrollador tenga acceso ala aplicacion, se podra conseguir un token de acceso para la cuenta de Twitter que hacreado la aplicacion desde su propia pagina.

xAuth - este metodo permite obtener un token de acceso a partir del nombre y contra-sena del usuario, de manera que no sea necesario el uso de la web. Puesto que requiereel uso de informacion sensible, no es muy comun y para poder ser usado es necesarioobtener permisos privilegiados de Twitter. Para obtener estos permisos hay que justi-ficar los motivos tecnicos por los que ningun otro de los metodos de autenticacion esposible para la aplicacion.

OAuth Echo - cuando haya un tercero involucrado en la interaccion con la API, seutilizara OAuth Echo para comunicar los datos de acceso de una parte a la otra.

Autenticacion solo de la aplicacion esto se usara cuando no sea necesario asociar laaplicacion a ninguna cuenta. Por lo tanto, habra varias operaciones de la API relacio-nadas, como publicar nuevos tuits, que no se podran realizar.

Se ha decidido obtener el token de acceso directamente desde dev.twitter.com, asociandoası la aplicacion con la cuenta del desarrolador, puesto que no es necesario que mas usuariosutilicen la API y es probablemente el metodo mas sencillo.

10

Page 18: Recopilacion de´ tweets y medicion de la relevancia´

3.1. TWITTER REST API

Una vez se tiene el token de acceso, se pueden realizar peticiones HTTP a los distintosendpoints ofrecidos por la REST API. Estas peticiones requieren una cabecera Authoritationque incluira la clave de autentificacion de la aplicacion y el token de acceso, ası como unnonce (un valor generado aleatoriamente incluıdo para poder determinar si dos peticionesson o no identicas), una firma (generada codificando por HMAC-SHA1 todos los parame-tros de la peticion con el secreto de la clave de autentificacion y el del token de acceso),ası como otros parametros de control. Ademas de esta cabecera, la peticion incluira todoslos parametros requeridos para cada operacion.

Los endpoints de la REST API de twitter son enlaces a los que se pueden mandar pe-ticiones para que realicen alguna operacion, que puede ser de dos tipos: solicitud de datos,como obtener una lista de seguidores de una cuenta, o subida de datos, como subir una fotoa Twitter. A los endpoints del primer tipo se les enviaran peticiones HTTP de tipo GET, susparametros se enviaran incluıdos dentro de la propia url y las respuestas seran devueltas enformato JSON; mientras que a los del segundo se les enviaran peticiones de tipo POST, quepodran contener informacion en el cuerpo del mensaje. Por cada operacion hay un endpointdistinto y en total existen 96 distintos (sin contar aquellos usados para procedimientos comola autentificacion y los pertenecientes a otras APIs).

Existen limitaciones en el numero de veces que se puede usar cada endpoint con unmismo token de acceso. Esta limitacion se mide en intervalos de 15 minutos. Por lo tanto,si un endpoint tiene un lımite de 15 peticiones por intervalo, significa que unicamente sepodran realizar hasta 15 peticiones a ese endpoint por cada 15 minutos con el mismo tokende acceso. Una vez superado ese lımite, no se podran realizar mas peticiones al endpointhasta que hayan pasado los 15 minutos del intervalo de tiempo.

Para este proyecto seran necesarios los siguientes endpoints:

search/tweets - se le pasa como argumento una cadena de caracteres q y devol-vera hasta 100 tuits que contengan q. Se pueden elegir otras opciones, como el idiomade los tuits, su fecha de publicacion maxima, etc. Los tuits devueltos tendran una an-tiguedad maxima de una semana, para obtener tuits mas antiguos es necesario usarotros metodos. Tambien merece la pena mencionar que la busqueda no es exhaustivay no todos los tuits seran devueltos. Sobre todo tuits publicados por cuentas recien-tes que apenas tengan seguidores a menudo no estaran correctamente indexados y noseran devueltos por la API. Tiene un lımite de 180 peticiones por intervalo.

users/show - al pasarle como argumento el nombre o identificador de una cuenta deTwitter, devuelve mucha informacion sobre esa cuenta, como numero de seguidores,descripcion, ultimo tuit, etc. Tiene un lımite de 180 peticiones por intervalo.

friends/list - al pasarle como argumento el nombre o identificador de una cuenta deTwitter, devuelve una lista de hasta 200 amigos de esa cuenta. Tiene un lımite de 15peticiones por intervalo.

11

Page 19: Recopilacion de´ tweets y medicion de la relevancia´

CAPITULO 3. TECNOLOGIAS USADAS

statuses/user timeline - al pasarle como argumento el nombre o identificador de unacuenta de Twitter, devuelve una lista de hasta 200 tuits publicados por esa cuenta. Deesta manera se pueden obtener unicamente hasta los 3 200 tuits mas recientes de cadacuenta. Tiene un lımite de 180 peticiones por intervalo.

Tanto a search/tweets como a statuses/user timeline se les puede pasar como argumentosince id o max id, que permiten indicar respectivamente a partir de que tuit y hasta que tuit sedesea que se devuelvan los resultados. Esto permite obtener colecciones de tuits mayores quelas que podrıan ser devueltas por una sola peticion. Por ejemplo, si se quieren obtener 200tuits por medio de search/tweets (cuyo lımite es 100 por peticion), se podrıa lanzar primeroua peticion de manera normal y a continuacion una segunda que incluyese el parametromax id, con un valor igual al identificador del tuit mas antiguo devuelto por la primerapeticion menos uno (para que el mismo tuit no sea devuelto de nuevo).

3.2. MongoDB

Puesto que todos los resultados devueltos por la REST API de Twitter se encuentran enformato JSON, se ha decidido usar MongoDB como sistema de base de datos. Es un sistemaNoSQL que almacena la informacion en documentos tipo JSON, lo que simplifica mucho elalmacenamiento de tuits y demas informacion devuelta por Twitter. Al no ser una base dedatos relacional, no se utilizaran tablas, si no que los documentos son guardados en distintascolecciones. Se pueden realizar multiples tipos de consultas muy flexibles, ya que incluso sepueden definir funciones JavaScript dentro de ellas. La facil creacion de ındices en cualquiercampo hace muy sencillo y rapido ordenar los documentos.

3.3. Python

Se ha optado por usar Python como lenguaje de programacion durante todo el proyecto.Este lenguaje sera muy apropiado para el proyecto, ya que es muy sencillo y flexible, loque facilita una rapida y clara implementacion de los algoritmos, ası como la facil creacionde pequenas funciones de tipo scripting, que seran necesarias durante el proyecto. Es unlenguaje muy portable en comparacion con otros, por lo que se podra usar en varias maquinasdistintas sin ninguna dificultad. Ademas dispone de librerıas faciles de instalar que facilitaranmuchos aspectos del trabajo. Ahora se describiran brevemente las librerıas y paquetes usadasmas relevantes.

Tweepy - Esta librerıa funciona como un sencillo wraper de la API de Twitter. Incluyeuna clase API con funciones que acceden a todos los metodos de la Twitter REST API,de manera que el desarrollador no ha de preocuparse de los aspectos de menor nivel,

12

Page 20: Recopilacion de´ tweets y medicion de la relevancia´

3.3. PYTHON

como la creacion del nonce y la firma en las cabeceras de cada peticion o el envıo devarias peticiones con distintos max id cuando se quieran obtener mas resultados quelos permitidos por una unica peticion.

PyMongo ofrece herramientas para trabajar desde Python con una base de datos Mon-goDB. Todas las funciones de acceso a la base de datos y la sintaxis de las peticioneses identica a la de MongoDB, por lo que su manejo resulta trivial una vez se conocecomo usar este tipo de bases de datos.

PyTables es un paquete que permite administrar de manera eficaz grandes cantidadesde datos. Esta basado en ficheros de tipo HDF5 (Hierarchical Data Format). Noso-tros lo usaremos para poder almacenar en el disco duro matrices que sean demasiadograndes para el tamano de la memoria RAM.

NumPy - Esta librerıa incluye todo tipo de operaciones matematicas. Sera de utilidadsobre todo a la hora de trabajar con matrices.

13

Page 21: Recopilacion de´ tweets y medicion de la relevancia´

Capıtulo 4

Recopilacion de datos

En este capıtulo se describira el proceso de recopilacion de tuits e informacion de lasdistintas cuentas. Como ya ha sido mencionado, se recogeran tuits pertinentes a la polıticaespanola. Estos tuits han sido recogidos durante la jornada de campana electoral de las elec-ciones autonomicas y municipales de Espana de 2015. Especıficamente entre el 17 y el 23de mayo.

Se ha elegido este tema en este momento porque es capaz de generar mucha discusionque llegara a Twitter. Se esperan usuarios con distintas opiniones lo que permitira realizartambien alalisis de polaridad.

4.1. Recopilacion de tuits

El primer paso es obtener los tuits que interesa analizar. Para esto se ha creado una apli-cacion en Python que utiliza la librerıa tweepy para comunicarse con la REST API de Twitter,cuyo funcionamiento ya ha sido explicado en el capıtulo anterior. Tambien es necesario crearuna base de datos MongoDB en la que se almacenaran los tuits.

Para tuits relacionados con la polıtica espanola, se ha utilizado el endpoint search/tweets,usando como terminos de busqueda los nombres de partidos polıticos, usando tanto susnombres completos como sus siglas cuando fuese posible. Se han recuperado como maximo10 000 tuits por partido polıtico, aunque en la mayorıa de los casos no habıa tantos en unasemana. Estos tuits se obtienen en formato JSON y son almacenados en distintas coleccionesde la base de datos MongoDB segun el partido polıtico que mencionen, para posteriormentepoder hacer mas sencillo el analisis.

Los partidos polıticos cuyos tuits han sido almacenados y para los que se ha creado unacoleccion en la base de datos son los siguientes: PP, PSOE, Podemos, Ciudadanos, UPyD.Se han elegido estos partidos porque son los que mas tuits han devuelto. Al probar conotros partidos, el numero de tuits que en los que eran mencionados durante la semana erademasiado pequeno.

14

Page 22: Recopilacion de´ tweets y medicion de la relevancia´

4.2. RECOPILACION DE INFORMACION DE LOS USUARIOS

Para hacer mas rapida la recoleccion de estos tuits y no estar limitados por las restriccio-nes de la API de Twitter, que permite hasta 180 llamadas a search/tweets por cada token deacceso, se crearon dos aplicaciones de manera que cada una tuviese un token distinto paraque se ejecutaran en paralelo y ası duplicar la velocidad de recogida de tuits.

Una vez obtenidos los tuits, se han pasado por algunos simples filtros, que, aunque nosean perfectos, ayudan a eliminar varios tuits que aunque contengan las palabras clave noestan relacionados con polıtica espanola. Por ejemplo, se descubrio que en los casos delos partidos Podemos o Ciudadanos, practicamente todas las veces que estaban escritos enminusculas se referıan a los significados habituales de esas palabras, mientras que cuandoaparecıan escritos en mayusculas, se referıan a los partidos polıticos. Otro caso es el de siglascomo PP o PSOE, que pueden aparecer en muchos contextos, pero sobre todo se encontrabanentre los caracteres aleatorios de links acortados. En este caso con simplemente exigir quelas siglas no se encuentre dentro de otra palabra ha sido suficiente.

En cada tuit recogido, ademas del contenido del tuit, se incluyen metadatos con infor-macion como el idioma en el que esta escrito, la fecha en la que se escribio, la cuenta desu autor, si es un retuit, etc. Para almacenar la informacion de los autores se creo una nuevacoleccion en la base de datos, donde se insertan todos los autores distintos de los tuits al-macenados. A partir de los metadatos incluıdos en estos tuits podemos obtener el nombre ynumero de identificacion (id) del autor del tuit y su numero de seguidores entre otras cosas;pero no incluyen informacion de cada seguidor o la gente que sigue el autor del tuit, que esla informacion que sera de mayor interes a la hora de calcular la relevancia asociada a cadacuenta o cada tuit.

4.2. Recopilacion de informacion de los usuarios

Esta informacion se puede obtener usando distintos endpoints de la API, entre los cualesse ha decidido usar el endpoint user/friends, que obtiene los amigos de una cuenta. Se hadecidido esto en lugar de obtener los seguidores de una cuenta, ya que hay cuentas connumeros tan grandes de seguidores que harıan inpracticable obtener la informacion de todosellos. Tambien existen usuarios que siguen a grandes numeros de cuentas, pero suele ser enmenor medida.

La API es mas restrictiva con este endpoint que con el de busqueda de tuits, limitandosu uso a unicamente 15 peticiones por intervalo de 15 minutos. Para acelerar el procesoaun mas, se crearon otras seis aplicaciones de Twitter de manera que, sumadas a las dos yacreadas, se pudiesen realizar ocho veces mas peticiones que el lımite de 15, es decir, 120peticiones cada 15 minutos.

A la vez se realizaran peticiones para obtener los ultimos 1 000 tuits de cada cuentautilizando statuses/user timeline, comprobar cuales de ellos son retuits y guardar en la basede datos las cuentas a las que ha retuiteado. Esto servira para mas tarde poder calcular la

15

Page 23: Recopilacion de´ tweets y medicion de la relevancia´

CAPITULO 4. RECOPILACION DE DATOS

relevancia de las cuentas basandonos en quien retuitea a quien en lugar de en quien sigue aquien. Es importante mencionar que la API de Twitter, en el caso de un retuit, los metadatosno incluyen informacion de a que cuenta ha retuiteado directamente, sino de la cuenta queoriginalmente publico el tuit. Por ejemplo, dadas tres cuentas de Twitter A, B y C; en elcaso de que A publique un tuit t, B retuitee t desde A y a continuacion C retuitee t desde B;si se obtiene t desde la cuenta C, este tuit contendra metadatos que indicaran que su autororiginal es A, pero no habra ningun rastro de que ha pasado por B. Como esta informacionsera imposible de conseguir, cada vez que se diga que una cuenta A retuitea a una cuentaB, debera entenderse que A retuitea un tuit cuyo autor original es B, sin tener en cuenta deque cuenta lo ha retuiteado realmente.

En total se habıan recogido tuits procedentes de 75 502 usuarios, pero dado que algunascuentas son privadas y no se les pueden consultar los seguidores, el numero final quedo re-ducido a 73 540 usuarios. Tambien hay que tener en cuenta que si una cuenta sigue a muchagente, no cabran todos estos amigos en una sola respuesta, por lo que habra que hacer masde una peticion por usuario en estos casos. Esta recoleccion de informacion duro mas de unasemana, pero permite crear un grafo completo de las relaciones entre los 73 540 usuarios.

Ademas de esto, para las pruebas realizadas la seccion 6.3, interesara almacenar mas tuitsde algunas cuentas para poder analizarlos mejor. Hacer esto con todas las cuentas no serıamuy practico, ası que se intentara obtener los tuits de aquellas cuentas mas relevantes. Porlo tanto esperaremos a obtener estos tuits hasta el capıtulo 6, una vez ya se hayan calculadoalgunos datos de relevancia.

16

Page 24: Recopilacion de´ tweets y medicion de la relevancia´

Capıtulo 5

Algoritmos de ordenacion

Una vez se han obtenido todos los datos de los usuarios necesarios, se puede empezara calcular la relevancia. Para ello se usaran los algoritmos HITS y PageRank, que seranexplicados a continuacion junto con su implementacion. Estos algoritmos han sido creadospara su uso con paginas web de Internet, siendo los enlaces entre paginas web una partefundamental de su funcionamiento. Para poder emplearlo en Twitter es necesario definir unelemento equivalente a estos enlaces. Se utilizaran dos metodos distintos:

relaciones de seguimiento entre cuentas de Twitter, segun las cuales un enlace desdeuna cuenta A a una cuenta B indica que la cuenta A sigue a la cuenta B

relaciones de retuiteo entre cuentas de Twitter, segun las cuales un enlace desde unacuenta A a una cuenta B indica que la cuenta A ha retuiteado un tuit publicado por lacuenta B

5.1. El algoritmo PageRank

PageRank es un algoritmo creado en 1996 por Larry Page y Sergey Brin. Este algoritmose usarıa dentro de un motor de busquedas de Internet y su objetivo es el de ordenar laspaginas segun su relevancia o popularidad.

El algoritmo trata de simular la experiencia de un usuario de Internet, que navega por lared cambiando de pagina en pagina siguiendo los enlaces que se encuentre. Se asumira queeste usuario elije de manera aleatoria que enlace de los que encuentre en una pagina ele-gira para seguir navegando. Los resultados del algoritmo sera una distribucion de probabili-dad que asignara a cada pagina la probabilidad de que el usuario acabe en ella, valor al quese conoce directamente como PageRank. El algoritmo se basa en los enlaces entre paginas.Intuitivamente se entiende que cuantos mas enlazes apunten a una pagina, mas probabili-dades habra de que un usuario acabe en ella y por lo tanto mas popular o relevante sera.Tambien se puede asumir que cuanto mas popular sea una pagina (y por lo tanto mas proba-bilidades haya de que un usuario pase por ella), mas probabilidades habra de que un usuario

17

Page 25: Recopilacion de´ tweets y medicion de la relevancia´

CAPITULO 5. ALGORITMOS DE ORDENACION

pase por aquellas paginas que esta enlaza. De esta manera, siendo pi, 1≤ i≤ N, una paginacualquiera, Bi el conjunto de paginas que enlazan a una pagina pi y PR(i) el PageRank deuna pagina pi, obtendrıamos la siguiente formula:

PR(i) = ∑x∈Bi

PR(x) (5.1)

Tambien tiene sentido asumir que los enlaces de una pagina con unicamente un par deellos tendran mas valor que los de una pagina con cientos de ellos, por lo que se puede teneren cuenta el numero total de enlaces de una pagina de la siguiente manera, en la que L(i) esel numero de enlaces saliente de una pagina pi:

PR(i) = ∑x∈Bi

PR(x)L(x)

(5.2)

Ademas de moverse a base de enlaces, un usuario podrıa cambiar de web escribiendola direccion de otra en la barra de direcciones o por algun otro medio independiente de lapagina en la que se encuentre actualmente. Al igual que con los enlaces, se asumira quecuando el usuario decida no usar enlaces, la nueva pagina a la que llegue sera elegida demanera aleatoria. Este comportamiento se modelara utilizado un damping factor (factor deamortiguamiento) d, que mide la probabilidad de que un usuario haya alcanzado una paginapor medio de un enlace, siendo 1− d la probabilidad de que la haya alcanzado por mediode la barra de direcciones. Ası, siendo N el numero total de paginas webs contempladas,obtendrıamos:

PR(i) =1−d

N+d ∑

x∈Bi

PR(x)L(x)

(5.3)

En el caso especial de que una pagina no tuviese ningun enlace saliente, la unica opciondel usuario sera saltar a otra pagina al azar, por lo tanto:

PR(i) =

1−d

N +d ∑x∈Bi

PR(x)L(x) si L(i)> 0

1N si L(i) = 0

(5.4)

Para calcular todos los valores PageRank serıa necesaria una matriz de adyacencia mo-dificada que se explicara a continuacion. Primero empezaremos por una matriz de conecti-vidad G, sera una matriz cuadrada de tamano N en la que cada elemento gi j sera 1 si existeun enlace de la pagina pi a la pagina p j y 0 si no existe dicho enlace.

gi j =

{1 si existe enlace de pi a p j

0 si no existe enlace de pi a p j(5.5)

18

Page 26: Recopilacion de´ tweets y medicion de la relevancia´

5.2. IMPLEMENTACION DEL ALGORITMO

A partir de aquı crearemos la matriz de transicion del usuario de Internet P, cuyos ele-mentos r se definiran a partir de la formula 5.4 como sigue:

ri j =

{1−d

N +d gi jL(i) si L(i)> 0

1N si L(i) = 0

(5.6)

A partir de esta matriz de transiciones, el vector de valores PageRank se puede calcularde distintas maneras [19]. En nuestro caso se usara el metodo iterativo de la potencia. Estemetodo consiste en multiplicar la matriz un vector inicial x0 y volviendo a multiplicar lamatriz con el resultado de manera iterativa, como se muestra en el algoritmo 1.

Algoritmo 1 Computacion de vector PageRank siguiendo el metodo de las potenciasEntrada: Matriz P, precision ε, vector x0 con valores inicializados a 1

N , i = 01: repetir2: xi+1 = Pxi

3: i = i+14: hasta que |xi− xi−1|< ε

5: devolver xi

Cuando el vector x converja se habra dado con el vector de valores PageRank 5.7.

x =

PR(1)PR(2)

...PR(N)

=

r11 r12 · · · r,N

r21. . .

...... ri j

rN1 · · · rNN

x (5.7)

5.2. Implementacion del algoritmo

La interpretacion del usuario de Internet que viaja de manera aleatoria siguiendo losenlaces que encuentra en la web no se puede aplicar para el caso de Twitter, pero tampocoes necesario entenderlo de esta manera. Bastara con entender la equivalencia de la relacionde una cuenta de Twitter que sigue a otra con la de un enlace que apunta de una pagina deInternet a otra.

Primero se creara la matriz de transiciones. De la base de datos se obtiene las listas deamigos de cada uno de los usuarios y se itera sobre ellas para crear la matriz usando elalgoritmo 2, en el que la columna i de una matriz P se denota como P•,i. De esta manera secrea una matriz que coincide con la formula 5.6.

La matriz creada estara formada por 735402 elementos, lo que es una cantidad impor-tante. No es posible guardarla como una matriz dispersa, ya que, debido al factor de amor-

19

Page 27: Recopilacion de´ tweets y medicion de la relevancia´

CAPITULO 5. ALGORITMOS DE ORDENACION

Algoritmo 2 Creacion de la matriz de transiciones para PageRankEntrada: Matriz P, numero de cuentas N, factor de amortiguamiento d, lista de usuarios

con sus amigos1: para todo usuario hacer2: n = 03: para todo amigo de usuario hacer4: Pamigo,usuario = d5: n = n+16: fin para7: si n > 0 entonces8: P•,usuario = P•,usuario/n9: P•,usuario = P•,usuario +

1−dN N

10: si no11: P•,usuario =

1N

12: fin si13: fin para14: devolver P

tiguamiento, no existen elementos nulos. El ordenador usado para almacenar todos los tuitsdispone unicamente de 8 gigas de RAM, que demostro no ser suficiente. Se uso la librerıapickle de Python para almacenar la informacion de los usuarios necesaria y poder transpor-tarla facilmente a otro equipo con mayor memoria. Aquı fue probada la gran portabilidad dePython. A pesar de ello, un equipo de 64 gigas de RAM tampoco fue capaz de almacenar to-da la matriz en memoria, dado esto se decidio usar la librerıa PyTables para poder almacenardatos en el disco duro en lugar de en la memoria RAM.

Puesto que en ningun momento (ni en la creacion de la matriz ni durante la computaciondel PageRank) se necesita acceder a varias columnas distintas a la vez, se ha podido dividir lamatriz en bloques de varias columnas, que permanecen almacenados en disco duro mientrasno sean usados. Para calcular el vector de valores PageRank segun el algoritmo 1 se hamultiplicado cada bloque por separado, usano las funciones de la librerıa NumPy.

Usando la matriz de retuits

Este proceso es casi identico al del PageRank usando la red de seguidores. En lugar deobtener la lista de los amigos de cada usuario de la base de datos, se obtendra la lista delas cuentas a las que ha retuiteado. Seran estas listas las que se usaran en la creacion de lamatriz, de igual manera que se usaron las de los amigos de los seguidores. Una vez creadala matriz, el computo de los valores es identico. Es por esto que, a pesar de que al inicio secreo una funcion distinta para cada caso, al final se unieron ambas funcionalidades en unasola funcion.

20

Page 28: Recopilacion de´ tweets y medicion de la relevancia´

5.3. EL ALGORITMO HITS

Ejecucion

Le ejecucion transcurrio de manera muy similar usando las dos matrices distintas. Paracalcular los PageRank de todos los usuarios se utilizaron 100 bloques de PyTables (de comomucho 736x73540 elementos), lo que permitio usar unicamente 6 gigas de memoria RAM.Una vez creada la matriz, los vectores convergieron hasta una precision de 0,00001 tras 72y 85 iteraciones respectivamente, lo que en ambos casos duro 4 horas ± 15 minutos. Listasde las 30 cuentas mas relevantes segun estos valores PageRank se pueden encontrar en elapendice.

5.3. El algoritmo HITS

El algoritmo HITS (del ingles: Hypertext Induced Topic Selection) tambien permite eva-luar la relevancia de elementos. Este algoritmo, disenado por Jon Kleinberg, fue ideado paraanalizar la importancia de paginas webs durante los primeros anos de vida de Internet. Laspaginas parecian dividirse en dos funciones distintas: unas son las creadoras de contenidoy otras cuya funcion es compilar enlaces a estas webs creadores de contenidos. Por lo tan-to, en lugar de asignar una sola puntuacion a cada pagina, como en el caso de PageRank,se definiran dos puntuaciones distintas; el primero, authority o auth, indicara el valor de lapagina como creadora de contenido, mientras que el segundo, hub, indicara su valor comocoleccion de enlaces a otras paginas. Estos valores se calcularan por medio de los enlacesentre paginas como con el algoritmo PageRank. Una importante diferencia entre ambos al-goritmos es que HITS atribuye a las paginas importancia, no solo segun el numero y calidadde los enlaces entrantes, si no contemplando tambien a los enlaces salientes.

Las puntuaciones authority y hub se definen en terminos de recursion mutua: la pun-tuacion authority de una pagina es la suma de las puntuaciones hub de todas las paginasque enlacen a ella y la puntuacion hub de una pagina es la suma de todas las puntuacionesauthority de todas las paginas a las que enlace. Es decir:

auth(pi) = ∑j∈Bi

hub(p j)

hub(pi) = ∑j∈Oi

auth(p j)(5.8)

donde Bi es el conjunto de paginas que enlazan a la pagina pi y Oi es el conjunto de paginasque pi enlaza.

Para calcular los valores primero se inicializaran todos hub y auth a 1. A continuacionse iteraran las siguientes instrucciones hasta que los valores convergan:

Se actualizan todos los valores auth a partir de los valores hub segun la formula 5.8.

Se actualizan todos los valores hub a partir de los valores auth segun la formula 5.8.

21

Page 29: Recopilacion de´ tweets y medicion de la relevancia´

CAPITULO 5. ALGORITMOS DE ORDENACION

Los valores hub se normalizan dividiendolos por la raız cuadrada de la suma de loscuadrados de todos los valores hub y los valores auth se normalizan dividiendolos porla raız cuadrada de la suma de los cuadrados de todos los valores auth.

5.4. Implementacion del algoritmo

Al igual que con el algoritmo PageRank, se probara HITS tanto usando la informacionde los seguidores, como la de direcciones de los retuits. En el primer caso se espera obtenerpuntuaciones authority altas en las cuentas que tengan muchos seguidores y puntuacioneshub altas en aquellas con muchos amigos. En el segundo caso seran aquellas cuentas quesean retuiteadas a menudo las que se espera que tengan mayor puntuacion authority y lapuntuacion hub sera mejor en las que mas retuiteen.

Primero se crean listas de enlaces entrantes y salientes para cada nodo a partir de laslistas de amigos o cuentas retuiteadas. A partir de estas listas se pueden ir calculando losvalores authority y hub de cada pagina iterando las instrucciones explicadas anteriormente.Como condicion de parada se comprobara que la norma de la diferencia entre los valores deuna iteracion y los valores de la anterior sea menor que una variable ε.

Para calcular las puntuaciones HITS de todas las cuentas se ha usado un ε = 0,00001. Lacomputacion ha durado apenas 3 minutos en ambos casos, convergiendo hasta una precisionε tras 20 o 19 iteraciones. El algoritmo es mucho mas eficiente en cuanto a espacio quePageRank, ya que no requiere utilizar ninguna matriz. En el apendice se pueden ver laslistas de los 30 usuarios mas relevantes de acuerdo a cada puntuacion.

22

Page 30: Recopilacion de´ tweets y medicion de la relevancia´

Capıtulo 6

Evaluacion de los resultados

A continuacion se analizan de distintas maneras los resultados ofrecidos por los algorit-mos ya comentados y se tratara de sacar alguna conclusion de este tema que en principio estan subjetivo.

6.1. Coeficiente de correlacion de Spearman

Primero se comparan las ordenaciones que proporcionan los distintos algoritmos, com-parandose tambien con una medida mas obvia como el numero de seguidores de las cuentas.Si el orden proporcionado por el algoritmo de PageRank fuese similar al orden por numerosde seguidores, todo este analisis no habrıa tenido mucho sentido. Para comparar las dis-tintas ordenaciones se usara el coeficiente de correlacion de Spearman. Este coeficiente seutiliza para calcular la correlacion entre dos variables aleatorias continuas. Estas variablesaleatorias seran en nuestro caso las ordenaciones que se quieran comparar.

La formula del coeficiente de correlacion Spearman es la siguiente:

ρ = 1−6 ∑

1≤i≤Nd2

i

N(N2−1)(6.1)

donde di es la diferencia de las posiciones del elemento i en ambas listas.

El valor resultante se encontrara entre 1 y -1, valores positivos indican una correlaciondirecta (cuanto mas alto se encuentre un valor en una lista, mas alto se encontrara tambienen la otra), mientras que valores negativos indican una correlacion inversa (cuanto mas altose encuentre un valor en una lista, mas bajo se encontrara en la otra). Valores cercanos a 0indican que no existe mucha correlacion entre ambas listas.

En nuestro caso primero sera necesario obtener la posicion de cada cuenta segun losdistintos ordenes, para lo que se ha creado una funcion que ordenara las cuentas segun losdistintos resultados y asignara un atributo a cada cuenta con su posicion. Una vez hecho esto

23

Page 31: Recopilacion de´ tweets y medicion de la relevancia´

CAPITULO 6. EVALUACION DE LOS RESULTADOS

se puede ejecutar una sencilla funcion que implemente el algoritmo. Comparando las pun-tuaciones de los distintos algoritmos y los numeros de seguidores obtenemos los siguientesresultados:

Cuadro 6.1: Resultados coeficiente de correlacion Spearman

PR PR-RTs HITS (auth) HITS (hub) HITS-RTs (auth) HITS-RTs (hub)Seguidores 0.740 0.531 0.533 0.260 0.455 0.077PR 0.701 0.780 0.532 0.673 0.338PR-RTs 0.675 0.495 0.885 0.414HITS (auth) 0.835 0.796 0.641HITS (hub) 0.650 0.740HITS-RTs (auth) 0.572

Como se puede comprobar, todos los coeficientes de correlacion son positivos, por loque se puede asumir que existe una relacion positiva entre todas las metricas. En algunoscasos esta relacion es bastante intuitiva. Por ejemplo, si nos centramos en los coeficientesque comparan las distintas metricas con los numeros de seguidores, es de esperar que porlo general cuentas con un gran numero de usuarios tengan numeros altos de PageRank y deauthority segun HITS, tanto usando el grafo de seguidores (en este caso la relacion es trivial)como usando el grafo de retuits (usuarios con gran numero de seguidores son retuiteados pormas usuarios). Y es en estos casos cuando los ordenes proporcionados por estas metricasmas se parecen al proporcionado segun el numero de seguidores, se aprecia tambien que lasmetricas basadas en los retuits difieren mas del orden de los seguidores que las basadas enlos seguidores.

Las listas ordenadas segun las puntuaciones hub del algoritmo HITS son las que masse diferencian, llegando casi hasta no mostrar ninguna relacion en el caso de la basada enretuits (0.077). Esto es de esperar, ya que no tendrıa por que haber ninguna relacion directaentre el numero de seguidores y el numero de cuentas a las que sigue o a las que retuiteauna cuenta. Sin embargo la ligera tendencia que se observa (puesto que los coeficientes sonpositivos) tambien se puede explicar: si calculamos la media del ratio amigos/seguidoresobtenemos una media de 1.1306 con una desviacion estandar de 1.4232. Por ello se puedeafirmar que existe una relacion entre el numero de amigos y el de seguidores en una cuenta,que explicarıa el valor positivo en la puntuacion hub segun los seguidores. En el caso basadoen retuits tambien se puede explicar argumentando que las cuentas con mas seguidores seranpor lo general mas activas y retuitearan mas, pero el coeficiente de correlacion es tan pequenoque no merece la pena profundizar mucho mas.

Ademas de los coeficientes que se comparan con el orden segun los seguidores, losque comparan el resto de metricas tambien tienen bastante sentido: el PageRank basado enseguidores es similar a la puntuacion authority del algoritmo HITS basado en seguidores,lo mismo ocurre con los mismos algoritmos basados en retuits, ambas puntuaciones hub se

24

Page 32: Recopilacion de´ tweets y medicion de la relevancia´

6.2. GANANCIA ACUMULADA DESCONTADA (DCG)

parecen, etc.

En conclusion, estos resultados han permitido comprobar dos cosas: los algoritmos sehan comportado de la manera esperada. Resultados inesperados podrıan indicar que hay unerror en el codigo. Los resultados de las metricas difieren de aquellos proporcionados pormetricas mas triviales como es el caso del numero de seguidores. Por lo tanto el uso de estosalgoritmos no ha sido en vano. Aunque falta demostrar si realmente ofrecen alguna mejorıaen cuanto a la relevancia. Este problema trataremos de resolverlo a continuacion.

6.2. Ganancia Acumulada Descontada (DCG)

Para realizar un analisis de la calidad de los resultados segun cada algoritmo una buenametrica de evaluacion es la Ganancia Acumulada Descontada (DCG, del ingles: Discoun-ted Cumulative Gain), que calcula la utilidad de una lista ordenada de elementos segun larelevancia de estos. Para ello cada elemento tiene que estar etiquetado a priori con un va-lor numerico que indique su relevancia. Una version mas primitiva de esta formula es laganancia acumulada, que consiste en sumar directamente los valores de relevancia de cadaelemento obtenido. Esta formula no tiene en consideracion la posicion de cada elemento, pe-ro sirve para calcular la utilidad de un resultado cuando unicamente una fraccion del numerototal de elementos existentes es devuelta. Se asume que esta utilidad esta directamende liga-da con la relevancia de cada documento.

CG =N

∑i=1

reli (6.2)

Si asumimos que la utilidad tambien depende de la posicion de cada elemento en la lista(es decir, cuanto antes en la lista aparezca un documento relevante, mas util sera), se puedeutilizar la formula de Ganancia Acumulada Descontada, en la que se penaliza de maneralogarıtmica la posicion de cada elemento.

DCG = rel1 +N

∑i=2

relilog2(i)

(6.3)

Los resultados de esta formula se pueden normalizar para que su valor se encuentre entre1 y 0. Esto se hara dividiendo el resultado DCG por el resultado ideal (IDCG). Este resul-tado se obtiene al aplicar la formula DCG a una lista de los documentos ordenados segunsu relevancia. El DCG normalizado (NDCG) servira para comparar distintas listas cuandocontengan los mismos elementos y difiera unicamente su orden, ya que si los elementos sondistintos en cada lista, el valor IDCG podrıa diferir tambien.

NDCG =DCGIDCG

(6.4)

25

Page 33: Recopilacion de´ tweets y medicion de la relevancia´

CAPITULO 6. EVALUACION DE LOS RESULTADOS

Para realizar cualquiera de estas formulas son necesarias unas mediciones de relevanciade las cuentas con las que poder comparar los resultados de nuestros algoritmos. Lo idealserıa utilizar colecciones para test o benchmark con elementos ya marcados con su relevan-cia. Estos tipos de benchmark existen con documentos de muchas areas distintas, como losofrecidos por la Text Retrieval Conference (TREC), pero no existe ninguno enfocado a larelevancia de cuentas en Twitter. La unica opcion es etiquetar manualmente las cuentas quehayamos considerado.

Etiquetar manualmente las 73 540 cuentas serıa un trabajo demasiado laborioso y quizasinnecesario. Puesto que en ordenaciones de relevancia lo mas importante son los primerosresultados, deberıa de bastar con analizar los primeros resultados de cada algoritmo. Por lotanto etiquetaremos unicamente las 100 cuentas con mayor puntuacion segun cada una delas metricas.

En lugar de asignar directamente un valor de relevancia a cada cuenta se ha decidido cla-sificar las cuentas en distintas categorıa y asignar a posteriori a cada categorıa una relevancia.El objetivo de esta decision es hacer mas sencilla (no es necesario conocer cuan relevante esrealmente cada usuario, solo a que categorıa pertenece) la tarea de clasificacion, ası comomas imparcial (estas categorıas, aunque tambien distan bastante de ser completamente obje-tivas, sı que lo son bastante mas que un valor de relevancia arbitrario). Por supuesto, comoson categorıas bastantes generales, en cada una habra usuarios que realmente son muy influ-yentes y otros que no lo son en absoluto. Las distintas categorıas y sus relevancias asignadasseran las siguientes:

Polıticos - Partidos polıticos, polıticos, entidades del gobierno, etc. (Relevancia: 4)

Medios de comunicacion (MC) especializados en polıtica - Programas de televisiono periodistas especializados en polıtica o economıa, etc. (Relevancia: 4)

Otros MC - Medios de comunicacion generalistas o especializados en otras areas.(Relevancia: 3)

Personalidad - Famosos y celebridades de distintas ındoles. (Relevancia: 2)

Personalidad en Twitter - Cuentas de Twitter muy influyentes, gran ratio seguido-res/amigos, pero poca influencia fuera de Twitter (Relevancia: 2)

Otros - Cualquier usuario corriente de Twitter sin demasiada influencia (Relevancia:1)

Irrelevante - Cuentas de spam, otros paıses, etc. Cuentas que con muy poca probabi-lidad vayan a hablar de polıtica espanola. (Relevancia: 0)

Para etiquetar las cuentas se ha decidido crear una aplicacion online en Django, parahacer mas sencillo el acceso a las paginas de Twitter de las cuentas, desde las que se obtiene

26

Page 34: Recopilacion de´ tweets y medicion de la relevancia´

6.2. GANANCIA ACUMULADA DESCONTADA (DCG)

la informacion necesaria para clasificar la cuenta o al menos para continuar la investigacionen la web. En muchos casos la clasificacion ha sido arbitraria, ya que la lınea de separacionentre campos como medios de comunicacion especializados y medios de comunicacion ge-nerales o entre cuentas de Twitter corrientes y cuentas de Twitter muy influyentes puede seralgo difusa; por lo que hay que tomar estos resultados como medidas aproximadas, cosa quesiempre sera el caso si se trata de medidas subjetivas como la relevancia.

En total han sido 485 cuentas las clasificadas. La distribucion segun la categorıa ha sidola siguiente:

Cuadro 6.2: Distribucion de cuentas clasificadas

Polıticos 40MC polıtica 70Otros MC 78Personalidades 7Personalidades Twitter 32Otros 211Irrelevante 47

Estos resultados podran compararse usando CG o DCG, ya que son una pequena muestraordenada de la coleccion total de cuentas. En cambio para calcular el NDCG serıa necesarioque los resultados devueltos fuesen los mismos. Para poder calcular los valores normaliza-dos, podemos usar como resultado, en vez de las listas ordenadas de las 100 cuentas masrelevantes segun cada metrica, la lista de todas las cuentas etiquetadas ordenadas segun cadametrica.

Cuadro 6.3: Resultados de Ganancia Acumulada Descontada

CG DCG NDCGPR 351 76.933 0.965PR-RTs 309 69.429 0.957HITS (auth) 296 68.038 0.949HITS-RTs (auth) 283 61.504 0.924Seguidores 172 36.210 0.855HITS (hub) 137 31.884 0.834HITS-RTs (hub) 99 20.788 0.797

CG y DCG calculados a partir de las primeras 100 cuentas de cada lista, NDCG calculado apartir de la lista de todas las cuentas clasificadas ordenada segun cada metrica.

En estos resultados se puede ver que, segun tanto CG como DCG como NDCG, existeun claro orden en la calidad de la ordenacion de cada algoritmo o metrica:

27

Page 35: Recopilacion de´ tweets y medicion de la relevancia´

CAPITULO 6. EVALUACION DE LOS RESULTADOS

PageRank > PageRank-Retuits > HIT S(auth)> HIT S-Retuits(auth)> Seguidores

Cualquiera de los algoritmos ofrece mejores resultados que la simple ordenacion por se-guidores, excepto las puntuaciones hub, pero esto no deberıa ser sorpresa, ya que ellas noaspiran a indicar los elementos mas influyentes. De ahora en adelante no se tendran en cuentalas puntuaciones hub.

6.3. Analisis de representatividad de polaridad de los tuits

Asumiendo que una muestra de los elementos mas relevantes de una coleccion son re-presentativos del contenido de toda la coleccion, es posible realizar otra prueba para evaluarla calidad de las metricas de relevancia. Esta prueba consistira en, primero, analizar la pola-ridad media de toda la coleccion de tuits recogidos; a continuacion se volvera a analizar estapolaridad media, pero unicamente de los tuits pertenecientes a los cuentas mas relevantessegun alguna de estas metricas y se compararan los resultados.

Sera necesario un detector de polaridad, para ello se ha usado uno desarrollado en laUniversitat Politecnica de Valencia por F. Pla y L. Hurtado y que ya ha sido utilizado envarios estudios [20][11][21].

Antes de comenzar, probaremos el detector para comprobar que funcione correctamente.Para ello utilizaremos las 100 cuentas mas relevantes segun su puntuacion PageRank. Estascuentas se etiquetaran con el partido polıtico con el que esten afiliadas, en el caso de quesean cuentas de polıticos o partidos polıticos. Se espera que estas cuentas muestren unamejor polaridad con respecto a su propio partido que al resto. En total 23 de las cuentas hansido etiquetadas.

A continuacion se obtendran los 1 000 tuits mas recientes de cada una de estas cuentaspara tener una muestra mas amplia de cada cuenta y poder predecir su polaridad con mayorprecision. El detector de polaridad analizara cada uno de esos tuits, asignando a cada unouna etiqueta de polaridad. A estas etiquetas de polaridad les asignaremos una puntuacionpara posteriormente poder realizar la media:

PP - Muy positivo (Puntuacion: 2)

P - Positivo (Puntuacion: 1)

NEU - Neutral (Puntuacion: 0)

N - Negativo (Puntuacion: -1)

NN - Muy negativo (Puntuacion: -2)

NONE - Ninguna polaridad, puede confundirse con NEU (Puntuacion: 0)

28

Page 36: Recopilacion de´ tweets y medicion de la relevancia´

6.3. ANALISIS DE REPRESENTATIVIDAD DE POLARIDAD DE LOS TUITS

Usando expresiones regulares se analizaran todos los tuits obtenidos y se etiquetarantambien por las menciones a los distintos partidos polıticos. En este caso se ha buscadotambien por el partido Izquierda Unida. En la obtencion inical de tuits, no habıa suficientesmenciones del partido como para justificar su inclusion en esa busqueda, pero en este casovarias de las cuentas etiquetadas pertenecen al partido Izquierda Unida, por lo que merecela pena incluırlo. Se buscaran tanto los nombres enteros de los partidos como sus siglas. Deesta manera sabremos que partido, o partidos, menciona cada tuit.

Entonces, siendo M(i) el conjunto de tuits que mencionan al partido i, Ta el conjunto detuits escritos por la cuenta a y p(t) la puntuacion asignada por el detector de polaridad altuit t, la media de la polaridad Pa(i) de la cuenta a con respecto al partido i se calcula de lasiguinte manera:

Pa(i) =∑

t∈Mi∩Ta

p(t)

|Mi∩Ta|(6.5)

Calculado esto para todas las cuentas etiquetadas, obtenemos una serie de puntuacionespor cada cuenta y cada partido. El objetivo sera que la puntuacion mayor de cada cuenta seala del partido polıtico al que esta afiliado. Los resultados se encuentran en la tabla 6.4.

Se puede observar en estos resultados, que el detector funciona de manera aceptable.Unicamente 5 cuentas de 23 han sido incorrectamente interpretadas. Este error probable-mente se deba en la mayorıa de los casos al pequeno tamano de la muestra, ya que el numerode menciones que hacıa una cuenta a cada partido por lo general es muy bajo, como se puedever en la siguiente grafica:

0-19 20-39 40-59 60-79 80-99 100+

0

20

40

60

80

100 99

145 1

7 10

menciones de una cuenta a un partido

com

bina

cion

es(c

uent

ax

part

ido)

Los resultados son aceptables, ası que emplearemos el detector de polaridad para poner

29

Page 37: Recopilacion de´ tweets y medicion de la relevancia´

CAPITULO 6. EVALUACION DE LOS RESULTADOS

Cuadro 6.4: Resultados prueba de detector de polaridad

Esperado PP PSOE Podemos Cs UPyD IUahorapodemos Podemos -0.29 -0.45 0.6 0 - -agarzon IU -0.68 -0.69 0.45 0.67 - -PSOE PSOE -0.15 0.69 0 0 - -sanzhezcastejon PSOE -0.35 0.84 - - - -GLlamazares IU -0.28 -0.46 -0.45 -0.33 - 0.5Albert Rivera Cs -0.04 -0.15 -0.1 0.37 -0.33 -PPopular PP 0.53 -0.68 0.22 0.5 - -ierrejon Podemos -0.54 -0.4 0.6 -1 - -cayo lara IU -0.1 -0.83 0.5 - - 0JoseantonioJun PSOE -1.09 -0.5 -1.2 -1.17 - -MonederoJC Podemos -0.96 -0.21 0.07 -1.5 - -UPyD UPyD -0.96 -1.08 0.67 - 0.37 -Pedro Zerolo PSOE -0.57 0.72 0.33 - - -Tonicanto1 UPyD -0.09 -1.14 0.13 -0.29 0.43 -iunida IU -0.52 -0.75 -1 - - 0.63ccifuentes PP 1.11 0 0.5 0.5 - -CiudadanosCs Cs -0.64 -0.56 0.4 0.96 - -pnique Podemos 0.11 0.08 0.55 -0.6 - -TeresaRodr Podemos -0.15 -0.28 0.67 - - -mdcospedal PP 0.77 -1.09 1.5 - - -LuisSalvador Cs -0.16 -0.08 -0.17 1.17 - -lozanoirene UPyD -0.53 -1.17 - 0 0.66 -sevillajordi PSOE -0.6 0 -0.73 0.25 - -

En la tabla se han marcado la mejor polaridad de cada cuenta. Cuando esta polaridad nocoincide con la esperada, se ha marcado en rojo. No se han tenido en cuenta y se hanindicado con “-” los casos en los que un partido era mencionado menos de dos veces.

a prueba la utilidad de nuestras puntuaciones de relevancia por medio de un posible usopractico. Si tiene exito, significara que para obtener una idea general de la opinion de losusuarios de Twitter sobre un tema, en lugar de analizar las opiniones de todos los usuarios,bastarıa con analizar la de una pequena muestra de ellos, elegida segun una puntuacion derelevancia y que serıa mas representativa de la opinion general cuanto mejor fuese la metricade relevancia usada.

Tras obtener las puntuaciones de polaridad de toda la red de cuentas obtenidas y poste-riormente las de las cuentas mas significativas segun cada metrica por separado, se calculala media de la diferencia entre las obtenidas de las muestras parciales y de la coleccion com-pleta. Para simplificar la comparacion, se combinaran las etiquetas de polaridad en 3 grupos:

30

Page 38: Recopilacion de´ tweets y medicion de la relevancia´

6.3. ANALISIS DE REPRESENTATIVIDAD DE POLARIDAD DE LOS TUITS

Las positivas y muy positivas bajo el grupo general positivo p, las de polaridad neutral y lasque no muestren polaridad bajo el grupo general neutral neu, y las negativas y muy negativasbajo el grupo general negativo n.

La siguiente ecuacion detalla la obtencion de esta media, en la que {p;n;neu} es elconjunto de grupos de etiquetas; P es el conjunto de los partidos polıticos; polai(et) es lacantidad de tuits con polaridad et que mencionan al partido polıtico i encontrados en lamuestra de tuits a; I es la coleccion completa de tuits, que proporcionara la distribucion depolaridad ideal que se tratara de aproximar con las otras muestras; di fa(i) es la diferenciamedia calculada de la polaridad entre la muestra a y la ideal con respecto al partido polıticoi; y di fa es la media de las diferencias medias calculadas de la polaridad entre la muestra ay la ideal para todos los partidos polıticos.

di fa(i) =√

∑et∈{p;n;neu}

( polIi(et)|I| −

polai(et)|a| )2

di fa =√

∑i∈{P}

di fa(i)(6.6)

Usando muestras de tanto los 100 como los 1 000 usuarios mas relevantes, se obtienenlos siguientes resultados:

Cuadro 6.5: Diferencia en las polaridades medidas en cada muestra con respecto a las polaridadesde la coleccion completa

Tamano muestra 100 1000Seguidores 0.086 0.089PageRank 0.08 0.135PageRank-RTs 0.061 0.108HITS (auth) 0.105 0.077HITS-RTs (auth) 0.08 0.115

Las diferencias con respecto a la polaridad ideal son similares para todas las muestras yno se puede determinar que tecnica es mejor para elegir la muestra, ya que tambien dependede la cantidad de la muestra. Para una muestra de 1 000, la mejor aproximacion se obtienecon el algoritmo HITS segun el grafo de seguidores (0.077), mientras que este algoritmoofrece el peor resultado cuando se obtiene una muestra de 100 cuentas (0.105). En esta casoel mejor algoritmo es el de PageRank segun el grafo de retuits (0.061).

Dados estos resultados no se puede concluir que la puntuaciones de relevancia imple-mentadas sirvan para poder obtener una muestra mas representativa del total de usuarios deTwitter. Esto puede ser debido a multiples motivos: por ejemplo a que la representatividad yla relevancia de una muestra puedan no ser variables relacionadas en este caso, a los fallosde precision del detector de polaridades, etc.

31

Page 39: Recopilacion de´ tweets y medicion de la relevancia´

CAPITULO 6. EVALUACION DE LOS RESULTADOS

Uno de los motivos por los que se decidio usar esta muestra de tuits, de polıtica espanolaen tiempos de campana electoral, fue para poder ser luego comparada con los resultados deencuestas y sondeos polıticos realizados por distintas organizaciones. A la polaridad obteni-da por cada cuenta se le asignarıa un peso calculado a partir de su relevancia, de esta maneralas opiniones de cuentas relevantes tendrıan mas importancia al calcular la opinion media.Se esperaba que esta opinion general ponderada se aproximase mas a la opinion generalobservada en los resultados de los distintos sondeos que la no ponderada. Se parte por lotanto de que los usuarios de Twitter no son a priori una muestra representativa de la opinionpublica [15]. Sin embargo este enfoque tiene bastantes problemas, ya que no hay ningunarazon para asumir que las cuentas que sean consideradas mas relevantes vayan a ser masrepresentativas que el resto. Por lo tanto se decidio abandonar este enfoque.

32

Page 40: Recopilacion de´ tweets y medicion de la relevancia´

Capıtulo 7

Analisis de clusteres

En este capıtulo se explicara como se han analizado las cuentas de Twitter obtenidas pormedio de la creacion de clusteres. Se ha estudiado la relevancia y la alineacion polıtica (po-laridades con respecto a cada partido) de las cuentas dentro de cada cluster para comprobarsi se puede usar esta tecnica a la hora de considerar opiniones. Los clusteres se han creadopor medio del algoritmo k-medoids, que sera explicado mas adelante. Para este algoritmo esnecesaria una funcion o matriz de distancias, se utilizaran dos distintas: una matriz creada apartir del grafo de seguidores y otra creada a partir del grafo de retuits.

7.1. Estudio de la conectividad

Para conseguir las matrices de distancia a partir de los grafos de seguidores o retuits,sera recomendable partir de un grafo conexo, es decir, que para cualquier par de vertices ay b exista un camino de a hasta b o de b hasta a. Si el grafo no es conexo, podrıa haberpequenos grupos de elementos separados del resto (o elementos completament solos). Estoscomponentes tendrıan una distancia infinita con respecto a los elementos de otros compo-nentes del grafo, lo que harıa necesario que, a la hora de crear clusteres, se tuviese queasignar un cluster a cada uno de ellos. En el algoritmo k-medoids el numero de clusteresusado es determinado a priori y su numero aumenta el coste de computacion del algoritmo,por ello es importante ahorrar clusteres cuando sea posible y evitar componentes del grafoinconexos.

Las matrices usadas para el algoritmo PageRank, al no tener ningun elemento nulo,tambien definıan un grafo conexo, segun el cual siempre existıa al menos una pequena po-sibilidad de saltar desde cualquier pagina a cualquier otra pagina. Pero en este caso se debeusar otro enfoque, ya que no se busca crear una matriz estocastica.

Basandonos en el modelo G(n, p) de generacion de grafos de Erdos-Renyi [7], se puedepredecir la existencia de un unico componente gigante en el que se encuentren conectadas lamayorıa de las cuentas. Este modelo se usa para la generacion de grafos aleatorios y, si bienes cierto que existen modelos mas apropiados para redes sociales como Twitter (por ejem-

33

Page 41: Recopilacion de´ tweets y medicion de la relevancia´

CAPITULO 7. ANALISIS DE CLUSTERES

plo el modelo Barabasi–Albert o el Watts–Strogatz), este modelo ofrece una aproximacionaceptable, pues solo nos interesan los aspectos relacionados con un componente gigante, locual es una conclusion importante del modelo Erdos-Renyi. Segun este, siendo n el numerode nodos del grafo y p la probabilidad de entre dos nodos cualesquiera exista un vertice, sinp > 1 (o lo que serıa equivalente: si existe de media mas de un vertice por nodo, lo cuales cierto en nuestro caso) entonces es altamente probable que exista un unico componentegigante y que ningun otro componente tendra un tamano mayor que log(n). Esta hipotesisse pondra a prueba en nuestros grafos al analizar su conectividad.

Dada una matriz booleana M que indique los vertices existentes entre cada nodo seanen la direccion que sean (la direccion de los vertices no es relevante, ya que interesa obte-ner componentes conexos, no es necesario que sean fuertemente conexos), se utilizara unalgoritmo iterativo para obtener los distintos componentes de nuestro grafo.

En los graficos 7.1 se pueden apreciar los tamanos de los distintos componentes tantodel grafo de seguidores como del de retuits. Ambas topologıas parecen ser muy similares.Se aprecia claramente que tienen un unico componente gigante (compuesto por 69 512 ele-mentos en el caso de los seguidores y por 63 396 elementos en el caso de los retuits), lo quecorrobora lo predicho segun el modelo Erdos-Renyi. Sin embargo el mayor componente nogigante esta compuesto por 31 o 16 elementos segun el grafo, que es mayor que el previstolımite, cuyo valor es log(n) (en nuestro caso 4).

Estos componentes son lo suficientemente pequenos como para poder ser ignorados,puesto que se puede asumir que las cuentas pertenecientes a estos componentes no tendranmucha relevancia al no tener ninguna relacion con elementos del componente principal.Ahora se pasara a la creacion de clusteres dentro de estos componentes principales conexos.

Figura 7.1: Tamano de los componentes conexos de los grafos

Usando grafo de seguidores

1 31 69 512

1

25

111

3 461

tamano componente

num

ero

deco

mpo

nent

es

Usando grafo de retuits

1 16 63 396

1

18

115

9 778

tamano componente

num

ero

deco

mpo

nent

es

34

Page 42: Recopilacion de´ tweets y medicion de la relevancia´

7.2. ALGORITMO DE FLOYD-WARSHALL

7.2. Algoritmo de Floyd-Warshall

Sera necesario definir una funcion de distancias entre elementos para poder calcular losclusteres. Puesto que las cuentas de Twitter no se encuentran en un espacio euclıdeo definidopor algun numero de dimensiones, ha sido necesario utilizar un metodo menos convencional.Se han creado matrices de distancias, que indican la distancia entre dos elementos cuales-quiera, a partir de las matrices de transicion que indiquen los enlaces ya existentes entre doscuentas, tanto en el caso de los seguidores como en el de los retuits.

Puesto que muchas cuentas no estan directamente conectadas, la distancia entre ellasinicalmente sera infinita. Pero, si utilizamos unicamente aquellas que se ha demostrado queforman un componente conexo, se podra llegar de cualquier cuenta a cualquier otra saltandopor distintos enlaces y creando un camino entre ellas. La distancia entre distintas cuentassera entonces la distancia del camino mas corto entre ellas.

Para calcular esta distancia de los caminos mas cortos se ha usado el algoritmo de Floyd-Warshall, que parte de la matriz de las distancias de las transiciones inciales entre los distin-tos elementos. Estas transiciones iniciales tendran un valor infinito cuando no exista cone-xion entre los nodos y en caso contrario, un valor correspondiente a la distancia entre ellosque se definira mas adelante. Cabe destacar que el algoritmo de Floyd-Warshall devuelveunicamente las distancias de los caminos mas cortos, no los caminos en sı, pero para nuestroobjetivo bastara con esto. A continuacion se muestra el algoritmo:

Algoritmo 3 Algoritmo de Floyd-WarshallEntrada: Matriz de transiciones iniciales D, con valores di j (1≤ i≤ n,1≤ j ≤ n)

1: para todo 1≤ i≤ n hacer2: para todo 1≤ j ≤ n hacer3: para todo 1≤ k ≤ n hacer4: si d jk > d ji +dik entonces5: d jk = d ji +dik6: fin si7: fin para8: fin para9: fin para

Mantener la direccion de los enlaces complicarıa el calculo de los clusteres y harıa muydifıcil su interpretacion, por lo que se ha decidido convertir todos los enlaces en bidirec-cionales. Para poder expresar la diferencia entre aquellas relaciones que originalmente eranbidireccionales y las que no (por ejemplo, la diferencia entre la relacion de dos cuentas quese siguen mutuamente y la de una cuenta que sigue a otra, pero no en el caso inverso) se lesasignaran valores de distancia distintos a ambas relaciones. Cuando la relacion fuese bidi-reccional, se le asignara a esta una distancia de 0,5, mientras que si era unidireccional se leasignara 1. De esta manera un par de cuentas estaran mas proximas entre ellas si su relacion

35

Page 43: Recopilacion de´ tweets y medicion de la relevancia´

CAPITULO 7. ANALISIS DE CLUSTERES

es mutua (ya sea que ambas se siguen mutuamente o que ambas se retuitean mutuamente).

Definidas estas distancias, las matrices de transiciones iniciales son simetricas, por loque, con realizar unas pequenas modificaciones al algoritmo 3, sera suficente recorrer uni-camente la mitad de la matriz.

7.3. Algoritmo k-medoids

Como ya se ha dicho, se utilizara al algoritmo de clusterizacion k-medoids, el cualesta inspirado en el algoritmo k-means. k-means es uno de los algoritmos de clusteriza-cion mas populares, el cual divide una coleccion de n elementos en k clusteres (el numerode clusteres k debe de ser escogido a priori), de tal manera que cada elemento pertenezcaal cluster cuya media sea mas cercana y tratando de minimizar la suma de las distancias decada elmento a la media de su cluster.

Para poder obtener la media de un cluster es necesario que se este usando una distanciaeuclıdea. En nuestro caso se esta usando una funcion de distancia no euclıdea (la matrizde distancias obtenida en la seccion anterior), que harıa imposible obtener una media, almenos de la manera tradicional. Es por este motivo que se ha optado por usar el algoritmok-medoids.

El funcionamiento del algoritmo k-medoids es practicamente identico al de k-means,pero en lugar de usar como centro del cluster una media, se escogera uno de los elementospertenecientes a cada cluster que actuara como medoide (del ingles: medoid) de este. Unmedoide es un elemento representativo de un conjunto de datos, que actua como la media deeste cuando sea imposible obtener una media verdadera. Las distancias de los elementos secalcularan por lo tanto con respecto al medoide de su cluster, el cual es escogido tratando deminimizar estas distancias.

El metodo mas comun para la creacion de estos clusteres es la reparticion alrededor demedoides o PAM (del ingles: Partitioning Around Medoids) el cual selecciona unos medoi-des iniciales (de manera aleatoria o segun cualquier otro metodo) y forma los clusteres alrededor de ellos. A continuacion, se probara a intercambiar cada medoide con cada elementono medoide y se calculara el coste total de la nueva configuracion, deshaciendo el cambioen caso de que el coste haya aumentado. Este proceso se repetira mientras el coste totaldescienda. Ya que en cada iteracion hay que calcular el coste total (calcular este coste reque-rira realizar k−n operaciones) por cada uno de los k medoides y por cada uno de los k−nelementos no medoides, su complejidad sera O(k(n− k)2).

Para el trabajo se ha usado un algoritmo distinto mas eficiente, disenado por H. Parky C. Jun en [18]. Este algoritmo logra una complejidad O(kn) por iteracion y propone unmetodo de seleccion de medoides iniciales que a menudo reduce el numero de iteraciones. Elalgoritmo junto con el metodo propuesto de seleccion de medoides iniciales es el siguiente:

36

Page 44: Recopilacion de´ tweets y medicion de la relevancia´

7.3. ALGORITMO K-MEDOIDS

Algoritmo 4 Computo de clusteres por k-medoidsEntrada: Matriz de distancias D, con distancias di j (1≤ i≤ n,1≤ j ≤ n); numero de

clusteres k1: crear vector v2: para todo 1≤ i≤ n hacer3: vi =

n∑j=1

d jin∑

k=1d jk

4: fin para5: ordenar los elementos segun los valores de v en orden ascendente y seleccionar los k

primeros como medoides iniciales6: asignar cada elemento al cluster con el medoide mas cercano7: calcular coste total8: repetir9: para todo cluster hacer

10: para todo elemento del cluster hacer11: calcular suma de distancias desde elemento hasta cada otro miembro del cluster12: fin para13: asignar como nuevo medoide del cluster al elemento con la menor suma de distan-

cias14: fin para15: asignar cada elemento al cluster con el medoide mas cercano16: calcular nuevo coste total17: hasta que coste actual = coste anterior

Para calcular los clusteres es necesaria una matriz de distancias de gran tamano, como enel caso de PageRank. Por desgracia en este caso no se podra dividir la matriz en bloques tanfacilmente, ya que el acceso a la memoria no es tan ordenado. Es por ello que se ha decididono usar todos las cuentas para crear los clusteres, si no unicamente aquellas mas relevantes.Para ello se usara la puntuacion PageRank de acuerdo a las relaciones de seguidores, ya quees la mejor metrica considerando los resultados obtenidos en la seccion 6.2.

Para que haya unicamente un componente conexo, es necesario realizar la comprobacionde conectividad con unicamente las cuentas que se vayan a usar para la creacion de cluste-res. Si no se hiciese esto, nodos esenciales para conectar varias partes del grafo podrıan noestar incluıdos entre los escogidos para crear los clusteres, dejando entonces distintas partesinconexas.

Una vez creados los clusteres, calcularemos para cada cluster la relevancia media de sususuarios y las polaridades medias con respecto a cada uno de los partidos polıticos segun lostuits publicados por sus usuarios. Para calcular la relevancia, se ha utilizado la puntuacionde PageRank. Para calcular las polaridades medias, se aprovecharan las polaridades medidaspara cada tuit en la seccion Analisis de representatividad de polaridades 6.3. Por cada cluster

37

Page 45: Recopilacion de´ tweets y medicion de la relevancia´

CAPITULO 7. ANALISIS DE CLUSTERES

y partido polıtico se calculara la polaridad media a partir de los tuits publicados por cuentaspertenecientes al cluster y que mencionen al partido polıtico, de manera similar a como sehizo en la seccion 6.3.

Los resultados obtenidos para una muestra de n = 1000 y usando k = 6 clusteres son lossiguientes:

Cuadro 7.1: Tamano y relevancia media de los clusteres

Seguidores RetuitsTamano Relevancia Tamano Relevancia618 0.00637 546 0.00220168 0.00072 144 0.00227

85 0.00143 128 0.0011965 0.00053 64 0.0006139 0.00094 24 0.0006824 0.00129 49 0.00061

Cuadro 7.2: Polaridades de los clusteres con respecto a cada partido polıtico (grafo de seguidores)

Tamano PP PSOE UPyD Podemos Ciudadanos618 −0.294 −0.264 0.015 0 −0.232168 −0.339 −0.335 0.057 −0.007 −0.287

39 −0.239 −0.212 −0.194 −0.667 −0.26165 −0.442 −0.279 −0.383 0.071 −0.06785 −0.266 −0.343 −0.198 0.257 −0.33324 0.200 −0.279 −0.383 0.071 0.257

Cuadro 7.3: Polaridades de los clusteres con respecto a cada partido polıtico (grafo de retuits)

Tamano PP PSOE UPyD Podemos Ciudadanos546 −0.257 −0.349 0.019 −0.042 −0.309144 −0.449 −0.167 −0.179 −0.091 0.047128 −0.248 −0.343 −0.187 0.340 −0.092

64 −0.419 −0.192 −0.178 −0.061 −0.46349 −0.432 −0.380 −0.248 −0.136 0.05224 −0.204 −0.424 0.013 −0.100 −0.388

38

Page 46: Recopilacion de´ tweets y medicion de la relevancia´

7.3. ALGORITMO K-MEDOIDS

A partir de los resultados de la tabla 7.1 se puede observar que existe un cluster detamano significativamente mayor. Este cluster por lo general tiene mas relevancia media queel resto; excepto en el caso del segundo mayor cluster del grafo de retuits, que tiene menorrelevancia que el mayor. La desviacion tıpica no se muestra en la tabla, pero es en todoslos casos menor que 4.4e−19. Es tan pequena que se puede considerar que sı que existendiferencias entre las relevancias de los distintos clusteres. Aunque, dado que las diferenciasentre los valores de las medias de relevancia no son muy significativas y que los tamanos delos clusteres difieren tanto, no parece que esta tecnica de clusterizacion pueda ser muy util ala hora de predecir la relevancia de las cuentas.

En los resultados de polaridad para ambas clusterizaciones no se pueden observar pre-ferencias claras de partidos polıticos. En todos los clusteres las puntuaciones de los mismospartidos son similares y es en los clusteres mas pequenos donde mas diferencias en las po-laridades hay con el resto. Estas diferencias tampoco son muy significativas debido a ladisparidad de tamanos de los clusteres, ya que las diferencias en los grupos mas pequenospodrıan deberse a anomalıas como errores en el detector de polaridad.

Se ha tratado de visualizar los grafos y sus clusteres empleando la tecnica de escaladomultidimensional o MDS (del ingles: Multidimensional scaling). Esta tecnica consiste enasignar coordenadas espaciales a los elementos de una coleccion, tratando de representar lasimilitud de los distintos elementos con la distancia que hay entre ellos. Elementos similaresse encontraran proximos segun las coordenadas resultantes. De esta manera, usando las ma-trices de distancias ya creadas como matrices de disimilitud (que indica cuan distintos sonlos elementos), se podrıa utilizar MDS para visualizar los graficos.

Figura 7.2: Visualizacion del grafo de seguidores, usando n = 1000 y k = 6

39

Page 47: Recopilacion de´ tweets y medicion de la relevancia´

CAPITULO 7. ANALISIS DE CLUSTERES

Para la visualizacion se ha utilizado la clase manifold.MDS de la librerıa scikit-learnde Python, que emplea el algoritmo SMACOF (Scaling by Majorizing a Complicated Fun-ction). Este algoritmo trata de minimizar la diferencia existente entre las distancias ideales(las indicadas por la matriz de disimilitud) y las distancias euclideas del resultado.

En las visualizaciones 7.2 y 7.3, cada punto representa una cuenta y su color indica elcluster al que pertenece. En ambos casos se aprecia que la mayorıa de los puntos son de colorrojo, lo que significa que la mayorıa de las cuentas han sido asignadas al mismo cluster. Pordesgracia no se puede observar ninguna agrupacion segun los clusteres: los colores de losnodos estan muy desordenados y sus posiciones no parecen tener ninguna relacion con losclusteres a los que pertenecen.

Figura 7.3: Visualizacion del grafo de retuits, usando n = 1000 y k = 6

Los ejes azules indican relaciones bidireccionales, mientras que los verdes indican rela-ciones unidireccionales. En el grafo de seguidores abundan las relaciones bidireccionales, sepuede asumir que tambien hay muchas unidireccionales aunque no sean visibles, ya que lasbidireccionales han sido dibujadas encima de las otras. En cambio resulta interesante que enel caso de los retuits apenas aparecen relaciones bidireccionales. Esto se puede entender sitenemos en cuenta lo explicado en el tercer parrafo de la seccion Recopilacion de informa-cion de los usuarios 4.2: cuando aparece que una cuenta reuitea a otra, es probable que no lehaya retuiteado directamente. Esto podrıa indicar que no existe una relacion de seguimientoentre la cuenta que ha retuiteado y el autor del tuit, lo que hace poco probable una relacionbidireccional de retuits.

Otra explicacion, mas sencilla y quizas mas relevante, es que la cantidad de retuits leıdoses muy pequena. Cada cuenta ha retuiteado de media tuits creados por 140 cuentas distintas,

40

Page 48: Recopilacion de´ tweets y medicion de la relevancia´

7.3. ALGORITMO K-MEDOIDS

mientras que de media cada usuario sigue a 971 cuentas (ambas cifras incluyen cuentas queno han sido recogidas en nuestra coleccion). Dados estas cifras y suponiendo que un usuariosolo pudiese retuitear a cuentas que sigue, se puede calcular que la media de relaciones deretuits mutuas de un usuario serıa 20. Por supuesto, puesto que un usuario no solo retui-teara a sus amigos (como se ha explicado en el parrafo anterior), que en nuestra coleccionno estan recogidos ni todos los amigos ni todas las cuentas a la que ha retuiteado un usuarioy que el tamano de la muestra que hemos cogido para calcular los clusteres es aun muchomas reducido. el numero de estas relaciones mutuas de retuits que podemos observar en lavisualizacion sera bastante inferior que 20.

Se han repetido estas analisis para muestras de otros tamanos (100≤ n≤ 3000) y usan-do distintos numeros de clusteres (3 ≤ k ≤ 6), pero en todos los casos los resultados hansido muy similares: un cluster significativamente mas grande que el resto, diferencias en laspolaridades no muy significativas y ningun patron reconocible en la visualizacion.

41

Page 49: Recopilacion de´ tweets y medicion de la relevancia´

Capıtulo 8

Conclusiones

Durante este proyecto se ha creado una base de datos MongoDB y una aplicacion enPython que utiliza la API de Twitter para obtener tuits e informacion de las cuentas deusuarios. Se ha tenido que estudiar la documentacion tanto de MongoDB (de lo que no setenıan conocimientos previos al ser un sistema de bases de datos NoSQL) como de la APIde Twitter.

A continuacion, se han implementado los algoritmos PageRank y HITS. Se encontraronproblemas debido al tamano de las matrices, pero que fueron resueltos gracias al uso de lalibrerıa PyTables. Las ordenaciones proporcionadas por estos algoritmos fueron puestas aprueba y se obtuvieron resultados muy satisfactorios: los resultados de los distintos algo-ritmos eran claramente mejores que una ordenacion segun el numero de seguidores de lascuentas. La mejor ordenacion ha sido la proporcionada por el algoritmo PageRank a partirdel grafo de seguidores.

El analisis de representatividad de polaridades de los tuits no ha proporcionado los re-sultados esperados. Sin embargo, este experimento tampoco ha sido en vano, puesto que laprueba enfocada a calcular la precision del detector de polaridad usado sı que ha sido exitosa,demostrando ası su correcto funcionamiento.

Se ha implementado un algoritmo de clusterizacion que ha sido aplicado a las cuentasde Twitter recogidas. No ha sido posible detectar entre los resultados ningun patron sig-nificativo, pero es un estudio que merecıa la pena realizar y que ha servido para adquirirnuevos conocimientos de librerıas de Python y de distintas formas tanto de estudiar como devisualizar datos.

Durante toda la realizacion de este trabajo se ha adquirido tambien mucha experiencia ala hora de investigar artıculos cientificos y demas bibliografıa. Por ultimo, para la redaccionde este documento se ha utilizado LaTeX, herramienta que ha resultado ser muy flexible ycomoda.

42

Page 50: Recopilacion de´ tweets y medicion de la relevancia´

Trabajos futuros

Como trabajos futuros hay multiples posibilidades. Aun se podran realizar mas pruebascon los algoritmos HITS y PageRank: usando una coleccion mas grande de tuits o tuitsenfocados a otro campo especıfico, probar otras variaciones de estos algoritmos (como laspropuestas en [6]), contrastar la calidad de sus ordenaciones por medio de otras metricas,etc.

En cuanto a los clusteres, es posible que, con otro tipo de clusterizacion, utilizandouna funcion de distancia distinta o con una mayor cantidad de muestras se pudiese obtenerresultados mas concluyentes, por lo que es un area en la que aun merece la pena seguirinvestigando.

Como se ha comentado en la introduccion, existe un gran interes en el procesamientodel contenido de las redes sociales, y en particular en Twitter, por lo que se podrıa seguirtrabajando en la busqueda de otros posibles usos practicos de estas tecnologıas.

43

Page 51: Recopilacion de´ tweets y medicion de la relevancia´

Bibliografıa

[1] ARTHUR, CHARLES: ((How low-paid workers at ’click farms’ create appearance of onlinepopularity)). The Guardian, 2013.http://www.theguardian.com/technology/2013/aug/02/click-farms-appearance-online-popularity

[2] BRIN, SERGEY y PAGE, LAWRENCE: ((The Anatomy of a Large-Scale Hypertextual WebSearch Engine)). Computer Networks and ISDN Systems, 1998.http://infolab.stanford.edu/˜backrub/google.html

[3] CHIEN, ONG KOK; HOONG, POO KUAN y HO, CHIUNG CHING: ((A Comparative Study ofHITS vs PageRank Algorithms for Twitter Users Analysis)). Proceedings of the InternationalConference on Computation Science and Technology 2014, 2014.http://www.academia.edu/8108166/A_Comparative_Study_of_HITS_vs_PageRank_Algorithms_for_Twitter_Users_Analysis

[4] CONGOSTO, M. LUZ y ARAGON, PABLO: ((Twitter, del sondeo a la sonda nuevos canales deopinion: nuevos metodos de analisis)). Mas poder local, 2012.http://www.researchgate.net/publication/259331406_Twitter_del_sondeo_a_la_sonda_nuevos_canales_de_opinin_nuevos_mtodos_de_anlisis

[5] COSSU, JEAN-VALERE; DUGUE, NICOLAS y LABATUT, VINCENT: ((Detecting Real-WorldInfluence Through Twitter)). 2nd European Network Intelligence Conference, 2015.http://arxiv.org/pdf/1506.05903v2.pdf

[6] DING, CHRIS; HE, XIAOFENG; HUSBANDS, PARRY; ZHA, HONGYUAN y SIMON,HORST D.: ((PageRank, HITS and a Unified Framework for Link Analysis)). Proceedings ofthe 25th annual international ACM SIGIR conference on Research and development ininformation retrieval, 2002.http://delab.csd.auth.gr/˜dimitris/courses/ir_spring06/page_rank_computing/p353-ding.pdf

[7] GILBERT, EDGAR N.: ((Random Graphs)). Annals of Mathematical Statistics, 1959.http://projecteuclid.org/download/pdf_1/euclid.aoms/1177706098

[8] GOOGLE: ((Eric Schmidt at Techonomy)), 2010.https://www.youtube.com/watch?v=UAcCIsrAq70

44

Page 52: Recopilacion de´ tweets y medicion de la relevancia´

BIBLIOGRAFIA

[9] GUPTA, PANKAJ; GOEL, ASHISH; LIN, JIMMY; SHARMA, ANEESH; WANG, DONG yZADEH, REZA: ((WTF: The Who to Follow Service at Twitter)). En: Proceedings of the 22ndInternational Conference on World Wide Web, , 2013.

[10] HJØRLAND, BIRGER y CHRISTENSEN, FRANK SEJER: ((Work tasks and socio-cognitiverelevance: A specific example)). Journal of the American Society for Information Science andTechnology, 2002.

[11] HURTADO, LLUIS F. y PLA, FERRAN: ((Political Tendency Identification in Twitter usingSentiment Analysis Techniques)). En: Coling 2014, , 2014.

[12] INSTITUTE, STATISTIC BRAIN RESEARCH: ((Google Annual Search Statistics)), 2015.http://www.statisticbrain.com/google-searches/

[13] JANGA, S. MO y HART, P. SOL: ((Polarized frames on “climate change” and “globalwarming” across countries and states: Evidence from Twitter big data)). Global EnvironmentalChange, 2015.http://www.sciencedirect.com/science/article/pii/S0959378015000291

[14] KWAK, HAEWOON; LEE, CHANGHYUN; PARK, HOSUNG y MOON, SUE: ((What is Twitter, asocial network or a news media?)) WWW ’10 Proceedings of the 19th international conferenceon World wide web, 2010.

[15] MITCHELL, AMY y HITLIN, PAUL: ((Twitter Reaction to Events Often at Odds with OverallPublic Opinion)). Pew Research Center, 2013.http://www.pewresearch.org/2013/03/04/twitter-reaction-to-events-often-at-odds-with-overall-public-opinion/

[16] NABEL, LUIS CESAR TORRES: ((Social networks and political effects. Reflections abouttwitter impact in Mexico)). Sociologıa y tecnociencia. Revista digital de sociologıa del sistematecnocientıfico, 2009.http://www.academia.edu/1049146/Redes_sociales_y_efectos_pol%C3%ADticos._Reflexiones_sobre_el_impacto_de_twitter_en_M%C3%A9xico

[17] NETCRAFT: ((Netcraft Web Server Survey)), 2015.http://news.netcraft.com/archives/category/web-server-survey/

[18] PARK, HAE-SANG y JUN, CHI-HYUCK: ((A simple and fast algorithm for K-medoidsclustering)). Expert Systems with Applications, 2014.http://www.sciencedirect.com/science/article/pii/S095741740800081X

[19] PEDROCHE, FRANCISCO: ((Metodos de calculo del vector PageRank)). Boletın de la SociedadEspanola de Matematica Aplicada, 2007.

[20] PLA, FERRAN y HURTADO, LLUIS F.: ((Analisis de Sentimientos, Deteccion de Topicos yAnalisis de Sentimientos de Aspectos en Twitter)). En: TASS 2014, , 2014.

[21] PLA, FERRAN y HURTADO, LLUIS F: ((Sentiment Analysis in Twitter for Spanish)). En:NLDB 2014, , 2014.

45

Page 53: Recopilacion de´ tweets y medicion de la relevancia´

BIBLIOGRAFIA

[22] RAE, (@RAEINFORMA): ((El director de la RAE, Jose Manuel Blecua, anuncia laincorporacion de “tuitear”, “tuit”, “tuiteo” y “tuitero” al Diccionario academico.)), 2012.https://twitter.com/raeinforma/status/248735186592870401

[23] ROGERS, SIMON: ((What fuels a Tweet’s engagement?)), 2014.https://blog.twitter.com/2014/what-fuels-a-tweets-engagement

[24] RUSSELL, MATTHEW A.: Mining the Social Web. O’Reilly Media, 2013.

[25] SCHALL, DANIEL: ((Who to follow recommendation in large-scale online developmentcommunities)). Information and Software Technology, 2014.http://www.sciencedirect.com/science/article/pii/S0950584913002322

[26] STATISTA: ((Number of monthly active Twitter users worldwide from 1st quarter 2010 to 2ndquarter 2015)), 2015.http://www.statista.com/statistics/282087/number-of-monthly-active-twitter-users/

[27] STATS, INTERNET LIVE: ((Internet Users)), 2014.http://www.internetlivestats.com/internet-users/

[28] STONE, BIZ: ((Introducing the Twitter API)), 2006.https://blog.twitter.com/2006/introducing-twitter-api

[29] TWITTER, INC:. ((REST APIs)).https://dev.twitter.com/rest/public

[30] VIDALA, LETICIA; ARESA, GASTON; MACHINB, LEANDRO y JAEGERC, SARA R.: ((UsingTwitter data for food-related consumer research: A case study on “what people say whentweeting about different eating situations”)). Food Quality and Preference, 2015.http://www.sciencedirect.com/science/article/pii/S0950329315001263

[31] WALL, AARON:. ((Search Engine History)).http://www.searchenginehistory.com/

[32] YU, YANG y WANG, XIAO: ((World Cup 2014 in the Twitter World: A big data analysis ofsentiments in U.S. sports fans’ tweets)). Computers in Human Behaviour, 2015.http://www.sciencedirect.com/science/article/pii/S074756321500103X

46

Page 54: Recopilacion de´ tweets y medicion de la relevancia´

Apendice A

OrdenacionesCuadro A.1: PageRank-Seguidores

Nombre PageRankel pais 0.00323iescolar 0.00227anapastor 0.00220

elmundoes 0.00205EFEnoticias 0.00192La SER 0.00191eldiarioes 0.00179ahorapodemos 0.00170agarzon 0.00160europapress 0.00160publico es 0.00156Albert Rivera 0.00153rtve 0.00147abc es 0.00143pedroj ramirez 0.00136elconfidencial 0.00131muyinteresante 0.00129GLlamazares 0.0012920m 0.00129ierrejon 0.00128PSOE 0.00127sanchezcastejon 0.00123ElHuffPost 0.00121gerardotc 0.00119norcoreano 0.00118jesusmarana 0.00117carlosecue 0.00114PPopular 0.00108JotDownSpain 0.0010724h tve 0.00106

Cuadro A.2: PageRank-Retuits

Nombre PageRankeldiarioes 0.00630eldiarioAnd 0.00588EFEempresas 0.00546el pais 0.00501europapress 0.00435carnecrudaradio 0.00413EFEnoticias 0.00346gerardotc 0.00317La SER 0.00304iescolar 0.00290abc es 0.00279anapastor 0.00269

EFEemprende 0.00250elconfidencial 0.00223diarioas 0.00214elmundoes 0.00213AntonioMaestre 0.00203diostuitero 0.00195dalealplay 0.00194ElHuffPost 0.00181elespanolcom 0.00177Albert Rivera 0.00166subversivos 0.00164cristina pardo 0.00160RubenSanchezTW 0.00158norcoreano 0.00157publico es 0.00149ahorapodemos 0.00148MonicaCarrillo 0.00147masaenfurecida 0.00136

47

Page 55: Recopilacion de´ tweets y medicion de la relevancia´

APENDICE A. ORDENACIONES

Cuadro A.3: HITS-Seguidores (authority )

Nombre authorityiescolar 0.11342el pais 0.10794anapastor 0.10642

eldiarioes 0.10200publico es 0.10166agarzon 0.09810ahorapodemos 0.09051La SER 0.08714GLlamazares 0.08680JoseantonioJun 0.08677europapress 0.0830420m 0.08095elmundoes 0.07950jesusmarana 0.07934elconfidencial 0.07556El Intermedio 0.07538ierrejon 0.07511ElHuffPost 0.07386EFEnoticias 0.07378MonederoJC 0.06998cayo lara 0.06815DebatAlRojoVivo 0.06760Agus Martinez58 0.06760PSOE 0.06724RevillaMiguelA 0.06613cristina pardo 0.06605caval100 0.06603gerardotc 0.06578Ainhat 0.06496radiocable 0.06478

Cuadro A.4: HITS-Seguidores (hub)

Nombre hubcaval100 0.05268Agus Martinez58 0.05246atlante83 0.04849JoseantonioJun 0.04695Pedro Zerolo 0.04568SobresEnB 0.04012mariano9605 0.03969David Calvo 0.03918carlosgomezgil 0.03879AnaGarridoRamos 0.03850nefeerr 0.03831twrboleta 0.03697curroflores1952 0.03681LuisSalvador 0.03669Zurine3 0.03624MorenoG Agustin 0.03599ecorepublicano 0.03540ARMAKdeODELOT 0.03531diegocruzblog 0.035147Josean7 0.03347FonsecAsturias 0.03334javierjuantur 0.03321JosePerLo 0.03198ManuelHuertas75 0.03167gsemprunmdg 0.03089sindi584 0.03081JLMagaz 0.03066cyberalex75 0.03059JuanMalaga2011 0.03059luisbeltri 0.03041

48

Page 56: Recopilacion de´ tweets y medicion de la relevancia´

Cuadro A.5: HITS-Retuits (authority )

Nombre authoritygerardotc 0.17608eldiarioes 0.16553iescolar 0.15649el pais 0.15299subversivos 0.13907SiPeroNo1 0.12786EsppeonzAguirre 0.12348ecorepublicano 0.12245AntonioMaestre 0.12177Cazatalentos 0.11766rcabrero75 0.11595cristina pardo 0.11531diostuitero 0.11512ahorapodemos 0.11423publico es 0.11384isaranjuez 0.10936elpadrecorajede 0.10838masaenfurecida 0.10397La SER 0.10282ElHuffPost 0.10201anapastor 0.10071

Famelica legion 0.09846europapress 0.09682rosamariaartal 0.09460RubenSanchezTW 0.09457agarzon 0.09342moedetriana 0.09327Juanmi News 0.09267BobEstropajo 0.09058norcoreano 0.08931

Cuadro A.6: HITS-Retuits (hub)

Nombre hubOtaru CC 0.01864nabilu2 0.01850grigrigrillito 0.01827Observador2507 0.01798J AnguloMestre 0.01772onty25 0.01764MariQueroGra 0.01750CU15M 0.01741FjRamiz81 0.01738yankeegohome5 0.01728espedompla 0.01724atletico47 0.01720malacate09 0.01715emiliocurt 0.01702jsaura58 0.01693Eml59Ruiz 0.01688pacopilP 0.01669jumagaka 0.01669gisesille 0.01663Danteboxs 0.01662PartidoPodrido 0.01662JrealJavireal 0.01661Juancontecho 0.01659Mylla60 0.01659AntonioX92 0.01653incomodo0 0.01652Chica Gilmore 0.01651Vallekasxlakara 0.01649antonmiragaya 0.01648cmarinmunoz 0.01644

49

Page 57: Recopilacion de´ tweets y medicion de la relevancia´

APENDICE A. ORDENACIONES

Cuadro A.7: Numero de seguidores

Nombre seguidoresmuyinteresante 5513709NoticiasCaracol 5390902lopezdoriga 4824328el pais 4255520globovision 3535606ElUniversal 3484306El Universal Mx 3014002ElNacionalWeb 3007426MariaCorinaYA 2529908noticierovv 2338825noticias24 2300102CaracolRadio 2167229vickydavilalafm 2048904CNNMex 2030804PedroFerriz 1954103HayQueDecirQue 1898071CNNChile 1860584rcnlaradio 1824038NTelevisa com 1750877El Hormiguero 1733709elmundoes 1729866liliantintori 1618535malditaternura 1590425NTN24ve 1562946mundodeportivo 1551304CF America 1537514TodoReflexion 1528374PepeAguilar 1446311diarioas 1429826anapastor 1277594

50