Computação para Análise de Dados

Item I

Nuvem de palavra do discurso “Eu tenho um sonho” de Martin Luther King Jr.

Abaixo encontrasse o código para o carregamento, processamento e geração da nuvem de palavras do discurso “Eu tenho um sonho” de Martin Luther King Jr. Devido ao grande número de palavras que não caberiam no gráifco ou ficariam ilegíveis, o número de palavras na nuvem foi limitado a 100.

preprocessing <- function(corpus, lang){
    
  
  #Coloca tudo em minúsculo
  corpus <- tm_map(corpus, tolower)
  
  #Remove pontuação
  corpus <- tm_map(corpus, removePunctuation)
  
  #Remove números
  corpus <- tm_map(corpus, removeNumbers)
  
  #Remove espaços extras em branco
  corpus <- tm_map(corpus, stripWhitespace)
  
  #Remove palavras ruído
  corpus <- tm_map(corpus, removeWords,stopwords(lang))

  # remove URLs 
  removeURL <- function(x) gsub("http[^[:space:]]*", "",x)
  corpus <-tm_map(corpus,removeURL)
  
  # remove qualquer coisa que não seja letras em português e espaço.
  removeNumPunct <- function(x) gsub ("[^[:alpha:][:space:]]*", "",x)
  corpus <- tm_map(corpus,content_transformer(removeNumPunct))
  
  return (corpus)
}

#Cria corpus
discurso <- read_file("discurso.txt")
discurso_S <- VectorSource(discurso)
corpus <- preprocessing(Corpus(discurso_S), lang="portuguese")
## Warning in tm_map.SimpleCorpus(corpus, tolower): transformation drops documents
## Warning in tm_map.SimpleCorpus(corpus, removePunctuation): transformation drops
## documents
## Warning in tm_map.SimpleCorpus(corpus, removeNumbers): transformation drops
## documents
## Warning in tm_map.SimpleCorpus(corpus, stripWhitespace): transformation drops
## documents
## Warning in tm_map.SimpleCorpus(corpus, removeWords, stopwords(lang)):
## transformation drops documents
## Warning in tm_map.SimpleCorpus(corpus, removeURL): transformation drops
## documents
## Warning in tm_map.SimpleCorpus(corpus, content_transformer(removeNumPunct)):
## transformation drops documents
#Cria matriz
dtm <-TermDocumentMatrix(corpus)
dtm <- as.matrix(dtm)

#Fornece a frequência de cada palavra
fre <- sort(rowSums(dtm),decreasing=TRUE)
#Cria nuvem de palavras
wordcloud(names(fre),freq=fre,min.freq=1,max.words=100,scale=c(3,.4),
          random.order=F, rot.per=0.35, colors=brewer.pal(8, "Dark2"))

As palavras mais frequentes podem ser vistas no gráfico abaixo. Devido ao grande número de palavras que ficariam ilegível no gráfico, o número de palavras foi limitado a 20.

Plote as palavras mais frequentes

barplot(fre[0:20],las=2,col=rainbow(10))

Com a remoção das stopwords, podemos verificar tanto na nuvem quanto no gráfico de barras como as palavras mais frequentes são bastante representativas, resumindo bem o discurso em poucas palavras com termos bem significativos como liberdade, sonho, justiça, entre outros. Através desses termos é possível interpretar facilmente o conteúdo do texto original que fala sobre o sonho de liberdade e justiça para o povo negro.

Item II

Nuvem de palavra a partir dos twitters sobre Black Live Matters

Código para obtenção, processamento e criação da nuvem de palavra de 1000 tweets sobre o movimento Black Lives Matters. Além disso, encontrasse também o gráfico com a polaridade do sentimento contido nesses tweets. Devido ao grande número de palavras que não caberiam no gráifco ou ficariam ilegíveis, o número de palavras na nuvem foi limitado a 200. Os textos foram obtidos em inglês devido ao uso com mais frequência dos termos buscados no inglês.

# Configurando a API
setup_twitter_oauth(consumer_key,consumer_secret,access_token,access_secret)
## [1] "Using direct authentication"
# Obtendo os tweets 
tweets <- searchTwitter("Black Lives Matters", n=1000, lang="en")

# Cria corpus e preprocessa
tweets <- twListToDF(tweets)
tweets_t <- tweets$text
tweets_S <- VectorSource(tweets_t)
corpus <- preprocessing(Corpus(tweets_S), lang="english")
## Warning in tm_map.SimpleCorpus(corpus, tolower): transformation drops documents
## Warning in tm_map.SimpleCorpus(corpus, removePunctuation): transformation drops
## documents
## Warning in tm_map.SimpleCorpus(corpus, removeNumbers): transformation drops
## documents
## Warning in tm_map.SimpleCorpus(corpus, stripWhitespace): transformation drops
## documents
## Warning in tm_map.SimpleCorpus(corpus, removeWords, stopwords(lang)):
## transformation drops documents
## Warning in tm_map.SimpleCorpus(corpus, removeURL): transformation drops
## documents
## Warning in tm_map.SimpleCorpus(corpus, content_transformer(removeNumPunct)):
## transformation drops documents
#Cria a matriz
dtm <-TermDocumentMatrix(corpus)
dtm <- as.matrix(dtm)

#Fornece a frequência de cada palavra
fre <- sort(rowSums(dtm),decreasing=TRUE)

# Cria nuvem
wordcloud(names(fre),freq=fre,min.freq=1,max.words=200,scale=c(4,.5),
          random.order=F, rot.per=0.35, colors=brewer.pal(8, "Dark2"))

s <- get_nrc_sentiment(tweets$text)
## Warning: `filter_()` is deprecated as of dplyr 0.7.0.
## Please use `filter()` instead.
## See vignette('programming') for more help
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_warnings()` to see where this warning was generated.
## Warning: `group_by_()` is deprecated as of dplyr 0.7.0.
## Please use `group_by()` instead.
## See vignette('programming') for more help
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_warnings()` to see where this warning was generated.
## Warning: `data_frame()` is deprecated as of tibble 1.1.0.
## Please use `tibble()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_warnings()` to see where this warning was generated.
barplot(colSums(s),las=2,col=rainbow(10),ylab= "Quantidade",
        main="Sentimentos sobre o Movimento Black Lives Matters")

Ao analisar a nuvem de palavras podemos ver termos representativos que indicam o que está sendo debatido em torno do tema. Há muitas citações a nomes de políticos americanos, indicando a cobrança que é feita pelos internautas aos mesmos. Outros termos que indicam cobranças também pode ser visualizado como answer, need e equality. Internautas também expressão seu sentimentos através de termos como scared. Ainda são feitas muitas referências ao debate presidencial realizado poucos dias antes da coleta dos tweets e o estimulo e pedido para que as pessoas votem nas eleições. Os sentimentos mais frequentes nos tweets são tristeza e sentimentos negativos, o que é bem condizente com a situação atual vivida em torno desse tema, e positivo e confiança que pode demonstrar a esperança de alguns dos internautas.

Item III

\(\int_0^2x^2dx\)

\(\sum_{i=1}^{n}i=\frac{n(n+1)}{2}\)

\(P\left(y|x\right)=\frac{P\left(x|y\right)P\left(y\right)}{P\left(x\right)}\)

\(L_{T}(\vec{\lambda})=\sum_{x,s\in T} \log P(x|S)-\sum_{i=1}^m\frac{\lambda_i^2}{2\sigma^2}\)

\(\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}\)

Item IV

Imagem 1 Imagem 2

Tabela 1

library(DT)
datatable(head(cars))

Tabela 2

head(pressure)

Item V

Citações

Schäfer and Bildhauer (2015), Vargiu and Urru (2012), Criminisi, Konukoglu, and Shotton (2011), Haykin (1998), Turney (2002)

Referências

Criminisi, Antonio, Ender Konukoglu, and Jamie Shotton. 2011. “Decision Forests for Classification, Regression, Density Estimation, Manifold Learning and Semi-Supervised Learning.” In.

Haykin, Simon. 1998. Neural Networks: A Comprehensive Foundation. 2nd ed. Upper Saddle River, NJ, USA: Prentice Hall PTR.

Schäfer, Roland, and Felix Bildhauer. 2015. “Web Corpus Construction Roland Schäfer and Felix Bildhauer (Freie Universität Berlin) Morgan & Claypool (Synthesis Lectures on Human Language Technologies, Edited by Graeme Hirst, Volume 22), 2013, 145 Pages, Paper-Bound, Isbn 9781608459834, Doi:10.2200/S00508ed1v01y201305hlt022.” Computational Linguistics 41: 161–63.

Turney, Peter D. 2002. “Thumbs up or Thumbs down?: Semantic Orientation Applied to Unsupervised Classification of Reviews.” In Proceedings of the 40th Annual Meeting on Association for Computational Linguistics, 417–24. ACL ’02. Stroudsburg, PA, USA: Association for Computational Linguistics. https://doi.org/10.3115/1073083.1073153.

Vargiu, Eloisa, and Mirko Urru. 2012. “Exploiting Web Scraping in a Collaborative Filtering- Based Approach to Web Advertising.” Artif. Intell. Research 2: 44–54.