# Carregando as bibliotecas necessárias
setwd('D:/michel/Universidade/Mestrado/disciplina/repo')
rm(list=ls())
library(tm)
## Loading required package: NLP
library(wordcloud)
## Loading required package: RColorBrewer
library(syuzhet)
library(twitteR)
library(DT)
Vamos criar uma nuvem de palavras a partir do discurso “Eu tenho um sonho,” de Martin Luther King Jr (Junior 1963). Primeiro precisamos definir o vetor tipo string com o discurso.
discurso <- 'Eu estou contente em unir-me com vocês no dia que entrará para a história como a maior demonstração pela liberdade na história de nossa nação.
Cem anos atrás, um grande americano, na qual estamos sob sua simbólica sombra, assinou a Proclamação de Emancipação. Esse importante decreto veio como um grande farol de esperança para milhões de escravos negros que tinham murchados nas chamas da injustiça. Ele veio como uma alvorada para terminar a longa noite de seus cativeiros.
Mas cem anos depois, o Negro ainda não é livre.
Cem anos depois, a vida do Negro ainda é tristemente inválida pelas algemas da segregação e as cadeias de discriminação.
Cem anos depois, o Negro vive em uma ilha só de pobreza no meio de um vasto oceano de prosperidade material. Cem anos depois, o Negro ainda adoece nos cantos da sociedade americana e se encontram exilados em sua própria terra. Assim, nós viemos aqui hoje para dramatizar sua vergonhosa condição.
De certo modo, nós viemos à capital de nossa nação para trocar um cheque. Quando os arquitetos de nossa república escreveram as magníficas palavras da Constituição e a Declaração da Independência, eles estavam assinando uma nota promissória para a qual todo americano seria seu herdeiro. Esta nota era uma promessa que todos os homens, sim, os homens negros, como também os homens brancos, teriam garantidos os direitos inalienáveis de vida, liberdade e a busca da felicidade. Hoje é óbvio que aquela América não apresentou esta nota promissória. Em vez de honrar esta obrigação sagrada, a América deu para o povo negro um cheque sem fundo, um cheque que voltou marcado com "fundos insuficientes".
Mas nós nos recusamos a acreditar que o banco da justiça é falível. Nós nos recusamos a acreditar que há capitais insuficientes de oportunidade nesta nação. Assim nós viemos trocar este cheque, um cheque que nos dará o direito de reclamar as riquezas de liberdade e a segurança da justiça.
Nós também viemos para recordar à América dessa cruel urgência. Este não é o momento para descansar no luxo refrescante ou tomar o remédio tranqüilizante do gradualismo.
Agora é o tempo para transformar em realidade as promessas de democracia.
Agora é o tempo para subir do vale das trevas da segregação ao caminho iluminado pelo sol da justiça racial.
Agora é o tempo para erguer nossa nação das areias movediças da injustiça racial para a pedra sólida da fraternidade. Agora é o tempo para fazer da justiça uma realidade para todos os filhos de Deus.
Seria fatal para a nação negligenciar a urgência desse momento. Este verão sufocante do legítimo descontentamento dos Negros não passará até termos um renovador outono de liberdade e igualdade. Este ano de 1963 não é um fim, mas um começo. Esses que esperam que o Negro agora estará contente, terão um violento despertar se a nação votar aos negócios de sempre
. Mas há algo que eu tenho que dizer ao meu povo que se dirige ao portal que conduz ao palácio da justiça. No processo de conquistar nosso legítimo direito, nós não devemos ser culpados de ações de injustiças. Não vamos satisfazer nossa sede de liberdade bebendo da xícara da amargura e do ódio. Nós sempre temos que conduzir nossa luta num alto nível de dignidade e disciplina. Nós não devemos permitir que nosso criativo protesto se degenere em violência física. Novamente e novamente nós temos que subir às majestosas alturas da reunião da força física com a força de alma. Nossa nova e maravilhosa combatividade mostrou à comunidade negra que não devemos ter uma desconfiança para com todas as pessoas brancas, para muitos de nossos irmãos brancos, como comprovamos pela presença deles aqui hoje, vieram entender que o destino deles é amarrado ao nosso destino. Eles vieram perceber que a liberdade deles é ligada indissoluvelmente a nossa liberdade. Nós não podemos caminhar só.
E como nós caminhamos, nós temos que fazer a promessa que nós sempre marcharemos à frente. Nós não podemos retroceder. Há esses que estão perguntando para os devotos dos direitos civis, "Quando vocês estarão satisfeitos?"
Nós nunca estaremos satisfeitos enquanto o Negro for vítima dos horrores indizíveis da brutalidade policial. Nós nunca estaremos satisfeitos enquanto nossos corpos, pesados com a fadiga da viagem, não poderem ter hospedagem nos motéis das estradas e os hotéis das cidades. Nós não estaremos satisfeitos enquanto um Negro não puder votar no Mississipi e um Negro em Nova Iorque acreditar que ele não tem motivo para votar. Não, não, nós não estamos satisfeitos e nós não estaremos satisfeitos até que a justiça e a retidão rolem abaixo como águas de uma poderosa correnteza.
Eu não esqueci que alguns de você vieram até aqui após grandes testes e sofrimentos. Alguns de você vieram recentemente de celas estreitas das prisões. Alguns de vocês vieram de áreas onde sua busca pela liberdade lhe deixaram marcas pelas tempestades das perseguições e pelos ventos de brutalidade policial. Você são o veteranos do sofrimento. Continuem trabalhando com a fé que sofrimento imerecido é redentor. Voltem para o Mississippi, voltem para o Alabama, voltem para a Carolina do Sul, voltem para a Geórgia, voltem para Louisiana, voltem para as ruas sujas e guetos de nossas cidades do norte, sabendo que de alguma maneira esta situação pode e será mudada. Não se deixe caiar no vale de desespero.
Eu digo a você hoje, meus amigos, que embora nós enfrentemos as dificuldades de hoje e amanhã. Eu ainda tenho um sonho. É um sonho profundamente enraizado no sonho americano.
Eu tenho um sonho que um dia esta nação se levantará e viverá o verdadeiro significado de sua crença - nós celebraremos estas verdades e elas serão claras para todos, que os homens são criados iguais.
Eu tenho um sonho que um dia nas colinas vermelhas da Geórgia os filhos dos descendentes de escravos e os filhos dos desdentes dos donos de escravos poderão se sentar junto à mesa da fraternidade.
Eu tenho um sonho que um dia, até mesmo no estado de Mississippi, um estado que transpira com o calor da injustiça, que transpira com o calor de opressão, será transformado em um oásis de liberdade e justiça.
Eu tenho um sonho que minhas quatro pequenas crianças vão um dia viver em uma nação onde elas não serão julgadas pela cor da pele, mas pelo conteúdo de seu caráter. Eu tenho um sonho hoje!
Eu tenho um sonho que um dia, no Alabama, com seus racistas malignos, com seu governador que tem os lábios gotejando palavras de intervenção e negação; nesse justo dia no Alabama meninos negros e meninas negras poderão unir as mãos com meninos brancos e meninas brancas como irmãs e irmãos. Eu tenho um sonho hoje!
Eu tenho um sonho que um dia todo vale será exaltado, e todas as colinas e montanhas virão abaixo, os lugares ásperos serão aplainados e os lugares tortuosos serão endireitados e a glória do Senhor será revelada e toda a carne estará junta.
Esta é nossa esperança. Esta é a fé com que regressarei para o Sul. Com esta fé nós poderemos cortar da montanha do desespero uma pedra de esperança. Com esta fé nós poderemos transformar as discórdias estridentes de nossa nação em uma bela sinfonia de fraternidade. Com esta fé nós poderemos trabalhar juntos, rezar juntos, lutar juntos, para ir encarcerar juntos, defender liberdade juntos, e quem sabe nós seremos um dia livre. Este será o dia, este será o dia quando todas as crianças de Deus poderão cantar com um novo significado.
"Meu país, doce terra de liberdade, eu te canto.
Terra onde meus pais morreram, terra do orgulho dos peregrinos,
De qualquer lado da montanha, ouço o sino da liberdade!"
E se a América é uma grande nação, isto tem que se tornar verdadeiro.
E assim ouvirei o sino da liberdade no extraordinário topo da montanha de New Hampshire.
Ouvirei o sino da liberdade nas poderosas montanhas poderosas de Nova York.
Ouvirei o sino da liberdade nos engrandecidos Alleghenies da Pennsylvania.
Ouvirei o sino da liberdade nas montanhas cobertas de neve Rockies do Colorado.
Ouvirei o sino da liberdade nas ladeiras curvas da Califórnia.
Mas não é só isso. Ouvirei o sino da liberdade na Montanha de Pedra da Geórgia.
Ouvirei o sino da liberdade na Montanha de Vigilância do Tennessee.
Ouvirei o sino da liberdade em todas as colinas do Mississipi.
Em todas as montanhas, ouviu o sino da liberdade.
E quando isto acontecer, quando nós permitimos o sino da liberdade soar, quando nós deixarmos ele soar em toda moradia e todo vilarejo, em todo estado e em toda cidade, nós poderemos acelerar aquele dia quando todas as crianças de Deus, homens pretos e homens brancos, judeus e gentios, protestantes e católicos, poderão unir mãos e cantar nas palavras do velho spiritual negro:
"Livre afinal, livre afinal.
Agradeço ao Deus todo-poderoso, nós somos livres afinal.'
Com o vetor em mãos, precisamos transforma-lo em um formato de Corpus.
SV <- VectorSource(discurso)
corpus <- Corpus(SV)
Agora precisamos limpar o texto, removendo as palavras conectivas, pontuações e outras. O objetivo é deixar apenas as palavras que carregam informações relevantes sobre o texto.
corpus <- tm_map(corpus, content_transformer(tolower)) # Deixando em caixa baixa
corpus <- tm_map(corpus, removePunctuation) # Removendo os caracteres de pontuação
corpus <- tm_map(corpus, stripWhitespace) # Removendo os espaços em brancos em excesso
corpus <- tm_map(corpus, removeNumbers) # Removendo os números
corpus <- tm_map(corpus, removeWords, stopwords('portuguese')) # Removendo os termos conectivos
inspect(corpus)
## <<SimpleCorpus>>
## Metadata: corpus specific: 1, document level (indexed): 0
## Content: documents: 1
##
## [1] contente unirme dia entrará história maior demonstração liberdade história nação cem anos atrás grande americano sob simbólica sombra assinou proclamação emancipação importante decreto veio grande farol esperança milhões escravos negros murchados chamas injustiça veio alvorada terminar longa noite cativeiros cem anos negro ainda é livre cem anos vida negro ainda é tristemente inválida algemas segregação cadeias discriminação cem anos negro vive ilha pobreza meio vasto oceano prosperidade material cem anos negro ainda adoece cantos sociedade americana encontram exilados própria terra assim viemos aqui hoje dramatizar vergonhosa condição certo modo viemos capital nação trocar cheque arquitetos república escreveram magníficas palavras constituição declaração independência assinando nota promissória todo americano herdeiro nota promessa todos homens sim homens negros homens brancos garantidos direitos inalienáveis vida liberdade busca felicidade hoje é óbvio américa apresentou nota promissória vez honrar obrigação sagrada américa deu povo negro cheque fundo cheque voltou marcado fundos insuficientes recusamos acreditar banco justiça é falível recusamos acreditar capitais insuficientes oportunidade nesta nação assim viemos trocar cheque cheque dará direito reclamar riquezas liberdade segurança justiça viemos recordar américa dessa cruel urgência é momento descansar luxo refrescante tomar remédio tranqüilizante gradualismo agora é tempo transformar realidade promessas democracia agora é tempo subir vale trevas segregação caminho iluminado sol justiça racial agora é tempo erguer nação areias movediças injustiça racial pedra sólida fraternidade agora é tempo fazer justiça realidade todos filhos deus fatal nação negligenciar urgência desse momento verão sufocante legítimo descontentamento negros passará termos renovador outono liberdade igualdade ano é fim começo esperam negro agora estará contente violento despertar nação votar negócios sempre algo dizer povo dirige portal conduz palácio justiça processo conquistar legítimo direito devemos ser culpados ações injustiças vamos satisfazer sede liberdade bebendo xícara amargura ódio sempre conduzir luta alto nível dignidade disciplina devemos permitir criativo protesto degenere violência física novamente novamente subir majestosas alturas reunião força física força alma nova maravilhosa combatividade mostrou comunidade negra devemos ter desconfiança todas pessoas brancas muitos irmãos brancos comprovamos presença aqui hoje vieram entender destino é amarrado destino vieram perceber liberdade é ligada indissoluvelmente liberdade podemos caminhar caminhamos fazer promessa sempre marcharemos frente podemos retroceder perguntando devotos direitos civis estarão satisfeitos nunca estaremos satisfeitos enquanto negro vítima horrores indizíveis brutalidade policial nunca estaremos satisfeitos enquanto corpos pesados fadiga viagem poderem ter hospedagem motéis estradas hotéis cidades estaremos satisfeitos enquanto negro puder votar mississipi negro nova iorque acreditar motivo votar satisfeitos estaremos satisfeitos justiça retidão rolem abaixo águas poderosa correnteza esqueci alguns vieram aqui após grandes testes sofrimentos alguns vieram recentemente celas estreitas prisões alguns vieram áreas onde busca liberdade deixaram marcas tempestades perseguições ventos brutalidade policial veteranos sofrimento continuem trabalhando fé sofrimento imerecido é redentor voltem mississippi voltem alabama voltem carolina sul voltem geórgia voltem louisiana voltem ruas sujas guetos cidades norte sabendo alguma maneira situação pode mudada deixe caiar vale desespero digo hoje amigos embora enfrentemos dificuldades hoje amanhã ainda sonho é sonho profundamente enraizado sonho americano sonho dia nação levantará viverá verdadeiro significado crença celebraremos verdades claras todos homens criados iguais sonho dia colinas vermelhas geórgia filhos descendentes escravos filhos desdentes donos escravos poderão sentar junto mesa fraternidade sonho dia estado mississippi estado transpira calor injustiça transpira calor opressão transformado oásis liberdade justiça sonho quatro pequenas crianças vão dia viver nação onde julgadas cor pele conteúdo caráter sonho hoje sonho dia alabama racistas malignos governador lábios gotejando palavras intervenção negação nesse justo dia alabama meninos negros meninas negras poderão unir mãos meninos brancos meninas brancas irmãs irmãos sonho hoje sonho dia todo vale exaltado todas colinas montanhas virão abaixo lugares ásperos aplainados lugares tortuosos endireitados glória senhor revelada toda carne estará junta é esperança é fé regressarei sul fé poderemos cortar montanha desespero pedra esperança fé poderemos transformar discórdias estridentes nação bela sinfonia fraternidade fé poderemos trabalhar juntos rezar juntos lutar juntos ir encarcerar juntos defender liberdade juntos sabe dia livre dia dia todas crianças deus poderão cantar novo significado país doce terra liberdade canto terra onde pais morreram terra orgulho peregrinos qualquer lado montanha ouço sino liberdade américa é grande nação tornar verdadeiro assim ouvirei sino liberdade extraordinário topo montanha new hampshire ouvirei sino liberdade poderosas montanhas poderosas nova york ouvirei sino liberdade engrandecidos alleghenies pennsylvania ouvirei sino liberdade montanhas cobertas neve rockies colorado ouvirei sino liberdade ladeiras curvas califórnia é ouvirei sino liberdade montanha pedra geórgia ouvirei sino liberdade montanha vigilância tennessee ouvirei sino liberdade todas colinas mississipi todas montanhas ouviu sino liberdade acontecer permitimos sino liberdade soar deixarmos soar toda moradia todo vilarejo todo estado toda cidade poderemos acelerar dia todas crianças deus homens pretos homens brancos judeus gentios protestantes católicos poderão unir mãos cantar palavras velho spiritual negro livre afinal livre afinal agradeço deus todopoderoso livres afinal
Agora o texto está pronto para se transformar numa núvem de palavras! Mas, antes de criar uma núvem de palavras, verificamos a frequência de cada palavra do texto
matrix.discurso <- as.matrix(TermDocumentMatrix(corpus))
matrix.discurso <- sort(rowSums(matrix.discurso), decreasing=T)
barplot(matrix.discurso, las=2)
A maior parte das palavras aparece no texto apenas uma vez. Então vamos levar isso em consideração ao criar a nuvem de palavras.
wordcloud(corpus, min.freq=2, max.word=Inf,
random.order=F, rot.per=.25,
colors=brewer.pal(8, 'Dark2'))
most.words <- 10
Dessa forma, as 10` palavras mais frequentes são
matrix.discurso <- as.matrix(TermDocumentMatrix(corpus))
matrix.discurso <- sort(rowSums(matrix.discurso), decreasing=T)
barplot(head(matrix.discurso,most.words), las=2,
ylab='Frequência', main='As 10 palavras mais frequentes')
Agora vamos criar uma nuvem de palavras com postagens feitas no Twitter a cerca da campanha Black Lives Matter.
Primeiro é necessário obter os tweets acerca do assunto. Para isso é necessário usar a API do Twitter e juntamente com as chaves e tokens fornecidos pelo mesmo.
# Autenticacao
api <- 'o4l5jLijU2acgbAR4nQylmjnH'
api_secret <- 'CHTnUhOEPw1bpR2YpZPr37CA95syhW4SWc1zo9nTk80zcLwnSh'
token <- '1392967052919443457-R3JswPnitIfHszAZJj94DcXSR2IYvX'
token_secret <- '6PH1rzLuT7beOsjYLOzKjlvMj609bks9B0dB4FdYsgtNW'
setup_twitter_oauth(api, api_secret, token, token_secret)
## [1] "Using direct authentication"
# Baixando novos dados do Twitter
tweets <- searchTwitter("#BlackLivesMatter", n=1000, lang='en')
Os tweets vem originalmente em forma de lista. Vamos transformar em um DataFrame. A biblioteca twetteR fornece a função twListToDF que faz a conversão.
tweets <- twListToDF(tweets)
Agora precisamos concatenar todos os tweets em uma única string, fazemos isso utilizando a função paste:
tweets.s <- paste(tweets$text, collapse=' ')
Novamente, vamos transformar no formato Corpus e realizar a limpeza dos conectores e pontuações.
# transformando em um corpus
sv <- VectorSource(tweets.s)
corpus <- Corpus(sv)
# Limpando os termos conectores e pontuações
corpus <- tm_map(corpus, content_transformer(tolower))
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, stripWhitespace)
corpus <- tm_map(corpus, removeNumbers)
corpus <- tm_map(corpus, removeWords, stopwords('english'))
inspect(corpus)
Desta vez faz-se necessário limpar outros caracteres que estão relecionados ao mundo digital, como links e outras pontuações.
removeURL <- function(x){gsub("http[^[:space:]]*", "", x)}
corpus <- tm_map(corpus, removeURL)
removeNumPunct <- function(x){gsub("[^[:alpha:][:space:]]*", "", x)}
corpus <- tm_map(corpus, removeNumPunct)
E então, temos a matriz de frequências:
freqs <- as.matrix(TermDocumentMatrix(corpus))
freqs <- sort(rowSums(freqs), decreasing=T)
barplot(freqs, las=2)
freq.minima2 <- 15
Por fim, criamos a nuvem de palavras com as palavras que aparecem no mínimo 15 vezes.
wordcloud(corpus, min.freq=freq.minima2, max.words = Inf,
random.order = T, rot.per = 0.25,
colors=brewer.pal(8, 'Dark2'), scale=c(2.2,0.8))
Para fazer a análise dos sentimentos destes tweets é necessário utilizar a biblioteca syuzhet, que utiliza Processamento de Linguagem Natural para extrair sentimentos de textos. A função get_nrc_sentiment recebe um vetor de textos e classifica cada elemento de acordo com 10 sentimentos diferentes.
sentimentos <- get_nrc_sentiment(tweets$text)
Então plotamos a frequência de cada sentimento nos tweets
barplot(colSums(sentimentos), las=2, col=rainbow(10),
ylab='Frequência', main='Sentimentos do Twitter em relação a #BlackLivesMatter')
Perceba que os sentimentos negativos e positivos estão consideravelmente próximo em termos de quantidades. Isso acontece pelo fato que, apesar de o movimento lutar por direitos igualitários e pelo fim do racismo, muitas pessoas podem estar relatando situações ruins que aconteceram, e por isso há muito sentimentos negativos em relação ao movimento.
Nesta seção vou mostrar um pouco sobre como digitar equações em LaTex. Para não ficar algo sem contexto, mostrarei algumas coisas que aprendi durante minha última iniciação científica. Começamos com a solução da Equação de Schrödinger independente do tempo unidimensional (ver Griffiths 2010), que é escrita da seguinte forma:
\[ - \frac{\hbar^2}{2m} \frac{d^2 \psi}{dx^2} + V = E \psi. \] Para o caso particular da partícula livre, temos \(V=0\), então: \[ -\frac{\hbar^2}{2m} \frac{d^2\psi}{dx^2} = E \psi. \] Mas, quais as condições de contorno? Qual geometria deseja-se estudar? Bom, para começar, pegamos o caso mais simples, uma linha unidimensional, que é dado pela seguinte condição de contorno:
\[ V(x) = \left\{ \begin{array}{ccccc} 0, & \text{se} & 0 \leqslant x \leqslant a\\ \infty, & \text{se} & \text{o contrário}. \end{array} \right . \]
A solução para este caso é uma simples senoide. Sendo a o tamanho da linha:
\[ \psi(x) = \sqrt{\frac{2}{a}} \sin \left(\frac{n \pi}{a}x\right). \]
Já quando vamos ao mundo bidimensional e queremos análisar o comportamento da função de onda em um disco circular, a situação fica muito mais complicada. É necessário resolver a equação de Schrödinger em coordenadas polares:
\[ - \frac{\hbar^2}{2\mu}\left(\frac{\partial ^2}{\partial r^2} + \frac{1}{r}\frac{\partial}{\partial r} + \frac{1}{r^2}\frac{\partial ^2}{\partial \theta ^2}\right) \psi(r,\theta) = E\psi(r,\theta), \] A solução desta equação é a combinação de um polinômio com uma exponencial:
\[ \psi(\rho,\theta) = \left[ \alpha_0\left(1 + \frac{\rho^4}{48} - \frac{\rho^2}{4} \right) + \alpha_1(\rho - \frac{\rho^3}{9})\right]e^{-m_l \theta}. \] Perfeito! A equação de Schrödinger serve para descrever o comportamento da materia (não relativística) na escala quântica. Pode-se dizer que ela é versão da Segunda Lei de Newton para corpos atômicos. Ao calcularmos
\[ |{\Psi(x,t)}|^2 dx \] Temos a Densidade de Probabilidade da função de onda da partícula em questão (um elétron, por exemplo), que descreve a probailidade de encontrar o elétron em alguma posição do espaço. E, como toda boa e velha FDP, tem-se que:
\[ \int_{\infty}^{\infty} |{\Psi(x,t)}|^2 dx = 1. \]
Fotografia de Myriam Jessier, Unsplash (Unspash 2021).
Aqui está uma definição simples de ciência de dados: A ciência de dados combina vários campos, incluindo estatísticas, métodos científicos e análise de dados para extrair valor dos dados(ver Oracle). Aqueles que praticam a ciência de dados são chamados de cientistas de dados e combinam uma variedade de habilidades para analisar dados coletados da web, smartphones, clientes, sensores e outras fontes. Fotografia de Adeolu Eletu, Unsplash (Unspash 2021).
Para consultar e se aprofundar em Ciência de Dados, não esqueça de visitar as fontes abaixo.