Relatório

01. Eu tenho um sonho

Primeiro devemos ler o arquivo .txt que contém o discuro “Eu tenho um sonho” de Martin Luther King Jr.

discurso <- read_file('discurso.txt')

Precisamos conterter o texto em um Corpus para que seja processado pelo pacote tm.

vs <- VectorSource(discurso)
corpus <- Corpus(vs)

Realizamos a limpeza do texto, removendo as pontuações, convertendo tudo para letras minúsculas, removendo números, espaço em branco desnecessários e removendo as stop words.

corpus <- tm_map(corpus, content_transformer(tolower))
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, removeNumbers)
corpus <- tm_map(corpus, removeWords, stopwords('portuguese'))
corpus <- tm_map(corpus, stripWhitespace)

Convertemos o corpus em uma matriz

tdm <- as.matrix(TermDocumentMatrix(corpus))

Contamos a frequência das palavras e extraimos apenas as palavras que aparecem mais de uma vez

frequencia <- sort(rowSums(tdm), decreasing = TRUE)
aux <- subset(frequencia, frequencia>1)

Essa extração retornou um total de 34 palavras.

Plotamos o gráfico com a frequência das palavras

barplot(aux, las=2, col = rainbow(length(aux)))

Criação da nuvem de palavras

wordcloud(corpus,
          min.freq = 1,
          max.words = 60,
          random.order = FALSE,
          rot.per = 0.35,
          colors=brewer.pal(8, "Dark2"))

Os termos sonho, homens, liberdade são os mais citados durante o discurso.

02. Black Lives Matters

Primeiramente devemos configurar nossas credenciais de acesso ao Twitter

consumer_key <- "t6ookzsbnre8GAIfL1klXyguA"
consumer_secret <- "EAkndimE52aoOYyXeCJ0VZFaXEOQUCaJ0EAsKGeY8vxaF7WVPC"
access_token <- "1280216867928444929-wPUOrXX6cUa7PP8ypHGo7KLq7BDhzf"
access_secret <- "PzBE1Zz9DQyISn351sAuMNt18Cc5GOTvm4yc3k8ISCAol"

setup_twitter_oauth(
  consumer_key = consumer_key,
  consumer_secret = consumer_secret,
  access_token = access_token,
  access_secret = access_secret
)
## [1] "Using direct authentication"

Devemos realizar uma busca no Twitter sobre o conteúdo que queremos realizar a análise e converter o conteúdo em um dataframe.

tweets <- searchTwitter("Black Lives Matters", n=500, lang="en")
tweets <- twListToDF(tweets)

Através do comando acima, recuperamos um total de 500 tweets para serem processados.

Nuvem de Palavras

Para criar uma nuvem de palavras, primeiramente deveremos juntar todos os tweets em uma única linha e transforma-lo em um Corpus para ser processado pelo pacote tm.

tweets_t <- paste(tweets$text, collapse = " ")
tweets_s <- VectorSource(tweets_t)

corpus <- Corpus(tweets_s)

Devemos realizar uma limpeza do conteúdo dos tweets, removendo os links, pontuações, as stopwords, os espaços em branco desnecessários e convertendo tudo para letras minúsculas.

corpus <- tm_map(corpus, tolower)
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, stripWhitespace)
corpus <- tm_map(corpus, removeWords, stopwords('english'))

removeUrl <- function(x) gsub("http[^[:space:]]*", "", x)
corpus <- tm_map(corpus, removeUrl)

Convertemos o corpus em uma matriz e contamos a frequência de cada palavra

dtm <- TermDocumentMatrix(corpus)
dtm <- as.matrix(dtm)

frequencia <- sort(rowSums(dtm), decreasing = T)

Geramos a nuvem de palavras

wordcloud(corpus, min.freq = 3,
          max.words = Inf,
          random.order = F,
          rot.per = 0.15,
          colors = brewer.pal(8, "Dark2"),
          scale = c(8,.2))

Análise de Sentimentos

Pegamos apenas a coluna de texto dos tweets e realizamos a análise de sentimentos.

tweets <- tweets$text
s <- get_nrc_sentiment(tweets)

Plotamos o gráfico em barras para analisar os sentimentos dos tweets.

barplot(count,
        las = 2,
        col = rainbow(length(s)),
        ylab = "Contagem",
        main = "Sentimentos sobre Black Lives Matter")

Percebemos que no geral há um sentimento negative e sadness, não pelo movimento mas sim decorrente aos últimos acontecimentos nos EUA.

03. Equações

Permutação simples: \(P_{n} = n!\)

Permutação com repetição: \(P_{n}^{a,b,c,...} = \frac{n!}{a!b!c!...}\)

Arranjo simples: \(A_{n,p} = \frac{n!}{(n - p)!}\)

Arranjo com repetição: \(A_{n,p}^{r} = n^{p}\)

Combinação simples: \(C_{n,p} = \frac{A_{n,p}}{p!} = \frac{n!}{(n - p)! p!}\)

04. Figuras

Ciclo de vida para realizar análise de dados.

Ciclo de vida para realizar análise de dados.

Metodologia científica para ciência de dados.

Metodologia científica para ciência de dados.

05. Referências

Marr and Poggio (1979) Murray and Little (2000) Jin et al. (2009) Huang, Zhou, and Yang (2007) Xu et al. (2017)

Huang, Jizhou, Ming Zhou, and Dan Yang. 2007. “Extracting Chatbot Knowledge from Online Discussion Forums.” In IJCAI, 7:423–28.

Jin, Seunghun, Junguk Cho, Xuan Dai Pham, Kyoung Mu Lee, Sung-Kee Park, Munsang Kim, and Jae Wook Jeon. 2009. “FPGA Design and Implementation of a Real-Time Stereo Vision System.” IEEE Transactions on Circuits and Systems for Video Technology 20 (1): 15–26.

Marr, David, and Tomaso Poggio. 1979. “A Computational Theory of Human Stereo Vision.” Proceedings of the Royal Society of London. Series B. Biological Sciences 204 (1156): 301–28.

Murray, Don, and James J Little. 2000. “Using Real-Time Stereo Vision for Mobile Robot Navigation.” Autonomous Robots 8 (2): 161–71.

Xu, Anbang, Zhe Liu, Yufan Guo, Vibha Sinha, and Rama Akkiraju. 2017. “A New Chatbot for Customer Service on Social Media.” In Proceedings of the 2017 Chi Conference on Human Factors in Computing Systems, 3506–10.