Queremos determinar quais palavras estão mais correlacionadas entre Tweets sobre determinado HashTag, utilizando o pacote widyr.
Cleuton Sampaio
In [1]:
library(twitteR)
library(ROAuth)
library(httr)
library(plyr)
library(stringr)
library(tidytext)
library(readr)
library(dplyr)
library(widyr)
Vamos obter os Tweets. Substitua os parâmetros abaixo por: api_key, api_secret, access_token, e access_token_secret. Você os obtém em https://apps.twitter.com
In [2]:
setup_twitter_oauth('1', '2', '3', '4')
Vamos obter os Tweets relacionados ao hashTag #brazil. O que os gringos falaram sobre o Brasil esta semana?
In [3]:
tweets_nc <- searchTwitter('#brazil', lang='en', n = 1000)
Vamos transformar em um Datafame e adicionar um identificador de cada linha:
In [4]:
df <- twListToDF(tweets_nc)
nrow(df)
In [5]:
df$sessao <- seq.int(nrow(df))
Agora, vamos transformar em formato Tidy, mas antes, precisamos carregar a lista de stopwords em inglês:
In [6]:
stopwords <- read_csv('stopwords.txt', col_names = 'word')
In [7]:
head(stopwords)
In [8]:
tidy_tweets <- df %>%
unnest_tokens(word, text) %>%
anti_join(stopwords,by="word")
head(tidy_tweets)
In [9]:
correlacao <- tidy_tweets %>%
group_by(word) %>%
filter(n() > 20) %>%
pairwise_cor(word, sessao, sort = TRUE)
correlacao
In [10]:
set.seed(42)
library(ggplot2)
In [11]:
library(igraph)
library(ggraph)
In [15]:
correlacao %>%
filter(correlation > .70) %>%
graph_from_data_frame() %>%
ggraph(layout = 'fr') +
geom_edge_link(aes(edge_alpha = correlation), show.legend = FALSE) +
geom_node_point(color = 'lightblue', size = 5) +
geom_node_text(aes(label = name), repel = TRUE) +
theme_void()
In [ ]: