🐍📓 Mi agenda Python: #2 Tweets Analyzer

in steemstem •  20 days ago
Banner del artículo

🐍📓 Mi agenda Python: #2 Tweets Analyzer


Por Enio...

⁣


Nos vemos de nuevo, apreciados lectores y steemianos de #STEM-Espanol, #SteemSTEM, #Curie, #Utopian-io y demás comunidades de Steemit.

Seguimos con nuestra serie Mi agenda Python dedicada a abordar distintas herramientas de programación relacionadas con el lenguaje de programación Python, tales como snippets, scripts, bibliotecas (‘librerías’), frameworks, programas de aplicación y otros; una serie que ya hemos presentado previamente y en la que abordamos contenidos de manera accesible tanto para el público especialista como el no-especialista. Sin más preámbulos, revisemos la herramienta de esta entrega.


Nombre del Recurso

Tweets Analyzer


Aclarando conceptos...

Hace algunos meses durante una sesión de clase de programación les formulé una pregunta abierta a los estudiantes: "¿saben qué es un bot de Twitter?", a lo que varios me contestaron casi al unísono: "sí, una cuenta falsa". Debo reconocer que esto me causó una extraña impresión, pues era la primera vez que lo escuchaba además de que los informáticos no tendemos a pensar en esos términos. No obstante, la descripción de mis estudiantes cobró sentido tan pronto como aportaron más detalles, y posteriormente descubrí que es una 'opinión compartida'. Incluso hasta la prensa a veces se expresa de esa forma en lo que compete a bots de Twitter. ¿Es ello una causa o consecuencia de lo anterior? No lo sé, pero sí sé que los bots no son cuentas falsas precisamente.

La fama de Twitter es tautológica, pues es la red social más activa de la Internet. El intrincado mundo comunicativo que ha creado estriba en la infinidad de usuarios que interactúan constantemente, la mayoría de los cuales seguramente corresponden a cuentas administradas por 'usuarios humanos'. Aclararlo así se explica porque evidentemente la plataforma soporta también la automatización de la gestión de cuentas a través de los bots, de tal manera existen cuentas que podrían no ser administradas por seres humanos, sino por un programa de computadora.

Las razones para la existencia de bots en Twitter son varias, pero esta es una tendencia en todas las plataformas conforme se profundiza la asistencia de la informática para gestionar el trabajo comunicativo. De esta manera, algunas organizaciones, por ejemplo, pueden utilizar una cuenta de bot para automatizar su publicación de tuits (tweets) sobre sus novedades y sincronizar ello con otros servicios, lo cual sería una tarea muy ruda si siempre fuese hecha manualmente por un humano.

Con todo esto en mente no es difícil desmontar la idea equivocada de que los bots de Twitter son cuentas falsas. Son estrictamente cuentas reales, habilitadas por la plataforma para ser usadas por humanos o por software. A lo que se podría atribuirle cualidad de falsedad es a la identidad de la cuenta. De esta manera, se consideraría fraudulento la pretención de convencer a los usuarios de que el bot es un humano, o quizá hacer uso permanente del bot en nombre de una persona real, usurpando su identidad.

En concreto, estos comportamientos fraudulentos se han vuelto comunes en Twitter cuando se refiere a tuits sobre política, que es lo que la mayoría de la prensa suele generalizar cuando habla de bots como cuentas falsas. En efecto, se han utilizado cuentas de Twitter cuyos perfiles se configuran como si fuesen personas naturales, pero en realidad están siendo controladas por un software (son bots). Esas cuentas están automatizadas para hacer tuits, retuits, likes y crear tendencias, pretendiendo con ello dar la impresión de que hay muchos 'ciudadanos' con una cierta opinión política o ideológica, desinformando en muchos casos, pero lo cierto es que muchas de esas tendencias han sido posicionadas por 'usuarios fantasmas'.

Ahora bien, ¿cómo puede determinarse si una cuenta está siendo utilizada por un usuario humano o por un bot? Ha habido proyectos de empresas de seguridad orientados a desarrollar metodologías que permitan hacer esta distinción efectivamente, como también hay 'trucos' difundidos para intentar reconocerlos [1]. Sucede que algunos bots que llevan a cabo comportamientos fraudulentos han sido tan diligentemente programados para no parecer más activos que la media de los usuarios humanos y ello a veces es un obstáculo para identificarlos. No obstante, un bot debería normalmente ser mucho más activo que un ser humano puesto que son servicios 24/7.

En cualquier caso, es posible hacerle un seguimiento más avanzado a los usuarios de Twitter (sean humanos o bots), puesto que Twitter, como otros servicios, provee una Interfaz de Programación de Aplicaciones (API) que permite a los programadores acceder a una gran cantidad de datos que no suelen ser accesibles desde las interfaces convencionales.

Esto nos sirve para presentar la herramienta protagonista de esta entrega.


Descripción

Tweets Analyzer es un toolkit (herramienta) para el análisis de cuentas de Twitter desarrollado por x0rz y escrito en el lenguaje de programación Python. La herramienta consiste en un único script que utiliza la API de Twitter para extraer toda la data necesaria para producir su información. De acuerdo a su documentación oficial, dicha información comprende:

  • Actividad promedio de los tuits, en función de la hora y día de la semana.
  • Zona horaria e idiomas para la interfaz de Twitter
  • Fuentes utilizadas (aplicación móvil, navegador web, etc.).
  • Geolocalización.
  • Las más usadas etiquetas, los más retuiteados usuarios y los más mencionados usuarios.
  • Análisis de amigos [de Twitter] basados en las frencuentes zona horarias/etiquetas [traducción del autor].

De esta manera, es posible conocer varios detalles sobre los perfiles de los usuarios, ya que toda esa data es pública. Ahora bien, puede que a algunos les parezca escandaloso que ciertas personas puedan 'rastrearlos' de esta manera, llegando a conocer los días y hora de la semana en los cuales postea, su ubicación, si tienen smartphone, qué tipo de etiquetas (hashtags) suelen utilizar más a menudo, etc., pero lo cierto es que eso es consecuencia de formar parte de las redes sociales, muchas de las cuales a menudo también especifican que la manera como ellos disponen de esta información es parte de sus términos de servicio (esos que casi nadie lee pero igual aceptan).

No obstante, la empresa tras la red social aclara que esta información no debe ser utilizada para propósitos ilegales, aunque como dijimos en un artículo anterior, la regulación en la materia es compleja y dependerá mayormente de la compañía el rastreo de los casos de usos que violen sus términos y restricción de las cuentas involucradas.

En todo caso, con Tweets Analyzer podemos estudiar los perfiles de las cuentas de Twitter y de seguro puede formar parte de alguna metodología para discriminar cuentas en función de su tipo de usuario (humano o bot).


Algunas características

  • Es una herramienta que funciona vía interfaz de línea de comandos.
  • Funciona con Python 2.7 y Python 3.
  • Es distribuido bajo licencia GNU GPL 3.0 (de GNU General Public License).
  • Las implementaciones de todos los endpoints de la API de Twitter que aplica están funcionales, es decir, su comportamiento no presenta problemas por desactualización.
  • El proyecto consiste en un único script con funcionalidades muy concretas, de tal modo que su documentación es concisa.
  • Depende de los paquetes tweepy, ascii_graph, tqdm, numpy (tomar en cuenta).

Sitio web o repositorio

https://github.com/x0rz/tweets_analyzer

Ejemplo de uso

Lo primero que tenemos que hacer es descargar la herramienta, bien sea clonando su repositorio en GitHub o descargando los archivos manualmente. En el directorio descargado se hace la instalación con pip install -r requirements.txt, lo cual es una instrucción de línea de comandos.

Una vez instalada satisfactoriamente podemos utilizarla para analizar alguna cuenta de Twitter. Usaremos como ejemplo la cuenta de la Agencia Nacional de Aeronáutica Espacial de los Estados Unidos (NASA), una célebre organización científica cuyo username en Twitter es (@nasa). Para ello podemos correr esta instrucción: ./tweets_analyzer.py -n nasa, tras lo cual el script comenzará a recabar data y al cabo de unos segundos desplegará información como la que estaremos mostraremos a continuación.

salida inicial de tweet_analyzer
⬆️ Imagen 1: salida inicial de Tweets Analyzer. Autor: @Eniolw Licencia: CC BY 2.0

En la imagen anterior se muestra la salida del log mientras está recabando información, especificando si ha podido detectar el idioma, la geolocalización, la zona horaria. Estos dos últimos no parecen estar disponibles en este caso, y en términos de cantidad de estados de Twitters, vemos que la NASA tiene más de 54.666 estados para el momento. También, se descargan y analizan por defecto los últimos 1.000 tuits de cuenta involucrada (la NASA) que, como se ve, se han dado entre 11 de octubre del 2018 y el 3 de febrero del 2019, publicados durante 115 días, con una media de tuits diarios de 8,7. Luego de ello, la aplicación muestra lo siguiente.

distribución por hora de la actividad diaria de @nasa
⬆️ Imagen 2: distribución por hora de la actividad diaria de @nasa. Autor: @Eniolw Licencia: CC BY 2.0

Esta gráfica (imagen 2) es la distribución por hora de la actividad diaria de la cuenta. Podemos apreciar que esta cuenta está más activa entre las 15:00 y 2:00 UTC (que en Venezuela equivaldría al horario comprendido entre las 2pm y 10pm), siendo las 19:00 UTC la hora más activa (5pm, hora de Venezuela), con 88/1000 tuits publicados a esa hora en específico, mientras que suele estar inactiva en horas de la medianoche.

distribución diaria de la actividad semanal de @nasa
⬆️ Imagen 3: distribución diaria de la actividad semanal de @nasa Autor: @Eniolw Licencia: CC BY 2.0

Por su parte, la gráfica anterior (imagen 3) muestra la distribución por días de la actividad semanal. Se aprecia que durante los últimos 115 días, la cuenta de la NASA ha estado más activa los días lunes, notablemente menos activa los viernes y domingos.

información varia producida por tweets_analyzer
⬆️ Imagen 4: información varia producida por Tweets Analyzer. Autor: @Eniolw Licencia: CC BY 2.0

Finalmente, en la imagen anterior se muestran algunos datos que pueden ser de interés sobre la cuente implicada, tales como las aplicaciones clientes de Twitter utilizadas, tuits con geolocalización activada (ninguno), las 10 etiquetas más utilizadas, siendo UltimaThule la más frecuente; en número de retuis en los últimos 1000 tuis (322), los 5 usuarios de Twitter más mencionados y los sitios web más referidos.


En resumen

Tweets Analyzer es una excelente herramienta que puede ser usada localmente sin depender de los múltiples servicios online existentes que desde luego hacen muchas de las cosas que hace Tweets Analyzer. No obstante, a diferencia de muchos de esos servicios, esta es una herramienta en software libre que concentra en su script un conocimiento abierto sobre la programación con la API de Twitter, al tiempo que es perfectamente reutilizable para proyectos de terceros.

Vemos que su potencial es analizar el comportamiento de las cuentas de Twitter en términos muy específicos, lo que a su vez podría ser utilizado para conocer ciertos usuarios de Twitter más profundamente. En particular, podría ser útil para confirmar las sospechas sobre algún bot que juega el papel del usuario fantasma, en especial si su comportamiento es menos discreto (¿o menos humano?). Sería un ejercicio que bien pudiera llevar a cabo el lector programador si ello le parece interesante o eventualmente útil.

De momento, si tienes alguna duda o aporte, no dudes en hacerlo saber. Nos vemos.


ALGUNAS FUENTES DE CONSULTA


Si estás interesado en más temas sobre Ciencia, Tecnología, Ingeniería y Matemáticas (STEM, siglas en inglés), consulta las etiquetas #STEM-Espanol y #SteemSTEM, donde puedes encontrar más contenido de calidad y también hacer tus aportes. Puedes unirte al servidor de Discord de STEM-Espanol para participar aún más en nuestra comunidad y consultar los reportes semanales publicados por @STEM-Espanol.



Créditos: @IAmPhysical

Créditos: @Eniolw


NOTAS ACLARATORIAS

  • La imagen de pie es de @CarlosERP-2000 y @IAmPhysical y es de dominio público.
  • A menos que haya sido indicado lo contrario, las imágenes de esta publicación han sido elaboradas por el autor, lo que incluye la imagen de banner, creada con base en imágenes de dominio público y en un logo de Python adaptado por Rocket000 y otros (fuente).
imagen de pie
Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Me encantó @eniolw, porque lo entendí casi todo jajajaja. Definitivamente al pertenecer a cualquier red social, es factible que puedan acceder a información de tus gustos e intereses; y claro esta, como usuario tu mismo has suministrado los datos en bandeja de plata. Específicamente en Twitter, es relevante por el gran número de seguidores que tiene y dependiendo del interés y de los Bots, como bien dices, puede hacerse resaltar o generar tendencia en un tema particular. En ese sentido, como seguidor es importante hacer un análisis de las noticias que lees y evitar ser repetidor si no estás seguro de su veracidad. Gracias y éxitos para ti!

·

Gracias, Doctora @Elvigia! Coincido con usted. Gracias por sus constantes visitas. Nos vemos!






This post has been voted on by the SteemSTEM curation team and voting trail in collaboration with @utopian-io and @curie.


If you appreciate the work we are doing then consider voting all three projects for witness by selecting stem.witness, utopian-io and curie!


For additional information please join us on the SteemSTEM discord and to get to know the rest of the community!

·

Thank you! :D

Congratulations @eniolw! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You received more than 10000 upvotes. Your next target is to reach 15000 upvotes.

Click here to view your Board
If you no longer want to receive notifications, reply to this comment with the word STOP

Support SteemitBoard's project! Vote for its witness and get one more award!

·

👍

Muy interesante herramienta, siempre he pensado que l automatización nació para facilitar la publicidad y le marketing dentro de la red. Y luego termino sirviendo para todo tipo de actividades incluso la política, como indicas en el artículo.

·

Así es @UbaldoNet. Saludos.

Hi @eniolw!

Your post was upvoted by Utopian.io in cooperation with @steemstem - supporting knowledge, innovation and technological advancement on the Steem Blockchain.

Contribute to Open Source with utopian.io

Learn how to contribute on our website and join the new open source economy.

Want to chat? Join the Utopian Community on Discord https://discord.gg/h52nFrV

·

Great!

Hola @eniolw. Disculpa que utilice esta publicación para consultarte sobre la app oficial https://www.steemstem.io ¿Cuáles son los pasos para publicar a través de ella? Quisiera hacerlo pero no he encontrado como. Saludos y gracias de antemano.

·

Hola, profesor @JoseDeLaCruz. Esa webapp es prácticamente un cliente más de Steem, similar a la webapp de Steemit y su uso es sumamente intuitivo. Simplemente:

  • Entra allí (https://www.steemstem.io).
  • Le da a login (iniciar sesión) y completa el proceso con SteemConnect (ingresa su clave de Steemit allí en la ventana de SteemConnect para iniciar sesión).
  • Tras haber inciado sesión, click en su imagen de perfil (esquina superior derecha) y luego en new post (nueva publicación)
  • En el editor pega o escribe su artículo (y si sabe de HTML lo hace en el editor que sale al pulsar ).
  • Coloca 4 etiquetas abajo (la primera siempre será steemstem).
  • Añade a Steemstem como beneficiario de algún porcentaje de las recompensas del post (opcional; sólo si usted quiere).
  • Y le da Submit (enviar; publicar).

Puede abordarme por Discord y con gusto le atenderé. Espero sea de ayuda y éxito.

·
·

Hola @eniolw. Gracias. Cuando tenga lista mi próxima publicación lo pondré en práctica. Cualquier duda pego un grito je je. Saludos.