Rodrigo Esteves de Lima-Lopes (rll307@unicamp.br)
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:
- Scraping Twitter data and using it in R
- Análise de Conteúdo (twitteR)
- Analyzing Tweets with R –Analisando Mídias Sociais no R
Algumas modificações foram feitas de forma a:
- Possibilitar o uso de ferramentas em português
- 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:
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:
- library(tidyverse): Exploração de corpora/tratamento.
- library(ggplot2): Visualização gráfica.
- library(ggraph): Visualização gráfica.
- library(wordcloud): Visualização gráfica.
- library(wordcloud2): Visualização gráfica.
- library(stringi): Tratamento de dados.
- library(RColorBrewer): Visualização gráfica.
- library(tidytext): Exploração de corpora/tratamento.
- library(widyr): Tratamento de dados.
- library(readr): Tratamento de dados.
- library(igraph): Visualização gráfica.
- library(dplyr): Tratamento de dados.
- library(twitteR): Coleta de dados.
- library(quanteda): Exploração de corpora.
- library(tm): Exploração de corpora/tratamento.
- 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:
- “Diego Costa”, que representa o termo de procura
- “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 -Scripts