Dar valor a los tweets: Interés, difusión, audiencia,… trasteando con el API de Twitter

No se puede decir que sea un ‘social media‘, pero de un tiempo a esta parte Twitter se ha convertido para mi en una fuente de información esencial y casi imprescindible.  Tiene un pero, a veces te pierdes entre toda la información que te llega… Pensando siempre ‘alternativamente‘ me surgieron estas preguntas:

¿Sé puede hacer un poco más social una red social como Twitter?… ¿Por qué no mostrar de una manera sencilla como han valorado los demás usuarios el tweet que estás leyendo?…¿cuánto se ha difundido?…. ¿Sé puede estimar a cuanta gente a llegado?

Lo que me dio pie fue que, para 747mx.com, un proyecto hermano de Lógica Alternativa, quería incorporar la información de los tweets pero el widget oficial me fastidiaba el diseño, no sabía como encajarlo. La solución pasaba en estudiar el API REST de Twitter. Puesto manos a la obra me di cuenta del mundo de posibilidades que permitía,… apareció en mi el físico que llevo dentro, ese el que le gusta lo de los coeficientes y esas cosas, la cosa se lío y el resultado fue el siguiente.

Gidget con mi timeline que muestra a lo que quiero llegar:

Grado de interés de un tweet

Generalmente, cuando un tweet te interesa lo puedes marcar como favorito o directamente lo puedes compartir con tus seguidores (retwittear). Cuantas más veces se haya compartido o se haya marcado como favorito más ‘interesante‘ es. Dentro de esto doy más valor a lo primero ( al hecho que se haya compartido) que a lo segundo, ya que demuestra más interés.

Por otra parte a igualdad de veces que se ha compartido o se ha marcado como favorito, un tweet de un autor que tiene menos seguidores es ‘más interesante‘ que un tweet de una persona que tiene más, simplemente por el hecho de que hay más posibilidades de que se comparta o sea favorito, si en un primer momento llega a más personas.

Resumiendo que para mi, el grado de interés es directamente proporcional al número de veces que se ha compartido (con más peso) y se ha marcado como favorito (con menos peso) e inversamente proporcional al número de seguidores que tiene el autor.

Con todo esto he pensado la siguiente formula:

 GrInt = ( S / ( S + Numseg ) ) * 5

Donde :

  • GrInt es el grado de interés
  • Numseg es el número de seguidores que tiene el autor del tweet

S se calcula de la siguiente manera:

 S = Fret * Numret + Ffav * Numfav

  • Fret: Es el factor de retweets, un número mayor que cero. Es el ‘peso‘ que se da a cada retweets
  • Numret: Número de veces que se ha compartido.
  • Ffav: Es el factor de favoritos, un número mayor que cero. Es el ‘peso‘ que se da a cada vez que se ha marcado como favorito.
  • Numfav: Número de veces que se ha marcado como favorito

Lo que está entre paréntesis de la formula del grado de interés es un número entre 0 y el 1. El 0 sería el peor escenario, en el que el tweet no haya conseguido ningún retweet o no se haya marcado como favorito. El 1 sería el escenario perfecto donde el valor de S es tan grande que hace que el valor del número de seguidores sea despreciable. El hecho de multiplicarlo por 5 es para normalizarlo y que sea un valor entre 0 y 5.

En la implementación que he hecho he elegido como valores de  Fret = 33 y de Ffav = 16. Es decir que sin tener en cuenta el valor de favoritos para obtener un valor de 2,5 en el grado de interés,  harían falta 3 retwees por cada 100 seguidores. Lo mismo para los favoritos pero en este caso sería necesario que fuera marcado 6 veces.

Audiencia

La audiencia de un tweet es el número de personas que le han llegado, es decir la suma de los seguidores del autor, más los seguidores de los que lo han compartido. No es un cálculo exacto pero si fiable. El cálculo real puede ser un poco menor porque puede darse el caso de que el autor o una de las personas que lo han compartido tengan seguidores en común. También el número de seguidores ha podido variar en la vida del tweet.

Grado de difusión

Es la proporción de las personas que han podido ver el tweet y que no son tus seguidores.

Grdif =   5 * (  ( Aud –  Numseg ) /  Aud )2

Donde :

  • Grdif es el grado de difusión
  • Numseg es el número de seguidores que tiene el autor del tweet
  • Aud: La audiencia calculada en el apartado anterior

El hecho de multiplicarlo por 5 es para conseguir un valor entre 0 y 5. Es 0 cuando no ha habido difusión, la audiencia es igual al número de seguidores del autor y tiende a 5 cuando la audiencia es tan grande que es despreciable el valor del número de seguidores.

El valor del primer paréntesis se eleva al cuadrado para dar más importancia a las proporciones altas.

Si nos fijamos el grado de interés no tiene en cuenta la ‘calidad’ de los retweets. A todos ellos le da la misma importancia, sin embargo el grado de difusión si que tiene en cuenta si quien reenvía tiene más seguidores. Tienes una gran difusión si los que lo comparten tienen muchos seguidores, aunque  tengas pocos retweets .

Implementación

He realizado una implementación en PHP. El código está en GitHub.

[Logo GitHub] TwitterDarValor-php

La librería obtiene tanto el timeline pública del usuario como la home timeline privada. De cada uno de los registros obtiene los datos significativos y el texto procesado para que se muestren los enlaces. Se calcula además el grado de interés. Si se indica como parámetro se calcula la audiencia y el grado de difusión. Para más información os redirijo al README.MD del proyecto y a los comentarios de la clase TwitterDarValor.php

Con los datos que devuelve la clase me he creado mi propio widget que podéis ver más arriba. En un futuro artículo entraré más en detalle del widget

Limitaciones

El API REST de Twitter tiene una serie de limitaciones, tanto de número de información que se puede hacer en una llamada como el número de peticiones que se pueden hacer en un determinado intervalo de tiempo.

 Para calcular la audiencia de un tweet en una sola petición, existe un servicio que devuelve los últimos 100 retwets. En el caso que se supere esta cifra en la implementación que he hecho se hace una estimación con la suma de seguidores que se obtiene de estos 100. El resultado en este caso se muestra con 4 cifras significativas.

Este servicio está limitado a 15 peticiones en 15 minutos por lo que me ha obligado a cachear el resultado.

Conclusiones

La información que se puede obtener con el API Rest de Twitter es muy valiosa y esto es sólo un botón de lo que se puede hacer.

Puede parecer que se me ha ido la pinza con tanto cálculo, pero ya he dicho que no lo he podido remediar, ha sido superior a mi  :- ) . Fuera de bromas, me resulta de mucha utilidad y lo estoy usando para ver mi Home Timeline. En realidad en lo que más me fijo más el grado de interés. Sobre todo si un tweet ya tiene un poco de tiempo y ya hay feedback por parte del resto de usuarios.

Espero que os sirva.

M.E.