Twitter e R (Primeiro Post)

Este notebook é parte de uma série no qual analisarei o Twitter. Ele foi produzido de forma a auxiliar colegas que atuam na área de Linguística do Corpus e Linguística Sistêmico Funcional, como forma de utilizar R em suas pesquisas. Ele é baseado nos seguintes websites:

Algumas modificações foram feitas de forma a:

  1. Possibilitar o uso de ferramentas em português
  2. Facilitar a navegação pelo público a que se destina.

Este documento é baseado no uso do pacote twitteR. Em outra ocasião, este mesmo processo de pesquisa será realizado com outro pacote e código.

Por favor, me mande um email, caso precisar de ajuda ou para algum contato de pesquisa. O Script com a função final se encontra no rodapé desta página.

Analisando Tuítes

O Twitter é uma importante ferramenta para estudo de mídias sociais. Ele mostra algumas tendências importantes em termos da nossa movimentação social e política. Nosso objetivo aqui é realizar uma análise exploratória, que poderia ser aplicada a qualquer outra situação, transformando-se as variáveis.

API: conseguindo autorização

De forma a conseguir utilizar o pacote twitteR, será necessária um registro de desenvolvedor junto ao Twitter. Eu recomendaria o seguinte tutorial para tal: SlickRemix

Programas necessários

Para realização deste tutorial, você precisará dos seguintes programas onstalados:

  • R, um poderoso pacote estatístico, que acaba por servir para muito mais, como analisar textos.
  • Rstudio, um IDE (ou interface para usuário do R). Não é obrigatório, mas deixa as coisas bem mais fáceis de se operar.

Pacotes do R

Para realizarmos esta série de exercícios percisaremos de diversos pacotes. Não usaremos todos de uma vez, vamos chamá-los a medida que forem sendo necessários neste tutorial e nos que o seguem.

Caso os pacotes não estejam instalados, eles podem ser instalados de duas formas: – No Rstudio, basta ir à aba Packages -> install, digitar o nome do pacote e esperar. – Em um terminal rodando R), digitar o comando install.packages(“nome do pacote”).

Cada um desses pacotes tem uma função específica:

  1. library(tidyverse): Exploração de corpora/tratamento.
  2. library(ggplot2): Visualização gráfica.
  3. library(ggraph): Visualização gráfica.
  4. library(wordcloud): Visualização gráfica.
  5. library(wordcloud2): Visualização gráfica.
  6. library(stringi): Tratamento de dados.
  7. library(RColorBrewer): Visualização gráfica.
  8. library(tidytext): Exploração de corpora/tratamento.
  9. library(widyr): Tratamento de dados.
  10. library(readr): Tratamento de dados.
  11. library(igraph): Visualização gráfica.
  12. library(dplyr): Tratamento de dados.
  13. library(twitteR): Coleta de dados.
  14. library(quanteda): Exploração de corpora.
  15. library(tm): Exploração de corpora/tratamento.
  16. library(plyr): Exploração de corpora/tratamento.

Não se preocupe com os comflitos do library(tidyverse), eles são ignoráveis.

library(tidyverse)
## ── Attaching packages ──────────────────────────────────── tidyverse 1.2.1 ──
## ✔ ggplot2 3.1.0       ✔ purrr   0.3.2  
## ✔ tibble  2.1.1       ✔ dplyr   0.8.0.1
## ✔ tidyr   0.8.3       ✔ stringr 1.4.0  
## ✔ readr   1.3.1       ✔ forcats 0.4.0
## ── Conflicts ─────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
library(dplyr)
library(twitteR)
## 
## Attaching package: 'twitteR'
## The following objects are masked from 'package:dplyr':
## 
##     id, location
library(ggplot2)
library(tidytext)

Buscando os dados

O primeiro passo é logar-se no Twitter. Configuramos as variáceis de cesso previamente conseguidas. Substitua SEUS_DADOS por suas informações:

library(twitteR)
consumer_key <- "SEUS_DADOS"
consumer_secret <- "SEUS_DADOS" 
access_token <- "SEUS_DADOS"
access_secret <- "SEUS_DADOS"

Depois de organizadas as variáveis, basta logar-se:

setup_twitter_oauth(consumer_key, 
                    consumer_secret, 
                    access_token, access_secret)

Agora vamos descobrir quais são os trend topics disponíveis nesse momemto. Vale observar que:

  • getTrends() é um comendo que encontra os trends topics na localização 23424768, que representa o Brazil
  • Uma lista das localidades de pesquisa diponíveis pode ser observada com o comando: trendloc <- availableTrendLocations(), que salvará esses vriáveis na variável trendloc.
trendsbr <- getTrends(woeid = 23424768)

Pelo que observei no arquivo, o Twitter Brasil tem a expressão Diego Costa, um jogador brasileiro que atua na Europa, como tema mais comentado. Vamos então realizar uma pesquisa sobre ele. Para tanto usamos o comando searchTwitter(), com as seguintes variáveis:

  1. “Diego Costa”, que representa o termo de procura
  2. “n=10000”, que representa o número de tuítes para procurar

Os dados serão salvos em uma lista chamada Diego.Costa. Acho importante você trocar os dados por coisas que façam sentido no seu contexto.

Diego.Costa<- searchTwitter("Diego Costa", n=10000)

Agora precisamos transformar esses dados em um “Data Frame”, um dos modelos de dados que o R usa para suas análises.Vamos também fazer uma cópia dos dados no disco, usando o formato CSV.

Diego.Costa.df <- twListToDF(Diego.Costa)
write.table(Diego.Costa.df,"DiegoCostaDf.csv", append=T, row.names=F, col.names=T,  sep=",")

Após salvarmos o texto, famos iniciar o processo de construção de uma lista de palavras. Primeiramente, selecionamos a colunos text dos tuítes.

words.prep <- Diego.Costa.df %>% select(text)
words.DC<-unnest_tokens(words.prep ,"word","text")

Criada esta lista, vamos plotar uma lista das palavras mais comuns e significativas. Levando em conta as 20 primeiras.

words.DC %>% count(word, sort = T) %>% slice(1:20) %>% 
  ggplot(aes(x = reorder(word, n, function(n) -n), y = n)) + 
  geom_bar(stat = "identity") + 
  theme(axis.text.x = element_text(angle = 60, hjust = 1)) + xlab("")

 

Algo que nos chama a atenção é a grande quantidae de palavras de caráter técnico, tais como hhtps: (usada para links), t.co (pedaços de links), além de preposições e artigos. Isso tende a ser normal. Uma vez que os dados não foram limpos (como em tutoriais anteriores). Como a maioria dos tuítes estão em espanhol seria necessário limpar nessa língua.

words.DC.limpas <- words.DC %>% anti_join(espanhol, by=c('word'="V1"))

Vejamos agora a diferença:

words.DC.limpas %>% count(word, sort = T) %>% slice(1:20) %>% 
  ggplot(aes(x = reorder(word, n, function(n) -n), y = n)) + 
  geom_bar(stat = "identity") + 
  theme(axis.text.x = element_text(angle = 60, hjust = 1)) + xlab("")

 

Algumas palavras aparecem em inglês, motrando que nossa amostra é multingue, algo, muitas vezes, comum no Twitter. Para que este post não fique muito longo. Em um próximo exploraremos alguns outros conteúdos.

Twitter 1 - PDF

 

Twitter 1 -Scripts