Agda Costa
Pacotes necessĂĄrios:
#install.packages("twitteR")
#install.packages("wordcloud")
#install.packages("dplyr")
#install.packages("tidytext")
#install.packages("tm")
#install.packages("readr")
#install.packages("magrittr")
#install.packages("stringi")
#install.packages("stringr")
#install.packages("wordcloud2")
#install.packages("kntnr")
#install.packages("kableExtra")
#install.packages("devtools")
#install.packages("pkload")
library(twitteR) # Para ter acesso Ă API do Twitter
library(wordcloud) # Para fazer a nuvem de palavras
library(wordcloud2)# Para fazer a nuvem de palavras com mais personalização
library(dplyr) # Para tratamento dos dados
library(tidytext) # Para transformar tweets em palavras
library(tm) # Para processamento e limpesa do corpus
library(readr) # Para guardar arquivo
library(magrittr) # Para usar %>%
library(stringi) # Para tratamento de acentuação
library(stringr) # Para formatação de palavras
library(knitr) # Para criação de tabela
library(kableExtra)# Para Personalização tabela
require(devtools)
require(pkgload) AtravĂ©s das Api Keys, carregamos Mil tweets com o assunto FeminicĂdio com nosso idioma portuguĂȘs.
Vamos agora criar um data frame com os tweets e selecionar apenas as variĂĄveis de interesse.
Em seguida, salvar em um arquivo.
No meu caso, escolhi trabalhar com as variåveis Texto, ID, data de criação e Nome do usuårio e quero apenas os tweets que não são Retweet.
dados = twitteR::twListToDF(tweets)
dados = dados %>%
filter(isRetweet == FALSE) %>%
select(text, id,created, screenName)
write.table(dados,"tweets_feminicidio.csv", append=T, row.names=F, col.names=T, sep=",")
remove(tweets)Limpeza dos dados.
dados$text <- gsub("#([a-z|A-Z|0-9|_])*","", dados$text) # remove hashtags
dados$text <- gsub('@([a-z|A-Z|0-9|_])*', '', dados$text) # remove palavras com @ (mençÔes)
dados$text <- gsub('https://','', dados$text) # removes https://
dados$text <- gsub('http://','', dados$text) # removes http://
dados$text <- gsub('[^[:graph:]]', ' ', dados$text) # removes graphic characters like emoticons
dados$text <- gsub('[[:punct:]]', '', dados$text) # removes punctuation
dados$text <- gsub('[[:cntrl:]]', '', dados$text) # removes control characters
dados$text <- gsub("\\w*[0-9]+\\w*\\s*", "", dados$text) # removes numbers
dados$text <- tolower(dados$text) # Caixa baixa
dados$text <- gsub('feminicidio','feminicĂdio', dados$text) # Substituindo por palavra com acentoPrecisamos criar um corpus, converter em um documento de texto simples
E em seguida retirar as âstopwordsâ, que sĂŁo palavras irrelevantes para nosso objetivo, como âpara, que, de..â
Matriz de termos frequentes.
freq = TermDocumentMatrix(corpus) # Matriz de Palvras frequentes
matriz = as.matrix(freq) # Transformando a matriz no formato R
matriz = sort(rowSums(matriz), decreasing = T) # Ordenar de forma decrescente
matriz = data.frame(Palavra = names(matriz), Freq = matriz) # Transformando em Data Frame
matriz$Palavra = str_to_title(matriz$Palavra) # Primeira letra maiuscĂșla e demais minuscĂșla| Palavra | Freq |
|---|---|
| FeminicĂdio | 207 |
| Mulher | 35 |
| Sobre | 26 |
| VĂtima | 24 |
| Caso | 20 |
| Pra | 18 |
| Casos | 15 |
| Gente | 15 |
| Homem | 15 |
| Cara | 14 |
Finalmente criamos nossa nuvem de palavras..
par(bg = "black")
wordcloud(str_to_title(matriz$Palavra), matriz$Freq, random.order=FALSE,
colors=brewer.pal(8,"RdBu"), max.words = 100, rot.per = 0.2, scale = c (20,0.5))Links