Análise de Dados: Extraindo e analisando tweets com R

Romulo Eduardo 9 de Março de 2018 às 08:00

Em 2016, de acordo com um relatório elaborado pela Cisco, o tráfego na internet superou a marca de 1 Zettabyte (ou 1 bilhão de Terabytes) de dados transferidos. O gigantesco volume de dados tornou-se um problema para os cientistas de dados que visam obter informações relevantes e que apoiem decisões através destes dados não estruturados. Com a popularização da linguagem de programação R, estatísticos e aspirantes obtiveram acesso a ferramentas poderosas e extensíveis para análise de dados.

No artigo de hoje, utilizaremos a linguagem R para obter tweets relacionados a uma hashtag específica e, ao final, montaremos um gráfico em forma de nuvem de palavras contendo os termos com maior número de repetições.

Instalando o R Studio

Antes de iniciarmos é preciso que você tenha o R Studio instalado e configurado em sua máquina. Se ainda não possuir, clique aqui para acessar um roteiro de instalação.

Após instalar o R Studio, crie um novo R Script acessando o menu File > New File > R Script.

Obtendo o token do Twitter

Para ter acesso aos dados do Twitter é preciso registrar sua aplicação na área de desenvolvedores. Através do roteiro abaixo você será capaz de gerar os tokens e chaves necessárias para que o R Studio possa buscar os dados pretendidos.

  • Acesse o site: https://apps.twitter.com
  • Preencha o formulário com seu usuário e senha;
  • Na área de gerenciamento, clique no botão Create New App;
  • Preencha os dados do seu aplicativo e clique em Create Your Twitter Application;
  • Copie as chaves de acesso geradas e as inclua em uma variável dentro do script que estamos construindo.
Como exemplo, criei as variáveis abaixo e as atribuí os valores gerados na área de desenvolvedores do Twitter.
key <- "VALOR"

key_secret <- "VALOR"

token <- "VALOR"

token_secret <- "VALOR"
	

Expandindo os super-poderes do R

Após obter as chaves de acesso, é hora de preparar o ambiente instalando os pacotes necessários para a coletaa dos tweets e a geração do gráfico. Os comandos abaixo automatizxam a instalação dos pacotes.

# Responsável por conectar-se à API do Twitter.
install.packages("twitteR")

# Responsável por gerar o gráfico em formato de nuvem de palavras.
install.packages("wordcloud")

# Fornece paletas de cores para refinar a aparência dos gráficos.
install.packages("RColorBrewer")

# Fornece funções de tratamento de strings.
install.packages("stringr")

Após a instalação dos pacotes, devemos carregá-los em memória para que eles extendam as funcionalidades do nosso script.

library(twitteR)

library(wordcloud)

library(RColorBrewer)

library(stringr)

Por fim, executamos a função setup_twitter_ouath  para autenticarmos o script à API.

# Passa os tokens como parâmetro para autenticar na api do twitter.
setup_twitter_oauth(key, key_secret, token, token_secret)

Obtendo os tweets

Quase lá! Agora que conectamos ao Twitter, vamos realizar uma busca pela hashtag #MasterchefBR (que eu adoro!) através do comando:

tweets <- 
  searchTwitter(searchString = "#masterchefbr exclude:retweets", n = 1000)

Este comando irá retornar 1000 tweets (por restrição da própria API) e armazenará os resultados na variável tweets.

Entretanto, os objetos retornados pelo comando searchTwitter são objetos complexos e ainda não podem ser trabalhados como dataframes. Para isto, vamos executar o lapply para obter apenas os textos dos tweets dos usuários.

tweetsTexts <- 
  unlist(lapply(tweets, function(t) t$text))

Como alguns tweets possuem emojis, eles podem apresentar erros durante a exibição do gráfico. Assim, vamos utilizar o comando str_replace_all para remover esses caracteres especiais.

tweetsTexts <-
  str_replace_all(tweetsTexts,"[^[:graph:]]", " ")

Por fim, vamos separar cada palavra dos tweets para que possamos sumarizar a quantidade de vezes que cada uma ocorreu. Vamos também tornar todas as palavras em minúsculas para evitar duplicidade.

words <-
  unlist(strsplit(tweetsTexts, " "))

words <-
  tolower(words)

Ufa! Agora nosso dataframe já pode ser exibido em um gráfico.

Montando a nuvem de palavras

Antes de montar o gráfico, utilizando o pacote RColorBrewer para definir as cores que irão compor o gráfico.

# Define a paleta de cores que será utilizada no gráfico.
pal = brewer.pal(3,"Set1")

E, por fim, executamos a função que irá gerar o gráfico no formato nuvem de palavras.

wordcloud(words, 
          max.words = 100,
          scale = c(3,.3),
          random.color = 1,
          colors = pal)

O R Studio irá exibir o gráfico na lateral direita da interface e exibirá as 100 palavras que mais foram digitadas pelos usuários.

Por enquanto vamos ficando por aqui. Na próxima semana abordaremos algoritmos preditivos.

Sigam-nos nas redes sociais para não perder nenhum post. 😀