Como se comporta o TrendTopics do Twitter ? (1)— Contextualização

Roberto Savio "Pitako" Jr
6 min readFeb 24, 2021

--

Esse artigo é parte de uma trilogia de textos apresentando meu projeto de estudo de datascience:

1- Contextualização,

2- Código, tratamento e visão geral dos dados

3- Criação do dashboard e exploração dos dados

A ideia do meu segundo trabalho de estudo sobre ciência de dados veio de ficar olhando como os programas de televisão gostam de criar e divulgar hashtags durante a programação.

Photo by Chris J. Davis on Unsplash

Entendendo o negócio

Ao fazer isso, o objetivo primário é conseguir se comunicar com o público que está assistindo. O objetivo secundário é colocar a hashtag no trendtopics e atrair atenção de outras pessoas para o programa.

Mas as vezes acontece também algum programa entrar no trendtopics mesmo sem solicitar esse engajamento ou existir essa troca de comunicação. Acontece com filmes, por exemplo.

E obviamente que notícias do cotidiano também entram na lista de assuntos mais comentados sem estar vinculado diretamente a um programa de TV. Mas será que o assunto se mantem comentado organicamente ou existem picos no horário do jornal ou qualquer outro programa que esteja comentando?

Então, observando essa relação da TV com o Twitter, pensei em analisar a grade de programação dos maiores canais de TV no Brasil e comparar com os trendtopics do Twitter pra buscar uma relação.

O que eu iria procurar?

Pensando nas relações que poderiam existir e na natureza dos dados, pensei em algumas perguntas que gostaria de responder:

  • Qual o programa que mais engaja o público no Twitter?
  • Qual assunto?
  • Dentro desse assunto, algum representante se sobressaia em número de tweets?
  • Qual a relação disso com dia da semana ou hora do dia?
  • Qual dia da semana e hora do dia mais movimentados no Twitter?
Photo by NeONBRAND on Unsplash

Claro que eu tinha minhas suposições para essas perguntas. Suposições, essas, totalmente enviesadas por gostos pessoais e sem fundamento algum.

Pra mim, quarta a noite e domingo a tarde seriam os dias mais movimentados por causa do futebol na TV aberta. Dentro desse assunto, os jogos do Flamengo seriam os que se destacariam em número de tweets.

Com os dados veremos que errei completamente e os assuntos mais comentados estão longe do futebol.

Mas já sabia que pelo menos uma das perguntas teria que ficar para uma segunda versão: a classificação de trendtopics em assuntos. A pergunta sobre qual assunto mais movimenta o Twitter seria respondida, nesse momento, com análises exploratórias. Mas, com certeza ficaria bem mais interessante com um classificador automático. (Projeto 3 à vista?)

Objetivos de aprendizados

Um projeto de estudo precisa ter um assunto interessante e um desafio técnico, ou seja, um bom tema pra pesquisar e aprofundar. Então, quando pensei nesse projeto também já imaginei técnicas e ferramentas que teria na que estudar:

  • Scrap de dados do Twitter via API
  • Scrap de páginas html para buscar a programação de TV
  • Tratamento dos dados extraídos
  • Exploração dos dados para tentar responder às perguntas
  • Criação de um dashboard
  • Simular uma entrega em produção

Cada tópico desse tinha sua barreira pra mim. Como Líder de Produto, faço pequenos ajustes em PL/SQL, ajudo a debugar código fonte, mas não sou programador há muito tempo. Tive que buscar e pesquisar as bibliotecas e frameworks que poderiam me ajudar em cada ponto.

Definido assunto e temas de estudo, fiquei feliz com o que poderia ser o final desse projeto. Um assunto que gera curiosidade e aprendizados relevantes em tecnologia para o meu estudo de datascience.

Desenvolvimento do projeto

Script de captura dos dados

Photo by Markus Spiske on Unsplash

A primeira tarefa foi buscar dados do Twitter.

E foi relativamente simples pois a API já entregava a informação que eu desejava. Então criei um script python pra consultar e gravar a lista de trendtopics e a quantidade de vezes que apareciam.

Mas para conseguir fazer alguma análise mais interessante seria necessário trendtopics de muitos meses ou anos. Infelizmente não achei esses dados disponíveis gratuitamente. Encontrei alguns sites que permitiam algumas pesquisas de dados mais recentes mas que não atendiam o meu propósito.

Deixei esse problema da quantidade de informações pra resolver depois e coloquei meu python do Twitter pra rodar a consulta de 5 em 5 minutos, por alguns dias, da minha máquina mesmo, enquanto eu desenvolvia o outro scrap para buscar a programação de TV, que foi muito mais complicado.

Eu decidi começar com a programação exibida no site dos canais da Globo (https://globoplay.globo.com/programacao/) pois já teria vários canais relevantes juntos. Comecei tentando fazer o webscraping buscando os elementos pelas tags html, id´s e classes do CCS que encontrei na página. Fique vários dias vendo vídeos e lendo tutorias pois meu código não retornava os dados que eu esperava e que eu conseguia achar pelo devTools do Chrome.

Depois de muito tentar, percebi pela response da chamada de url que se tratava de uma página assíncrona. Os dados que eu queria de verdade não estavam no endereço que eu chamava mas vinham de chamadas internas da página.

Precisei buscar diversas alternativas que não aparecem nas vídeo aulas do tema disponíveis no YouTube ou mesmo em cursos pagos. Um conhecimento prévio de Ajax e chamadas assíncronas da minha época de desenvolvedor PHP foi fundamental.

Nesse momento percebi que precisaria usar a biblioteca do Selenium no Python para conseguir fazer a chamada interna e trazer de fato o html completo da página com programas e horários. Mas essa tabela também não vinha completa. Ela tinha uma barra de rolagem vertical que só trazia os programas de baixo com interação. Então precisei enviar comandos de page down para tabela para ter acesso e poder gravar a programação de todos os canais.

Executando os scripts 24/7

Com algoritmos desenvolvidos e rodando na minha máquina, eu busquei formas de deixá-los executando em algum servidor 24hrs por dia. E aqui veio um “desafio não-funcional”. Como conseguir isso?

A melhor opção que encontrei foi um servidor gratuito na AWS com 1GB de RAM e 30GB de espaço de disco. Espaço em disco não seria um problema pois as informações gravadas pelos scripts são arquivos de texto com poucas linhas. Além disso, eu conseguiria tirar os arquivos de tempos em tempos.

O problema foi a memória RAM. O script do Twitter funcionou bem, mas o scrap da programação da televisão não executou. A questão é que a biblioteca do Selenium precisa abrir o Chrome pra se executar. Com apenas 1GB de RAM isso ficou impossível.

Mudando um pouco os planos

Com a restrição no servidor, procurei saber o preço de um servidor simples com pelo menos 4GB de RAM para que fosse possível executar o scrap. Infelizmente não achei nada acessível.

Com isso, a ideia de cruzar os trendtopics com a programação de TV ficou prejudicada nesse momento. Talvez eu tente buscar histórico dessas informações depois e voltar ao plano original, mas por enquanto o foco passou a ser os dados do Twitter.

E para continuar sendo algo legal de aprender e mostrar, comecei a pesquisar sobre storytelling, apresentação dos dados e dashboards. A princípio pensei em fazer algo no PowerBI mas não teria como publicar por precisar de uma licença de server. Pesquisando um pouco mais, cheguei no Streamlit, que é um framework para construir dashboards e aplicações usando o próprio Python (https://www.streamlit.io/). E pra completar, provavelmente pra ajudar na divulgação, eles hospedam aplicações como a minha simplesmente integrando com meu github. Isso resolveu um dos meus desejos, que era simular uma entrega em produção.

Conclusão

Mesmo tendo que mudar o objetivo definido inicialmente, a alteração no plano não diminuiu a importância do estudo pra mim, já que mesmo assim foi possível aprender muita coisa.

Consegui fazer meus primeiros webscrapers e utilizei uma biblioteca e um framework novos.

Interessante perceber essa dificuldade para conseguir um servidor para executar scripts simples. Não existe nada gratuito que me atendesse completamente e o pago é muito caro para um estudo.

Além dos aprendizados técnicos, o processo também foi muito enriquecedor. Saber como procurar sobre os assuntos que interessam gera muito ganho de produtividade. Essa parece uma questão simples, mas não é.

No próximo artigo vou falar do código e da parte de tratamento de dados.

--

--