5.2 Dados do Twitter

Uma boa maneira de explorar os conceitos básicos relacionados a dados textuais é minerar algumas mensagens do Twitter utilizando a biblioteca twitteR do R.

Além de possuir uma conta regular do Twitter, para rodar os exemplos a seguir é necessário criar uma conta (gratuita) de desenvolvedor. Nossa conta de exemplo está acessível em: https://twitter.com/BayesianFactory

O primeiro passo é se conectar e autenticar. Abaixo, por uma questão de privacidade, ocultamos os valores das chaves de acesso. Utilize suas próprias chaves quando reproduzir os exemplos.

## [1] "Using direct authentication"

Uma funcionalidade básica da biblioteca twitteR é enviar Tweets utilizando a função tweet().

Também podemos verificar as Twitter trends de uma certa localidade, identificada pelo woeid (“Where On Earth IDentifier”). Para descobrir o woeid da localidade mais próxima a partir de uma latitude e uma longitude (por exemplo, as do bairro da Vila Olímpia, em São Paulo), utilizamos a função closestTrendLocations():

##        name country  woeid
## 1 São Paulo  Brazil 455827

Estas são as \(10\) principais Twitter trends de São Paulo:

##  [1] "#BrasileiraoNaTNT"         "#BoicoteBurgerKing"       
##  [3] "#NBAnaESPN"                "#BolsonaroOrgulhodoBrasil"
##  [5] "iPhone"                    "#CancelBolsonaro"         
##  [7] "Abel"                      "Trump"                    
##  [9] "Flamengo"                  "Los Hermanos"

Utilizando a função searchTwitter() podemos fazer uma busca das mensagens mais recentes escritas em Português que contém a hashtag ReformaDaPrevidencia.

## [1] 1000   16

O objeto tweets é um data.frame com as colunas:

##  [1] "text"          "favorited"     "favoriteCount" "replyToSN"    
##  [5] "created"       "truncated"     "replyToSID"    "id"           
##  [9] "replyToUID"    "statusSource"  "screenName"    "retweetCount" 
## [13] "isRetweet"     "retweeted"     "longitude"     "latitude"

Este é o conteúdo do terceiro tweet:

## O MBL defendeu a #reformadaprevidência em diversas cidades do Brasil. Veja as
## fotos do núcleo de Ribeirão das Neves… https://t.co/7DYLFcrU1S

A partir dos textos dos tweets criamos o corpus com as funções da biblioteca de Text Mining tm (Feinerer et al. (2008)).

Antes de examinarmos o corpus criado, iremos transformá-lo, deixando todas as palavras em letras minúsculas e removendo: espaços em branco dobrados, números, palavras irrelevantes, pontuações e stop words (artigos, preposições etc).

Na fase de preparação do corpus, uma transformação importante é o processo de stemming, pelo qual palavras derivadas de um radical comum são reduzidas a um único termo.

A própria função tm_map() nos permite fazer o stemming do corpus da seguinte maneira:

No entanto, não ficamos satisfeitos com os resultados desse algoritmo quando aplicado ao nosso idioma. Portanto, na nuvem de palavras que vemos a seguir temos o corpus antes do processo de stemming.

Nessa nuvem de palavras, o tamanho da fonte de um termo é proporcional à sua frequência de ocorrência no corpus.

Na representação de sacola-de-palavras, o corpus fica reduzido a uma matriz documento-termo, cujas linhas e colunas correspondem a documentos e termos, respectivamente, e as entradas da matriz são os números de ocorrências dos termos em cada documento.

De posse dessa matriz, podemos procurar os termos com ocorrência mais frequente no corpus, bem como examinar as associações entre os termos.

##  [1] "brasil"           "previdencia"      "reforma"         
##  [4] "aposentadoria"    "deputados"        "vamos"           
##  [7] "bolsonaro"        "tvcamara"         "atac"            
## [10] "diadotrabalhador" "enfrentar"        "faltam"          
## [13] "jaqueswagner"     "maio"             "motivos"         
## [16] "ruas"             "dentro"           "agenciaestado"   
## [19] "centralsindical"  "centrao"          "dep"             
## [22] "deppaulinho"      "discutindo"       "diz"             
## [25] "federal"          "lider"            "solidariedade"   
## [28] "forca"            "paulinho"         "contra"          
## [31] "sistema"          "governo"          "dia"             
## [34] "afirmou"          "joicehasselmann"  "novaprevidencia" 
## [37] "trabalhador"      "hora"             "combat"          
## [40] "garante"          "justa"            "longo"           
## [43] "pauloganime"      "prazo"            "sustentabilidade"
## $bolsonaro
##      secretario rogeriosmarinho        defendeu        especial 
##            0.57            0.55            0.54            0.48 
##        proposta       reeleicao         ibrasil 
##            0.46            0.45            0.32